X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fperson%2Fpassword-change.tsx;h=16f23d4b85c9dc2d25d3de79437ff4fc0ddc5415;hb=61e0241d8930badc4a77cd973c3cbb64bd13c49e;hp=f3df971c475a3d286a188a70e69c17b3e36cb03b;hpb=c5fd084577e908f91421f94c1bd744d154deb49f;p=lemmy-ui.git diff --git a/src/shared/components/person/password-change.tsx b/src/shared/components/person/password-change.tsx index f3df971..16f23d4 100644 --- a/src/shared/components/person/password-change.tsx +++ b/src/shared/components/person/password-change.tsx @@ -1,77 +1,56 @@ +import { myAuth, setIsoData } from "@utils/app"; +import { capitalizeFirstLetter } from "@utils/helpers"; import { Component, linkEvent } from "inferno"; -import { - GetSiteResponse, - LoginResponse, - PasswordChangeAfterReset, - UserOperation, - wsJsonToRes, - wsUserOp, -} from "lemmy-js-client"; -import { Subscription } from "rxjs"; -import { i18n } from "../../i18next"; -import { UserService, WebSocketService } from "../../services"; -import { - capitalizeFirstLetter, - isBrowser, - setIsoData, - toast, - wsClient, - wsSubscribe, -} from "../../utils"; +import { GetSiteResponse, LoginResponse } from "lemmy-js-client"; +import { HttpService, I18NextService, UserService } from "../../services"; +import { RequestState } from "../../services/HttpService"; import { HtmlTags } from "../common/html-tags"; import { Spinner } from "../common/icon"; +import PasswordInput from "../common/password-input"; interface State { + passwordChangeRes: RequestState; form: { token: string; password?: string; password_verify?: string; }; - loading: boolean; siteRes: GetSiteResponse; } export class PasswordChange extends Component { private isoData = setIsoData(this.context); - private subscription?: Subscription; state: State = { + passwordChangeRes: { state: "empty" }, + siteRes: this.isoData.site_res, form: { token: this.props.match.params.token, }, - loading: false, - siteRes: this.isoData.site_res, }; constructor(props: any, context: any) { super(props, context); - - this.parseMessage = this.parseMessage.bind(this); - this.subscription = wsSubscribe(this.parseMessage); - } - - componentWillUnmount() { - if (isBrowser()) { - this.subscription?.unsubscribe(); - } } get documentTitle(): string { - return `${i18n.t("password_change")} - ${ + return `${I18NextService.i18n.t("password_change")} - ${ this.state.siteRes.site_view.site.name }`; } render() { return ( -
+
-
{i18n.t("password_change")}
+

+ {I18NextService.i18n.t("password_change")} +

{this.passwordChangeForm()}
@@ -82,45 +61,31 @@ export class PasswordChange extends Component { passwordChangeForm() { return (
-
- -
- -
+
+
-
- -
- -
+
+
-
+
@@ -139,36 +104,35 @@ export class PasswordChange extends Component { i.setState(i.state); } - handlePasswordChangeSubmit(i: PasswordChange, event: any) { + async handlePasswordChangeSubmit(i: PasswordChange, event: any) { event.preventDefault(); - i.setState({ loading: true }); + i.setState({ passwordChangeRes: { state: "loading" } }); - let password = i.state.form.password; - let password_verify = i.state.form.password_verify; + const password = i.state.form.password; + const password_verify = i.state.form.password_verify; if (password && password_verify) { - let form: PasswordChangeAfterReset = { - token: i.state.form.token, - password, - password_verify, - }; - - WebSocketService.Instance.send(wsClient.passwordChange(form)); - } - } - - parseMessage(msg: any) { - let op = wsUserOp(msg); - console.log(msg); - if (msg.error) { - toast(i18n.t(msg.error), "danger"); - this.setState({ loading: false }); - return; - } else if (op == UserOperation.PasswordChangeAfterReset) { - let data = wsJsonToRes(msg); - UserService.Instance.login(data); - this.props.history.push("/"); - location.reload(); + i.setState({ + passwordChangeRes: await HttpService.client.passwordChangeAfterReset({ + token: i.state.form.token, + password, + password_verify, + }), + }); + + if (i.state.passwordChangeRes.state === "success") { + const data = i.state.passwordChangeRes.data; + UserService.Instance.login({ + res: data, + }); + + const site = await HttpService.client.getSite({ auth: myAuth() }); + if (site.state === "success") { + UserService.Instance.myUserInfo = site.data.my_user; + } + + i.props.history.replace("/"); + } } } }