X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fperson%2Freports.tsx;h=fb8e8b831870bacc68daada998c165759753ed69;hb=9265fc58948341856513c06ba44e1a0c0d5a4241;hp=29daa3ff6c92dbad9d621d8c2ed9be2e6945985c;hpb=d75e0506daeb460fa4952211a46ded944d57aa88;p=lemmy-ui.git diff --git a/src/shared/components/person/reports.tsx b/src/shared/components/person/reports.tsx index 29daa3f..fb8e8b8 100644 --- a/src/shared/components/person/reports.tsx +++ b/src/shared/components/person/reports.tsx @@ -23,6 +23,7 @@ import { HttpService, UserService } from "../../services"; import { FirstLoadService } from "../../services/FirstLoadService"; import { RequestState } from "../../services/HttpService"; import { + RouteDataResponse, amAdmin, editCommentReport, editPostReport, @@ -56,6 +57,12 @@ enum MessageEnum { PrivateMessageReport, } +type ReportsData = RouteDataResponse<{ + commentReportsResponse: ListCommentReportsResponse; + postReportsResponse: ListPostReportsResponse; + privateMessageReportsResponse?: ListPrivateMessageReportsResponse; +}>; + type ItemType = { id: number; type_: MessageEnum; @@ -75,7 +82,7 @@ interface ReportsState { } export class Reports extends Component { - private isoData = setIsoData(this.context); + private isoData = setIsoData(this.context); state: ReportsState = { commentReportsRes: { state: "empty" }, postReportsRes: { state: "empty" }, @@ -99,8 +106,12 @@ export class Reports extends Component { // Only fetch the data if coming from another route if (FirstLoadService.isFirstLoad) { - const [commentReportsRes, postReportsRes, messageReportsRes] = - this.isoData.routeData; + const { + commentReportsResponse: commentReportsRes, + postReportsResponse: postReportsRes, + privateMessageReportsResponse: messageReportsRes, + } = this.isoData.routeData; + this.state = { ...this.state, commentReportsRes, @@ -111,7 +122,7 @@ export class Reports extends Component { if (amAdmin()) { this.state = { ...this.state, - messageReportsRes, + messageReportsRes: messageReportsRes ?? { state: "empty" }, }; } } @@ -481,55 +492,48 @@ export class Reports extends Component { await i.refetch(); } - static fetchInitialData({ + static async fetchInitialData({ auth, client, - }: InitialFetchRequest): Promise[] { - const promises: Promise>[] = []; - + }: InitialFetchRequest): Promise { const unresolved_only = true; const page = 1; const limit = fetchLimit; - if (auth) { - const commentReportsForm: ListCommentReports = { - unresolved_only, - page, - limit, - auth, - }; - promises.push(client.listCommentReports(commentReportsForm)); + const commentReportsForm: ListCommentReports = { + unresolved_only, + page, + limit, + auth: auth as string, + }; - const postReportsForm: ListPostReports = { + const postReportsForm: ListPostReports = { + unresolved_only, + page, + limit, + auth: auth as string, + }; + + const data: ReportsData = { + commentReportsResponse: await client.listCommentReports( + commentReportsForm + ), + postReportsResponse: await client.listPostReports(postReportsForm), + }; + + if (amAdmin()) { + const privateMessageReportsForm: ListPrivateMessageReports = { unresolved_only, page, limit, - auth, + auth: auth as string, }; - promises.push(client.listPostReports(postReportsForm)); - if (amAdmin()) { - const privateMessageReportsForm: ListPrivateMessageReports = { - unresolved_only, - page, - limit, - auth, - }; - promises.push( - client.listPrivateMessageReports(privateMessageReportsForm) - ); - } else { - promises.push(Promise.resolve({ state: "empty" })); - } - } else { - promises.push( - Promise.resolve({ state: "empty" }), - Promise.resolve({ state: "empty" }), - Promise.resolve({ state: "empty" }) - ); + data.privateMessageReportsResponse = + await client.listPrivateMessageReports(privateMessageReportsForm); } - return promises; + return data; } async refetch() {