X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fhome%2Fadmin-settings.tsx;fp=src%2Fshared%2Fcomponents%2Fhome%2Fadmin-settings.tsx;h=11be72579c4ca410b3a667f878a430e7a6a0d7b8;hb=9265fc58948341856513c06ba44e1a0c0d5a4241;hp=9b7256d03a507e561f5bf2e92cecc0586b216b60;hpb=d75e0506daeb460fa4952211a46ded944d57aa88;p=lemmy-ui.git diff --git a/src/shared/components/home/admin-settings.tsx b/src/shared/components/home/admin-settings.tsx index 9b7256d..11be725 100644 --- a/src/shared/components/home/admin-settings.tsx +++ b/src/shared/components/home/admin-settings.tsx @@ -14,6 +14,7 @@ import { InitialFetchRequest } from "../../interfaces"; import { FirstLoadService } from "../../services/FirstLoadService"; import { HttpService, RequestState } from "../../services/HttpService"; import { + RouteDataResponse, capitalizeFirstLetter, fetchThemeList, myAuthRequired, @@ -32,6 +33,11 @@ import RateLimitForm from "./rate-limit-form"; import { SiteForm } from "./site-form"; import { TaglineForm } from "./tagline-form"; +type AdminSettingsData = RouteDataResponse<{ + bannedPersonsResponse: BannedPersonsResponse; + federatedInstancesResponse: GetFederatedInstancesResponse; +}>; + interface AdminSettingsState { siteRes: GetSiteResponse; banned: PersonView[]; @@ -44,7 +50,7 @@ interface AdminSettingsState { } export class AdminSettings extends Component { - private isoData = setIsoData(this.context); + private isoData = setIsoData(this.context); state: AdminSettingsState = { siteRes: this.isoData.site_res, banned: [], @@ -66,7 +72,11 @@ export class AdminSettings extends Component { // Only fetch the data if coming from another route if (FirstLoadService.isFirstLoad) { - const [bannedRes, instancesRes] = this.isoData.routeData; + const { + bannedPersonsResponse: bannedRes, + federatedInstancesResponse: instancesRes, + } = this.isoData.routeData; + this.state = { ...this.state, bannedRes, @@ -76,45 +86,18 @@ export class AdminSettings extends Component { } } - async fetchData() { - this.setState({ - bannedRes: { state: "loading" }, - instancesRes: { state: "loading" }, - themeList: [], - }); - - const auth = myAuthRequired(); - - const [bannedRes, instancesRes, themeList] = await Promise.all([ - HttpService.client.getBannedPersons({ auth }), - HttpService.client.getFederatedInstances({ auth }), - fetchThemeList(), - ]); - - this.setState({ - bannedRes, - instancesRes, - themeList, - }); - } - - static fetchInitialData({ + static async fetchInitialData({ auth, client, - }: InitialFetchRequest): Promise[] { - const promises: Promise>[] = []; - - if (auth) { - promises.push(client.getBannedPersons({ auth })); - promises.push(client.getFederatedInstances({ auth })); - } else { - promises.push( - Promise.resolve({ state: "empty" }), - Promise.resolve({ state: "empty" }) - ); - } - - return promises; + }: InitialFetchRequest): Promise { + return { + bannedPersonsResponse: await client.getBannedPersons({ + auth: auth as string, + }), + federatedInstancesResponse: await client.getFederatedInstances({ + auth: auth as string, + }), + }; } async componentDidMount() { @@ -208,6 +191,28 @@ export class AdminSettings extends Component { ); } + async fetchData() { + this.setState({ + bannedRes: { state: "loading" }, + instancesRes: { state: "loading" }, + themeList: [], + }); + + const auth = myAuthRequired(); + + const [bannedRes, instancesRes, themeList] = await Promise.all([ + HttpService.client.getBannedPersons({ auth }), + HttpService.client.getFederatedInstances({ auth }), + fetchThemeList(), + ]); + + this.setState({ + bannedRes, + instancesRes, + themeList, + }); + } + admins() { return ( <>