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

utils.js « members « groups « javascripts « assets « app - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2d584556bbc68d727a0521a20203bb617ceaf6f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import { isUndefined } from 'lodash';
import { convertObjectPropsToCamelCase, parseBoolean } from '~/lib/utils/common_utils';
import {
  GROUP_MEMBER_BASE_PROPERTY_NAME,
  GROUP_MEMBER_ACCESS_LEVEL_PROPERTY_NAME,
  GROUP_LINK_BASE_PROPERTY_NAME,
  GROUP_LINK_ACCESS_LEVEL_PROPERTY_NAME,
} from './constants';

export const parseDataAttributes = el => {
  const { members, groupId, memberPath, canManageMembers } = el.dataset;

  return {
    members: convertObjectPropsToCamelCase(JSON.parse(members), { deep: true }),
    sourceId: parseInt(groupId, 10),
    memberPath,
    canManageMembers: parseBoolean(canManageMembers),
  };
};

const baseRequestFormatter = (basePropertyName, accessLevelPropertyName) => ({
  accessLevel,
  ...otherProperties
}) => {
  const accessLevelProperty = !isUndefined(accessLevel)
    ? { [accessLevelPropertyName]: accessLevel }
    : {};

  return {
    [basePropertyName]: {
      ...accessLevelProperty,
      ...otherProperties,
    },
  };
};

export const memberRequestFormatter = baseRequestFormatter(
  GROUP_MEMBER_BASE_PROPERTY_NAME,
  GROUP_MEMBER_ACCESS_LEVEL_PROPERTY_NAME,
);

export const groupLinkRequestFormatter = baseRequestFormatter(
  GROUP_LINK_BASE_PROPERTY_NAME,
  GROUP_LINK_ACCESS_LEVEL_PROPERTY_NAME,
);