]> Untitled Git - lemmy-ui.git/blobdiff - src/shared/components/person/profile.tsx
Refactor route data
[lemmy-ui.git] / src / shared / components / person / profile.tsx
index 42c7c306ccf54a47d3a741506bc976e8cf609de4..00a441970a6af6421492f2942b902bada80cc1cd 100644 (file)
@@ -29,6 +29,7 @@ import { InitialFetchRequest, PersonDetailsView } from "../../interfaces";
 import { UserService, WebSocketService } from "../../services";
 import {
   QueryParams,
+  WithPromiseKeys,
   canMod,
   capitalizeFirstLetter,
   createCommentLikeRes,
@@ -67,6 +68,10 @@ import { CommunityLink } from "../community/community-link";
 import { PersonDetails } from "./person-details";
 import { PersonListing } from "./person-listing";
 
+interface ProfileData {
+  personResponse: GetPersonDetailsResponse;
+}
+
 interface ProfileState {
   personRes?: GetPersonDetailsResponse;
   loading: boolean;
@@ -152,7 +157,7 @@ export class Profile extends Component<
   RouteComponentProps<{ username: string }>,
   ProfileState
 > {
-  private isoData = setIsoData(this.context);
+  private isoData = setIsoData<ProfileData>(this.context);
   private subscription?: Subscription;
   state: ProfileState = {
     loading: true,
@@ -175,7 +180,7 @@ export class Profile extends Component<
     if (this.isoData.path === this.context.router.route.match.url) {
       this.state = {
         ...this.state,
-        personRes: this.isoData.routeData[0] as GetPersonDetailsResponse,
+        personRes: this.isoData.routeData.personResponse,
         loading: false,
       };
     } else {
@@ -223,7 +228,9 @@ export class Profile extends Component<
     path,
     query: { page, sort, view: urlView },
     auth,
-  }: InitialFetchRequest<QueryParams<ProfileProps>>): Promise<any>[] {
+  }: InitialFetchRequest<
+    QueryParams<ProfileProps>
+  >): WithPromiseKeys<ProfileData> {
     const pathSplit = path.split("/");
 
     const username = pathSplit[2];
@@ -238,7 +245,9 @@ export class Profile extends Component<
       auth,
     };
 
-    return [client.getPersonDetails(form)];
+    return {
+      personResponse: client.getPersonDetails(form),
+    };
   }
 
   componentDidMount() {