Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-10-14 21:08:47 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-10-14 21:08:47 +0300
commit93960490b8bdbc0f2ab1d102b83ec5d5b87c97a6 (patch)
tree05e12b8fc3094f8de548aff4f929ef3433a3f52e /app/assets/javascripts/vuex_shared
parent99670fc6a027caee34a6537c8def2e998d1ac5c2 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/vuex_shared')
-rw-r--r--app/assets/javascripts/vuex_shared/modules/members/actions.js17
-rw-r--r--app/assets/javascripts/vuex_shared/modules/members/index.js4
-rw-r--r--app/assets/javascripts/vuex_shared/modules/members/mutation_types.js4
-rw-r--r--app/assets/javascripts/vuex_shared/modules/members/mutations.js26
-rw-r--r--app/assets/javascripts/vuex_shared/modules/members/state.js12
-rw-r--r--app/assets/javascripts/vuex_shared/modules/members/utils.js1
6 files changed, 63 insertions, 1 deletions
diff --git a/app/assets/javascripts/vuex_shared/modules/members/actions.js b/app/assets/javascripts/vuex_shared/modules/members/actions.js
new file mode 100644
index 00000000000..b3e6de48370
--- /dev/null
+++ b/app/assets/javascripts/vuex_shared/modules/members/actions.js
@@ -0,0 +1,17 @@
+import * as types from './mutation_types';
+import axios from '~/lib/utils/axios_utils';
+
+export const updateMemberRole = async ({ state, commit }, { memberId, accessLevel }) => {
+ try {
+ await axios.put(
+ state.memberPath.replace(/:id$/, memberId),
+ state.requestFormatter({ accessLevel: accessLevel.integerValue }),
+ );
+
+ commit(types.RECEIVE_MEMBER_ROLE_SUCCESS, { memberId, accessLevel });
+ } catch (error) {
+ commit(types.RECEIVE_MEMBER_ROLE_ERROR);
+
+ throw error;
+ }
+};
diff --git a/app/assets/javascripts/vuex_shared/modules/members/index.js b/app/assets/javascripts/vuex_shared/modules/members/index.js
index d9fa716a559..682e85298ad 100644
--- a/app/assets/javascripts/vuex_shared/modules/members/index.js
+++ b/app/assets/javascripts/vuex_shared/modules/members/index.js
@@ -1,6 +1,10 @@
import createState from 'ee_else_ce/vuex_shared/modules/members/state';
+import * as actions from './actions';
+import mutations from './mutations';
export default initialState => ({
namespaced: true,
state: createState(initialState),
+ actions,
+ mutations,
});
diff --git a/app/assets/javascripts/vuex_shared/modules/members/mutation_types.js b/app/assets/javascripts/vuex_shared/modules/members/mutation_types.js
new file mode 100644
index 00000000000..2d526650eb6
--- /dev/null
+++ b/app/assets/javascripts/vuex_shared/modules/members/mutation_types.js
@@ -0,0 +1,4 @@
+export const RECEIVE_MEMBER_ROLE_SUCCESS = 'RECEIVE_MEMBER_ROLE_SUCCESS';
+export const RECEIVE_MEMBER_ROLE_ERROR = 'RECEIVE_MEMBER_ROLE_ERROR';
+
+export const HIDE_ERROR = 'HIDE_ERROR';
diff --git a/app/assets/javascripts/vuex_shared/modules/members/mutations.js b/app/assets/javascripts/vuex_shared/modules/members/mutations.js
new file mode 100644
index 00000000000..5ee1147f658
--- /dev/null
+++ b/app/assets/javascripts/vuex_shared/modules/members/mutations.js
@@ -0,0 +1,26 @@
+import Vue from 'vue';
+import { s__ } from '~/locale';
+import * as types from './mutation_types';
+import { findMember } from './utils';
+
+export default {
+ [types.RECEIVE_MEMBER_ROLE_SUCCESS](state, { memberId, accessLevel }) {
+ const member = findMember(state, memberId);
+
+ if (!member) {
+ return;
+ }
+
+ Vue.set(member, 'accessLevel', accessLevel);
+ },
+ [types.RECEIVE_MEMBER_ROLE_ERROR](state) {
+ state.errorMessage = s__(
+ "Members|An error occurred while updating the member's role, please try again.",
+ );
+ state.showError = true;
+ },
+ [types.HIDE_ERROR](state) {
+ state.showError = false;
+ state.errorMessage = '';
+ },
+};
diff --git a/app/assets/javascripts/vuex_shared/modules/members/state.js b/app/assets/javascripts/vuex_shared/modules/members/state.js
index 64e794518a2..6f454b56b1e 100644
--- a/app/assets/javascripts/vuex_shared/modules/members/state.js
+++ b/app/assets/javascripts/vuex_shared/modules/members/state.js
@@ -1,7 +1,17 @@
-export default ({ members, sourceId, currentUserId, tableFields, memberPath }) => ({
+export default ({
members,
sourceId,
currentUserId,
tableFields,
memberPath,
+ requestFormatter,
+}) => ({
+ members,
+ sourceId,
+ currentUserId,
+ tableFields,
+ memberPath,
+ requestFormatter,
+ showError: false,
+ errorMessage: '',
});
diff --git a/app/assets/javascripts/vuex_shared/modules/members/utils.js b/app/assets/javascripts/vuex_shared/modules/members/utils.js
new file mode 100644
index 00000000000..7dcd33111e8
--- /dev/null
+++ b/app/assets/javascripts/vuex_shared/modules/members/utils.js
@@ -0,0 +1 @@
+export const findMember = (state, memberId) => state.members.find(member => member.id === memberId);