-const initializeManagementForm = (permissionLinks: PermissionResource[]) =>
- async (dispatch: Dispatch, getState: () => RootState, { userService, groupsService }: ServiceRepository) => {
-
- const filters = new FilterBuilder()
- .addIn('uuid', permissionLinks.map(({ tailUuid }) => tailUuid))
- .getFilters();
-
- const { items: users } = await userService.list({ filters, count: "none" });
- const { items: groups } = await groupsService.list({ filters, count: "none" });
-
- const getEmail = (tailUuid: string) => {
- const user = users.find(({ uuid }) => uuid === tailUuid);
- const group = groups.find(({ uuid }) => uuid === tailUuid);
- return user
- ? user.email
- : group
- ? group.name
- : tailUuid;
- };
-
- const managementPermissions = permissionLinks
- .map(({ tailUuid, name, uuid }) => ({
- email: getEmail(tailUuid),
- permissions: name as PermissionLevel,
- permissionUuid: uuid,
- }));
+export const initializeManagementForm = async (dispatch: Dispatch, getState: () => RootState, { userService, groupsService, permissionService }: ServiceRepository) => {
+
+ const dialog = getDialog<SharingDialogData>(getState().dialog, SHARING_DIALOG_NAME);
+ if (!dialog) {
+ return;
+ }
+ dispatch(progressIndicatorActions.START_WORKING(SHARING_DIALOG_NAME));
+ const resourceUuid = dialog?.data.resourceUuid;
+ const { items: permissionLinks } = await permissionService.listResourcePermissions(resourceUuid);
+ dispatch<any>(initializePublicAccessForm(permissionLinks));
+ const filters = new FilterBuilder()
+ .addIn('uuid', Array.from(new Set(permissionLinks.map(({ tailUuid }) => tailUuid))))
+ .getFilters();
+
+ const { items: users } = await userService.list({ filters, count: "none", limit: 1000 });
+ const { items: groups } = await groupsService.list({ filters, count: "none", limit: 1000 });
+
+ const getEmail = (tailUuid: string) => {
+ const user = users.find(({ uuid }) => uuid === tailUuid);
+ const group = groups.find(({ uuid }) => uuid === tailUuid);
+ return user
+ ? user.email
+ : group
+ ? group.name
+ : tailUuid;
+ };
+
+ const managementPermissions = permissionLinks
+ .map(({ tailUuid, name, uuid }) => ({
+ email: getEmail(tailUuid),
+ permissions: name as PermissionLevel,
+ permissionUuid: uuid,
+ }));
+
+ const managementFormData: SharingManagementFormData = {
+ permissions: managementPermissions,
+ initialPermissions: managementPermissions,
+ };
+
+ dispatch(initialize(SHARING_MANAGEMENT_FORM_NAME, managementFormData));
+ dispatch(progressIndicatorActions.STOP_WORKING(SHARING_DIALOG_NAME));
+};
+
+const initializePublicAccessForm = (permissionLinks: PermissionResource[]) =>
+ (dispatch: Dispatch, getState: () => RootState,) => {