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 = () =>
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<
RouteComponentProps<{ username: string }>,
ProfileState
@ -211,10 +217,12 @@ export class Profile extends Component<
// Only fetch the data if coming from another route
if (FirstLoadService.isFirstLoad) {
const personRes = this.isoData.routeData.personResponse;
this.state = {
...this.state,
personRes: this.isoData.routeData.personResponse,
personRes,
isIsomorphic: true,
personBlocked: isPersonBlocked(personRes),
};
}
}
@ -234,17 +242,18 @@ export class Profile extends Component<
const { page, sort, view } = getProfileQueryParams();
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({
personRes: await HttpService.client.getPersonDetails({
username: this.props.match.params.username,
sort,
saved_only: view === PersonDetailsView.Saved,
page,
limit: fetchLimit,
}),
personRes,
personBlocked: isPersonBlocked(personRes),
});
restoreScrollPosition(this.context);
this.setPersonBlock();
}
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({
client,
path,
@ -791,6 +787,7 @@ export class Profile extends Component<
});
if (res.state === "success") {
updatePersonBlock(res.data);
this.setState({ personBlocked: isPersonBlocked(res) });
}
}
@ -826,6 +823,7 @@ export class Profile extends Component<
const blockPersonRes = await HttpService.client.blockPerson(form);
if (blockPersonRes.state === "success") {
updatePersonBlock(blockPersonRes.data);
this.setState({ personBlocked: blockPersonRes.data.blocked });
}
}