saleor-dashboard/src/auth/views/ResetPassword.tsx
Dominik Żegleń 7d9441a7ec
Use esbuild-loader (#1983)
* Minor fixes for intl messages

* Add esbuild-loader
* switch from babel to esbuild-loader
* use formatjs enforce-id linter

* Generate ids for intl messages

* id format defined by idInterpolationPattern

* Modify intl messages extraction

* remove react-intl-translations-manager
* remove transpile-tx.js
* use formatjs cli

* Modify defaultMessages.json

* modify ids in defaultMessages.json with defined idInterpolationPattern

* Fix errors

* Fix page crash

* Use babel to transpile tests

* Fix useStateFromProps

* Improve render count

* Add test to useStateFromProps

* Fix reloading state buh

* Do not check if form with channels is dirty

* Stop blocking save if form has not changed

* Remove debug code

* Fix form disabling

* Fix variant selection checkbox onClick

* Update translations

* Update messages

* Use esbuild to build storybook

Co-authored-by: Bartłomiej Wiaduch <tukan2can@gmail.com>
Co-authored-by: Jakub Majorek <majorek.jakub@gmail.com>
2022-05-05 09:54:28 +02:00

69 lines
2 KiB
TypeScript

import { APP_MOUNT_URI } from "@saleor/config";
import { useRequestPasswordResetMutation } from "@saleor/graphql";
import useNavigator from "@saleor/hooks/useNavigator";
import { commonMessages } from "@saleor/intl";
import { extractMutationErrors } from "@saleor/misc";
import React from "react";
import { useIntl } from "react-intl";
import urlJoin from "url-join";
import ResetPasswordPage, {
ResetPasswordPageFormData
} from "../components/ResetPasswordPage";
import { newPasswordUrl, passwordResetSuccessUrl } from "../urls";
const ResetPasswordView: React.FC = () => {
const [error, setError] = React.useState<string>();
const navigate = useNavigator();
const intl = useIntl();
const [
requestPasswordReset,
requestPasswordResetOpts
] = useRequestPasswordResetMutation({
onCompleted: data => {
if (data.requestPasswordReset.errors.length === 0) {
navigate(passwordResetSuccessUrl);
} else {
if (
data.requestPasswordReset.errors.find(err => err.field === "email")
) {
setError(
intl.formatMessage({
id: "C0JLNW",
defaultMessage:
"Provided email address does not exist in our database."
})
);
} else {
setError(intl.formatMessage(commonMessages.somethingWentWrong));
}
}
}
});
const handleSubmit = (data: ResetPasswordPageFormData) =>
extractMutationErrors(
requestPasswordReset({
variables: {
email: data.email,
redirectUrl: urlJoin(
window.location.origin,
APP_MOUNT_URI === "/" ? "" : APP_MOUNT_URI,
newPasswordUrl().replace(/\?/, "")
)
}
})
);
return (
<ResetPasswordPage
disabled={requestPasswordResetOpts.loading}
error={error}
onBack={() => navigate(APP_MOUNT_URI)}
onSubmit={handleSubmit}
/>
);
};
ResetPasswordView.displayName = "ResetPasswordView";
export default ResetPasswordView;