import { FirstLoadService } from "../../services/FirstLoadService";
import { HttpService, RequestState } from "../../services/HttpService";
import {
+ RouteDataResponse,
getRecipientIdFromProps,
myAuth,
setIsoData,
import { Spinner } from "../common/icon";
import { PrivateMessageForm } from "./private-message-form";
+type CreatePrivateMessageData = RouteDataResponse<{
+ recipientDetailsResponse: GetPersonDetailsResponse;
+}>;
+
interface CreatePrivateMessageState {
siteRes: GetSiteResponse;
recipientRes: RequestState<GetPersonDetailsResponse>;
any,
CreatePrivateMessageState
> {
- private isoData = setIsoData(this.context);
+ private isoData = setIsoData<CreatePrivateMessageData>(this.context);
state: CreatePrivateMessageState = {
siteRes: this.isoData.site_res,
recipientRes: { state: "empty" },
if (FirstLoadService.isFirstLoad) {
this.state = {
...this.state,
- recipientRes: this.isoData.routeData[0],
+ recipientRes: this.isoData.routeData.recipientDetailsResponse,
isIsomorphic: true,
};
}
}
}
+ static async fetchInitialData({
+ client,
+ path,
+ auth,
+ }: InitialFetchRequest): Promise<CreatePrivateMessageData> {
+ const person_id = Number(path.split("/").pop());
+
+ const form: GetPersonDetails = {
+ person_id,
+ sort: "New",
+ saved_only: false,
+ auth,
+ };
+
+ return {
+ recipientDetailsResponse: await client.getPersonDetails(form),
+ };
+ }
+
async fetchPersonDetails() {
this.setState({
recipientRes: { state: "loading" },
});
}
- static fetchInitialData(
- req: InitialFetchRequest
- ): Promise<RequestState<any>>[] {
- const person_id = Number(req.path.split("/").pop());
- const form: GetPersonDetails = {
- person_id,
- sort: "New",
- saved_only: false,
- auth: req.auth,
- };
- return [req.client.getPersonDetails(form)];
- }
-
get documentTitle(): string {
if (this.state.recipientRes.state == "success") {
const name_ = this.state.recipientRes.data.person_view.person.name;