Send new user data to server
[arvados-workbench2.git] / src / store / my-account / my-account-panel-actions.ts
index cb1584cbd0876c9b97914e81d08074ea91883c9f..93c6a3c5ecaa4876e93f6a345d94d8095b54f3b7 100644 (file)
@@ -4,8 +4,12 @@
 
 import { Dispatch } from "redux";
 import { RootState } from "~/store/store";
+import { initialize } from "redux-form";
 import { ServiceRepository } from "~/services/services";
 import { setBreadcrumbs } from "~/store/breadcrumbs/breadcrumbs-actions";
+import { authActions } from "~/store/auth/auth-action";
+import { snackbarActions } from "~/store/snackbar/snackbar-actions";
+import { MY_ACCOUNT_FORM } from "~/views/my-account-panel/my-account-panel-root";
 
 export const loadMyAccountPanel = () =>
     async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
@@ -14,4 +18,17 @@ export const loadMyAccountPanel = () =>
         } catch (e) {
             return;
         }
-    };
\ No newline at end of file
+    };
+
+export const saveEditedUser = (resource: any) =>
+    async (dispatch: Dispatch<any>, getState: () => RootState, services: ServiceRepository) => {
+        try {
+            await services.userService.update(resource.uuid, resource);
+            services.authService.saveUser(resource);
+            dispatch(authActions.USER_DETAILS_SUCCESS(resource));
+            dispatch(initialize(MY_ACCOUNT_FORM, resource));
+            dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Profile has been updated." }));
+        } catch(e) {
+            return;
+        }
+    };