X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fhome%2Fsetup.tsx;h=f4bdb5551d6deb48dc74af2224eea158e4f83579;hb=c3ab9e74f8775f4b811866d2675b00f9702bde3d;hp=46d225e24639db3b75077fcc73ce9c12f106f239;hpb=cc90ded31ed5d7d1b61474872481824113f0933b;p=lemmy-ui.git diff --git a/src/shared/components/home/setup.tsx b/src/shared/components/home/setup.tsx index 46d225e..f4bdb55 100644 --- a/src/shared/components/home/setup.tsx +++ b/src/shared/components/home/setup.tsx @@ -1,81 +1,81 @@ -import { None, Some } from "@sniptt/monads"; +import { fetchThemeList, setIsoData } from "@utils/app"; import { Component, linkEvent } from "inferno"; import { Helmet } from "inferno-helmet"; import { + CreateSite, + GetSiteResponse, LoginResponse, Register, - toUndefined, - UserOperation, - wsJsonToRes, - wsUserOp, } from "lemmy-js-client"; -import { Subscription } from "rxjs"; -import { delay, retryWhen, take } from "rxjs/operators"; -import { i18n } from "../../i18next"; -import { UserService, WebSocketService } from "../../services"; -import { toast, wsClient } from "../../utils"; +import { I18NextService, UserService } from "../../services"; +import { HttpService, RequestState } from "../../services/HttpService"; import { Spinner } from "../common/icon"; import { SiteForm } from "./site-form"; interface State { - userForm: Register; + form: { + username?: string; + email?: string; + password?: string; + password_verify?: string; + show_nsfw: boolean; + captcha_uuid?: string; + captcha_answer?: string; + honeypot?: string; + answer?: string; + }; doneRegisteringUser: boolean; - userLoading: boolean; + registerRes: RequestState; + themeList: string[]; + siteRes: GetSiteResponse; } export class Setup extends Component { - private subscription: Subscription; + private isoData = setIsoData(this.context); - private emptyState: State = { - userForm: new Register({ - username: undefined, - password: undefined, - password_verify: undefined, + state: State = { + registerRes: { state: "empty" }, + themeList: [], + form: { show_nsfw: true, - // The first admin signup doesn't need a captcha - captcha_uuid: None, - captcha_answer: None, - email: None, - honeypot: None, - answer: None, - }), - doneRegisteringUser: UserService.Instance.myUserInfo.isSome(), - userLoading: false, + }, + doneRegisteringUser: !!UserService.Instance.myUserInfo, + siteRes: this.isoData.site_res, }; constructor(props: any, context: any) { super(props, context); - this.state = this.emptyState; - - this.subscription = WebSocketService.Instance.subject - .pipe(retryWhen(errors => errors.pipe(delay(3000), take(10)))) - .subscribe( - msg => this.parseMessage(msg), - err => console.error(err), - () => console.log("complete") - ); + this.handleCreateSite = this.handleCreateSite.bind(this); } - componentWillUnmount() { - this.subscription.unsubscribe(); + async componentDidMount() { + this.setState({ themeList: await fetchThemeList() }); } get documentTitle(): string { - return `${i18n.t("setup")} - Lemmy`; + return `${I18NextService.i18n.t("setup")} - Lemmy`; } render() { return ( -
+
-
-
-

{i18n.t("lemmy_instance_setup")}

+
+
+

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

{!this.state.doneRegisteringUser ? ( this.registerUser() ) : ( - + )}
@@ -86,17 +86,17 @@ export class Setup extends Component { registerUser() { return (
-
{i18n.t("setup_admin")}
-
-