Skip to content

Commit 87e80be

Browse files
committed
enh: refactor items for searching users and groups
Signed-off-by: Cleopatra Enjeck M <patrathewhiz@gmail.com>
1 parent 88139ce commit 87e80be

File tree

9 files changed

+43
-80
lines changed

9 files changed

+43
-80
lines changed

cypress/e2e/tables-table.cy.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ describe('Manage a table', () => {
9999
cy.get('[data-cy="editTableModal"]').should('not.exist')
100100
cy.get('[data-cy="transferTableModal"]').should('be.visible')
101101
cy.get('[data-cy="transferTableModal"] input[type="search"]').clear().type(targetUserTransfer.userId)
102-
cy.get(`.vs__dropdown-menu [user="${targetUserTransfer.userId}"]`).click()
102+
cy.get(`.vs__dropdown-menu [id="${targetUserTransfer.userId}"]`).click()
103103
cy.get('[data-cy="transferTableButton"]').should('be.enabled').click()
104104
cy.get('.toastify.toast-success').should('be.visible')
105105
cy.get('.app-navigation__list').contains('test table').should('not.exist')

src/modules/modals/EditContext.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ export default {
186186
sharing = sharing.filter((share) => getCurrentUser().uid !== share.receiver)
187187
const receivers = sharing.map((share) => {
188188
return {
189-
user: share.receiver,
189+
id: share.receiver,
190190
displayName: share.receiver_display_name,
191191
icon: share.receiver_type === 'user' ? 'icon-user' : 'icon-group',
192192
isUser: share.receiver_type === 'user',

src/modules/sidebar/partials/ShareForm.vue

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ import debounce from 'debounce'
6060
import { NcSelect } from '@nextcloud/vue'
6161
import { mapState } from 'vuex'
6262
import formatting from '../../../shared/mixins/formatting.js'
63-
import ShareTypes from '../../../shared/mixins/shareTypesMixin.js'
63+
import { SHARE_TYPES } from '../../../shared/constants.js'
6464
6565
export default {
6666
name: 'ShareForm',
6767
components: {
6868
NcSelect,
6969
},
7070
71-
mixins: [ShareTypes, formatting],
71+
mixins: [formatting],
7272
7373
props: {
7474
shares: {
@@ -160,8 +160,8 @@ export default {
160160
this.loading = true
161161
162162
const shareType = [
163-
this.SHARE_TYPES.SHARE_TYPE_USER,
164-
this.SHARE_TYPES.SHARE_TYPE_GROUP,
163+
SHARE_TYPES.SHARE_TYPE_USER,
164+
SHARE_TYPES.SHARE_TYPE_GROUP,
165165
]
166166
167167
const request = await axios.get(generateOcsUrl('apps/files_sharing/api/v1/sharees'), {
@@ -248,7 +248,7 @@ export default {
248248
249249
try {
250250
// filter out current user
251-
if (share.value.shareType === this.SHARE_TYPES.SHARE_TYPE_USER
251+
if (share.value.shareType === SHARE_TYPES.SHARE_TYPE_USER
252252
&& share.value.shareWith === getCurrentUser().uid) {
253253
return arr
254254
}
@@ -274,7 +274,7 @@ export default {
274274
shareWith: result.value.shareWith,
275275
shareType: result.value.shareType,
276276
user: result.uuid || result.value.shareWith,
277-
isNoUser: result.value.shareType !== this.SHARE_TYPES.SHARE_TYPE_USER,
277+
isNoUser: result.value.shareType !== SHARE_TYPES.SHARE_TYPE_USER,
278278
displayName: result.name || result.label,
279279
icon: this.shareTypeToIcon(result.value.shareType),
280280
// Vue unique binding to render within Multiselect's AvatarSelectOption
@@ -290,20 +290,20 @@ export default {
290290
*/
291291
shareTypeToIcon(type) {
292292
switch (type) {
293-
case this.SHARE_TYPES.SHARE_TYPE_GUEST:
293+
case SHARE_TYPES.SHARE_TYPE_GUEST:
294294
// default is a user, other icons are here to differenciate
295295
// themselves from it, so let's not display the user icon
296-
// case this.SHARE_TYPES.SHARE_TYPE_REMOTE:
297-
// case this.SHARE_TYPES.SHARE_TYPE_USER:
296+
// case SHARE_TYPES.SHARE_TYPE_REMOTE:
297+
// case SHARE_TYPES.SHARE_TYPE_USER:
298298
return 'icon-user'
299-
case this.SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:
300-
case this.SHARE_TYPES.SHARE_TYPE_GROUP:
299+
case SHARE_TYPES.SHARE_TYPE_REMOTE_GROUP:
300+
case SHARE_TYPES.SHARE_TYPE_GROUP:
301301
return 'icon-group'
302-
case this.SHARE_TYPES.SHARE_TYPE_EMAIL:
302+
case SHARE_TYPES.SHARE_TYPE_EMAIL:
303303
return 'icon-mail'
304-
case this.SHARE_TYPES.SHARE_TYPE_CIRCLE:
304+
case SHARE_TYPES.SHARE_TYPE_CIRCLE:
305305
return 'icon-circle'
306-
case this.SHARE_TYPES.SHARE_TYPE_ROOM:
306+
case SHARE_TYPES.SHARE_TYPE_ROOM:
307307
return 'icon-room'
308308
309309
default:

src/shared/components/ncContextResource/ResourceSharees.vue

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import { NcSelect } from '@nextcloud/vue'
2323
import formatting from '../../../shared/mixins/formatting.js'
2424
import searchUserGroup from '../../../shared/mixins/searchUserGroup.js'
25-
import ShareTypes from '../../mixins/shareTypesMixin.js'
2625
import '@nextcloud/dialogs/style.css'
2726
2827
export default {
@@ -31,7 +30,7 @@ export default {
3130
NcSelect,
3231
},
3332
34-
mixins: [ShareTypes, formatting, searchUserGroup],
33+
mixins: [formatting, searchUserGroup],
3534
3635
props: {
3736
receivers: {
@@ -50,9 +49,8 @@ export default {
5049
5150
data() {
5251
return {
53-
value: '',
5452
preExistingSharees: [...this.receivers],
55-
localSharees: this.receivers.map(userObject => userObject.user),
53+
localSharees: this.receivers.map(userObject => userObject.id),
5654
}
5755
},
5856
@@ -62,19 +60,15 @@ export default {
6260
return this.localSharees
6361
},
6462
set(v) {
65-
this.localSharees = v.map(userObject => userObject.user)
63+
this.localSharees = v.map(userObject => userObject.id)
6664
this.$emit('update', v)
6765
},
6866
},
6967
},
7068
7169
methods: {
7270
addShare(selectedItem) {
73-
if (selectedItem) {
74-
this.localValue = selectedItem
75-
} else {
76-
this.localValue = []
77-
}
71+
this.localValue = selectedItem
7872
},
7973
8074
filterOutUnwantedItems(list) {
@@ -83,7 +77,7 @@ export default {
8377
},
8478
8579
filterOutSelectedUsers(list) {
86-
return list.filter((item) => !(item.isUser && this.localSharees.includes(item.user)))
80+
return list.filter((item) => !(item.isUser && this.localSharees.includes(item.id)))
8781
},
8882
8983
},

src/shared/components/ncUserAndGroupPicker/NcUserAndGroupPicker.vue

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
<script>
1515
import { NcSelect } from '@nextcloud/vue'
1616
import formatting from '../../../shared/mixins/formatting.js'
17-
import ShareTypes from '../../mixins/shareTypesMixin.js'
1817
import '@nextcloud/dialogs/style.css'
1918
import searchUserGroup from '../../../shared/mixins/searchUserGroup.js'
2019
@@ -24,7 +23,7 @@ export default {
2423
NcSelect,
2524
},
2625
27-
mixins: [ShareTypes, formatting, searchUserGroup],
26+
mixins: [formatting, searchUserGroup],
2827
2928
props: {
3029
newOwnerUserId: {
@@ -53,18 +52,14 @@ export default {
5352
return this.newOwnerUserId
5453
},
5554
set(v) {
56-
this.$emit('update:newOwnerUserId', v)
55+
this.$emit('update:newOwnerUserId', v?.id)
5756
},
5857
},
5958
},
6059
6160
methods: {
6261
addTransfer(selectedItem) {
63-
if (selectedItem) {
64-
this.localValue = selectedItem.user
65-
} else {
66-
this.localValue = ''
67-
}
62+
this.localValue = selectedItem
6863
},
6964
filterOutUnwantedItems(list) {
7065
return this.filterOutCurrentUser(list)

src/shared/constants.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,15 @@ export const TYPE_SELECTION = 'selection'
4040
export const TYPE_TEXT = 'text'
4141
export const TYPE_NUMBER = 'number'
4242
export const TYPE_DATETIME = 'datetime'
43+
44+
export const SHARE_TYPES = {
45+
SHARE_TYPE_USER: OC.Share.SHARE_TYPE_USER,
46+
SHARE_TYPE_GROUP: OC.Share.SHARE_TYPE_GROUP,
47+
SHARE_TYPE_LINK: OC.Share.SHARE_TYPE_LINK,
48+
SHARE_TYPE_EMAIL: OC.Share.SHARE_TYPE_EMAIL,
49+
SHARE_TYPE_REMOTE: OC.Share.SHARE_TYPE_REMOTE,
50+
SHARE_TYPE_CIRCLE: OC.Share.SHARE_TYPE_CIRCLE,
51+
SHARE_TYPE_GUEST: OC.Share.SHARE_TYPE_GUEST,
52+
SHARE_TYPE_REMOTE_GROUP: OC.Share.SHARE_TYPE_REMOTE_GROUP,
53+
SHARE_TYPE_ROOM: OC.Share.SHARE_TYPE_ROOM,
54+
}

src/shared/mixins/searchUserGroup.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { getCurrentUser } from '@nextcloud/auth'
44
import debounce from 'debounce'
55
import { showError } from '@nextcloud/dialogs'
66
import '@nextcloud/dialogs/style.css'
7+
import { SHARE_TYPES } from '../constants.js'
78

89
export default {
910
data() {
@@ -41,10 +42,10 @@ export default {
4142
getShareTypes() {
4243
const types = []
4344
if (this.selectUsers) {
44-
types.push(this.SHARE_TYPES.SHARE_TYPE_USER)
45+
types.push(SHARE_TYPES.SHARE_TYPE_USER)
4546
}
4647
if (this.selectGroups) {
47-
types.push(this.SHARE_TYPES.SHARE_TYPE_GROUP)
48+
types.push(SHARE_TYPES.SHARE_TYPE_GROUP)
4849
}
4950
return types
5051
},
@@ -80,7 +81,7 @@ export default {
8081
const res = await axios.get(url)
8182
const rawSuggestions = res.data.ocs.data.map(autocompleteResult => {
8283
return {
83-
user: autocompleteResult.id,
84+
id: autocompleteResult.id,
8485
displayName: autocompleteResult.label,
8586
icon: autocompleteResult.icon,
8687
isUser: autocompleteResult.source.startsWith('users'),
@@ -99,7 +100,7 @@ export default {
99100
}, 300),
100101

101102
filterOutCurrentUser(list) {
102-
return list.filter((item) => !(item.isUser && item.user === getCurrentUser().uid))
103+
return list.filter((item) => !(item.isUser && item.id === getCurrentUser().uid))
103104
},
104105
},
105106
}

src/shared/mixins/shareTypesMixin.js

Lines changed: 0 additions & 39 deletions
This file was deleted.

src/store/store.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ export default new Vuex.Store({
348348
try {
349349
for (const receiver of receivers) {
350350
share.receiverType = receiver.isUser ? 'user' : 'group'
351-
share.receiver = receiver.user
351+
share.receiver = receiver.id
352352
// Avoid duplicate shares by checking if share exists first
353353
const existingShare = previousReceivers.find((p) => p.receiver === share.receiver && p.receiver_type === share.receiverType)
354354
if (!existingShare) {
@@ -363,7 +363,7 @@ export default new Vuex.Store({
363363
for (const previousReceiver of previousReceivers) {
364364
const currentShare = receivers.find((r) => {
365365
const receiverType = r.isUser ? 'user' : 'group'
366-
return r.user === previousReceiver.receiver && receiverType === previousReceiver.receiver_type
366+
return r.id === previousReceiver.receiver && receiverType === previousReceiver.receiver_type
367367
})
368368
if (!currentShare) {
369369
await axios.delete(generateUrl('/apps/tables/share/' + previousReceiver.share_id))

0 commit comments

Comments
 (0)