+export const setupUserVM = (setupData: SetupShellAccountFormDialogData) =>
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ dispatch(startSubmit(USER_CREATE_FORM_NAME));
+ try {
+ // TODO: make correct API call
+ // const setupResult = await services.userService.setup({ ...setupData });
+ dispatch(dialogActions.CLOSE_DIALOG({ id: SETUP_SHELL_ACCOUNT_DIALOG }));
+ dispatch(reset(SETUP_SHELL_ACCOUNT_DIALOG));
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: "User has been added to VM.", hideDuration: 2000, kind: SnackbarKind.SUCCESS }));
+ dispatch<any>(loadUsersPanel());
+ dispatch(userBindedActions.REQUEST_ITEMS());
+ } catch (e) {
+ return;
+ }
+ };
+
+export const openUserPanel = () =>
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ const user = getState().auth.user;
+ if (user && user.isAdmin) {
+ dispatch<any>(navigateToUsers);
+ } else {
+ dispatch<any>(navigateToRootProject);
+ dispatch(snackbarActions.OPEN_SNACKBAR({ message: "You don't have permissions to view this page", hideDuration: 2000 }));
+ }
+ };
+
+export const toggleIsActive = (uuid: string) =>
+ async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => {
+ const { resources } = getState();
+ const data = getResource<UserResource>(uuid)(resources);
+ const isActive = data!.isActive;
+ let newActivity;
+ if (isActive) {
+ newActivity = await services.userService.unsetup(uuid);
+ } else {
+ newActivity = await services.userService.update(uuid, { isActive: true });
+ }
+ dispatch<any>(loadUsersPanel());
+ return newActivity;