aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/settings/src/components/Users/UserRow.vue10
-rw-r--r--apps/settings/src/service/groups.ts14
-rw-r--r--apps/settings/src/store/users.js18
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