diff options
author | Christopher Ng <chrng8@gmail.com> | 2025-03-25 14:31:44 -0700 |
---|---|---|
committer | Christopher Ng <chrng8@gmail.com> | 2025-03-28 14:12:52 -0700 |
commit | d32f2c761e541e4e18800e324a698cb552135467 (patch) | |
tree | 8ef7ebbb568e5592c8cba5e9614555cd1ed2a3d9 | |
parent | 374197c7218c63f5738b8b4cf5e8a0aeae9188c6 (diff) | |
download | nextcloud-server-d32f2c761e541e4e18800e324a698cb552135467.tar.gz nextcloud-server-d32f2c761e541e4e18800e324a698cb552135467.zip |
fix(settings): Fix loaded groups being undefined
Signed-off-by: Christopher Ng <chrng8@gmail.com>
-rw-r--r-- | apps/settings/src/components/Users/UserRow.vue | 10 | ||||
-rw-r--r-- | apps/settings/src/service/groups.ts | 14 | ||||
-rw-r--r-- | apps/settings/src/store/users.js | 18 |
3 files changed, 16 insertions, 26 deletions
diff --git a/apps/settings/src/components/Users/UserRow.vue b/apps/settings/src/components/Users/UserRow.vue index 830a688ccfc..45e05642f11 100644 --- a/apps/settings/src/components/Users/UserRow.vue +++ b/apps/settings/src/components/Users/UserRow.vue @@ -300,6 +300,7 @@ import UserRowActions from './UserRowActions.vue' import UserRowMixin from '../../mixins/UserRowMixin.js' import { isObfuscated, unlimitedQuota } from '../../utils/userUtils.ts' +import { searchGroups, loadUserGroups } from '../../service/groups.ts' import logger from '../../logger.ts' export default { @@ -556,14 +557,7 @@ export default { async loadGroupDetails() { this.loading.groups = true try { - const { data } = await this.$store.dispatch('getUserGroups', { - userId: this.user.id, - }) - const groups = data.ocs?.data?.groups - if (!groups) { - logger.error(t('settings', 'Failed to load groups with details')) - return - } + const groups = await loadUserGroups({ userId: this.user.id }) this.availableGroups = this.availableGroups.map(availableGroup => groups.find(group => group.id === availableGroup.id) ?? availableGroup) } catch (error) { logger.error(t('settings', 'Failed to load groups with details'), { error }) diff --git a/apps/settings/src/service/groups.ts b/apps/settings/src/service/groups.ts index fa8d1a46e4a..060e133e84e 100644 --- a/apps/settings/src/service/groups.ts +++ b/apps/settings/src/service/groups.ts @@ -53,3 +53,17 @@ export const searchGroups = ({ search, offset, limit }): CancelablePromise<Requi } }) } + +/** + * Load user groups + * + * @param {object} options Options + * @param {string} options.userId User id + */ +export const loadUserGroups = async ({ userId }): Promise<Required<IGroup>[]> => { + const url = generateOcsUrl('/cloud/users/{userId}/groups/details', { userId }) + const { data } = await axios.get(url) + const groups: Group[] = data.ocs?.data?.groups ?? [] + const formattedGroups = groups.map(formatGroup) + return formattedGroups +}, diff --git a/apps/settings/src/store/users.js b/apps/settings/src/store/users.js index 0914db6471b..2a3a2d272d9 100644 --- a/apps/settings/src/store/users.js +++ b/apps/settings/src/store/users.js @@ -465,24 +465,6 @@ const actions = { }, /** - * Get user groups - * - * @param {object} context store context - * @param {object} options destructuring object - * @param {number} options.userId User id - * @return {Promise} - */ - async getUserGroups(context, { userId }) { - const url = generateOcsUrl('cloud/users/{userId}/groups/details', { userId }) - try { - const response = await api.get(url) - return response - } catch (error) { - context.commit('API_FAILURE', error) - } - }, - - /** * Get all users with full details * * @param {object} context store context |