From: Alec Armbruster Date: Wed, 14 Jun 2023 13:32:25 +0000 (-0400) Subject: handle loading state on community-form.tsx X-Git-Url: http://these/git/%7BcanonicalUrl%7D?a=commitdiff_plain;h=b076427e8dcd4d93fd56c1bb2cc005055e661216;p=lemmy-ui.git handle loading state on community-form.tsx --- diff --git a/src/shared/components/community/community-form.tsx b/src/shared/components/community/community-form.tsx index f317c98..1d32f6f 100644 --- a/src/shared/components/community/community-form.tsx +++ b/src/shared/components/community/community-form.tsx @@ -21,6 +21,7 @@ interface CommunityFormProps { onCancel?(): any; onUpsertCommunity(form: CreateCommunity | EditCommunity): void; enableNsfw?: boolean; + isLoading?: boolean; } interface CommunityFormState { @@ -34,7 +35,6 @@ interface CommunityFormState { posting_restricted_to_mods?: boolean; discussion_languages?: number[]; }; - loading: boolean; submitted: boolean; } @@ -46,7 +46,6 @@ export class CommunityForm extends Component< state: CommunityFormState = { form: {}, - loading: false, submitted: false, }; @@ -80,7 +79,6 @@ export class CommunityForm extends Component< posting_restricted_to_mods: cv.community.posting_restricted_to_mods, discussion_languages: this.props.communityLanguages, }, - loading: false, }; } } @@ -90,7 +88,7 @@ export class CommunityForm extends Component<
- {this.state.loading ? ( + {this.props.isLoading ? ( ) : this.props.community_view ? ( capitalizeFirstLetter(i18n.t("save")) @@ -270,7 +268,7 @@ export class CommunityForm extends Component< handleCreateCommunitySubmit(i: CommunityForm, event: any) { event.preventDefault(); - i.setState({ loading: true, submitted: true }); + i.setState({ submitted: true }); const cForm = i.state.form; const auth = myAuthRequired(); diff --git a/src/shared/components/community/create-community.tsx b/src/shared/components/community/create-community.tsx index f75c4fb..ecadd3a 100644 --- a/src/shared/components/community/create-community.tsx +++ b/src/shared/components/community/create-community.tsx @@ -11,12 +11,14 @@ import { CommunityForm } from "./community-form"; interface CreateCommunityState { siteRes: GetSiteResponse; + loading: boolean; } export class CreateCommunity extends Component { private isoData = setIsoData(this.context); state: CreateCommunityState = { siteRes: this.isoData.site_res, + loading: false, }; constructor(props: any, context: any) { super(props, context); @@ -45,6 +47,7 @@ export class CreateCommunity extends Component { allLanguages={this.state.siteRes.all_languages} siteLanguages={this.state.siteRes.discussion_languages} communityLanguages={this.state.siteRes.discussion_languages} + isLoading={this.state.loading} /> @@ -53,10 +56,15 @@ export class CreateCommunity extends Component { } async handleCommunityCreate(form: CreateCommunityI) { + this.setState({ loading: true }); + const res = await HttpService.client.createCommunity(form); + if (res.state === "success") { const name = res.data.community_view.community.name; this.props.history.replace(`/c/${name}`); + } else { + this.setState({ loading: false }); } } }