diff --git a/packages/dashboard-v2/src/components/forms/AccountSettingsForm.js b/packages/dashboard-v2/src/components/forms/AccountSettingsForm.js index ad29b85c..2c382c1b 100644 --- a/packages/dashboard-v2/src/components/forms/AccountSettingsForm.js +++ b/packages/dashboard-v2/src/components/forms/AccountSettingsForm.js @@ -37,15 +37,17 @@ export const AccountSettingsForm = ({ user, onSuccess, onFailure }) => { validationSchema={emailUpdateSchema} onSubmit={async ({ email, password }, { resetForm }) => { try { - await accountsService.put("user", { - json: { - email: email || undefined, - password: password || undefined, - }, - }); + const user = await accountsService + .put("user", { + json: { + email: email || undefined, + password: password || undefined, + }, + }) + .json(); resetForm(); - onSuccess(); + await onSuccess(user); } catch { onFailure(); } diff --git a/packages/dashboard-v2/src/pages/settings/index.js b/packages/dashboard-v2/src/pages/settings/index.js index ad7a34d8..358a4b28 100644 --- a/packages/dashboard-v2/src/pages/settings/index.js +++ b/packages/dashboard-v2/src/pages/settings/index.js @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useCallback, useState } from "react"; import { navigate } from "gatsby"; import { useUser } from "../../contexts/user"; @@ -22,6 +22,21 @@ const AccountPage = () => { const prompt = () => setRemovalInitiated(true); const abort = () => setRemovalInitiated(false); + const onSettingsUpdated = useCallback( + async (updatedState) => { + try { + // Update state locally and request revalidation. + await reloadUser(updatedState); + } finally { + // If revalidation fails, we can't really do much. Request + // will be auto-retried by SWR, so we'll just show a message + // about the update request being successful. + setState(State.Success); + } + }, + [reloadUser] + ); + return ( <>