- const groupUuid = getCurrentGroupDetailsPanelUuid(getState().properties);
-
- if (groupUuid) {
-
- const group = getResource<GroupResource>(groupUuid)(getState().resources);
- const user = getResource<UserResource>(groupUuid)(getState().resources);
-
- dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removing ...' }));
-
- await deleteGroupMember({
- user: {
- uuid,
- name: user ? getUserFullname(user) : uuid,
- },
- group: {
- uuid: groupUuid,
- name: group ? group.name : groupUuid,
- },
- permissionService,
- dispatch,
- });
-
- dispatch(snackbarActions.OPEN_SNACKBAR({ message: 'Removed.', hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
- dispatch(GroupDetailsPanelActions.REQUEST_ITEMS());
-
+export const setMemberIsHidden = (memberLinkUuid: string, permissionLinkUuid: string, visible: boolean) =>
+ async (dispatch: Dispatch, getState: () => RootState, { permissionService }: ServiceRepository) => {
+ const memberLink = getResource<LinkResource>(memberLinkUuid)(getState().resources);
+
+ if (!visible && permissionLinkUuid) {
+ // Remove read permission
+ try {
+ await permissionService.delete(permissionLinkUuid);
+ dispatch<any>(deleteResources([permissionLinkUuid]));
+ dispatch(GroupPermissionsPanelActions.REQUEST_ITEMS());
+ dispatch(snackbarActions.OPEN_SNACKBAR({
+ message: 'Removed read permission.',
+ hideDuration: 2000,
+ kind: SnackbarKind.SUCCESS,
+ }));
+ } catch (e) {
+ dispatch(snackbarActions.OPEN_SNACKBAR({
+ message: 'Failed to remove permission',
+ kind: SnackbarKind.ERROR,
+ }));
+ }
+ } else if (visible && memberLink) {
+ // Create read permission
+ try {
+ const permission = await permissionService.create({
+ headUuid: memberLink.tailUuid,
+ tailUuid: memberLink.headUuid,
+ name: PermissionLevel.CAN_READ,
+ });
+ dispatch(updateResources([permission]));
+ dispatch(GroupPermissionsPanelActions.REQUEST_ITEMS());
+ dispatch(snackbarActions.OPEN_SNACKBAR({
+ message: 'Created read permission.',
+ hideDuration: 2000,
+ kind: SnackbarKind.SUCCESS,
+ }));
+ } catch(e) {
+ dispatch(snackbarActions.OPEN_SNACKBAR({
+ message: 'Failed to create permission',
+ kind: SnackbarKind.ERROR,
+ }));
+ }