fix: Fix bug where user could not block person from profile page

This commit is contained in:
SleeplessOne1917 2023-09-27 17:05:58 -04:00
parent aec61ec5d1
commit 011d2ca1df

View file

@ -155,6 +155,12 @@ const Moderates = ({ moderates }: { moderates?: CommunityModeratorView[] }) =>
const Follows = () => const Follows = () =>
getCommunitiesListing("subscribed", UserService.Instance.myUserInfo?.follows); getCommunitiesListing("subscribed", UserService.Instance.myUserInfo?.follows);
const isPersonBlocked = (personRes: RequestState<GetPersonDetailsResponse>) =>
personRes.state === "success" &&
UserService.Instance.myUserInfo?.person_blocks.some(
({ target: { id } }) => id === personRes.data.person_view.person.id,
);
export class Profile extends Component< export class Profile extends Component<
RouteComponentProps<{ username: string }>, RouteComponentProps<{ username: string }>,
ProfileState ProfileState
@ -211,10 +217,12 @@ export class Profile extends Component<
// Only fetch the data if coming from another route // Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) { if (FirstLoadService.isFirstLoad) {
const personRes = this.isoData.routeData.personResponse;
this.state = { this.state = {
...this.state, ...this.state,
personRes: this.isoData.routeData.personResponse, personRes,
isIsomorphic: true, isIsomorphic: true,
personBlocked: isPersonBlocked(personRes),
}; };
} }
} }
@ -234,17 +242,18 @@ export class Profile extends Component<
const { page, sort, view } = getProfileQueryParams(); const { page, sort, view } = getProfileQueryParams();
this.setState({ personRes: { state: "loading" } }); this.setState({ personRes: { state: "loading" } });
const personRes = await HttpService.client.getPersonDetails({
username: this.props.match.params.username,
sort,
saved_only: view === PersonDetailsView.Saved,
page,
limit: fetchLimit,
});
this.setState({ this.setState({
personRes: await HttpService.client.getPersonDetails({ personRes,
username: this.props.match.params.username, personBlocked: isPersonBlocked(personRes),
sort,
saved_only: view === PersonDetailsView.Saved,
page,
limit: fetchLimit,
}),
}); });
restoreScrollPosition(this.context); restoreScrollPosition(this.context);
this.setPersonBlock();
} }
get amCurrentUser() { get amCurrentUser() {
@ -258,19 +267,6 @@ export class Profile extends Component<
} }
} }
setPersonBlock() {
const mui = UserService.Instance.myUserInfo;
const res = this.state.personRes;
if (mui && res.state === "success") {
this.setState({
personBlocked: mui.person_blocks.some(
({ target: { id } }) => id === res.data.person_view.person.id,
),
});
}
}
static async fetchInitialData({ static async fetchInitialData({
client, client,
path, path,
@ -791,6 +787,7 @@ export class Profile extends Component<
}); });
if (res.state === "success") { if (res.state === "success") {
updatePersonBlock(res.data); updatePersonBlock(res.data);
this.setState({ personBlocked: isPersonBlocked(res) });
} }
} }
@ -826,6 +823,7 @@ export class Profile extends Component<
const blockPersonRes = await HttpService.client.blockPerson(form); const blockPersonRes = await HttpService.client.blockPerson(form);
if (blockPersonRes.state === "success") { if (blockPersonRes.state === "success") {
updatePersonBlock(blockPersonRes.data); updatePersonBlock(blockPersonRes.data);
this.setState({ personBlocked: blockPersonRes.data.blocked });
} }
} }