fix: Fix bug where user could not block person from profile page (#2151)

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

* fix: Fix linting errors

* chore: Replace arrow function with regular function
This commit is contained in:
SleeplessOne1917 2023-09-27 21:36:34 +00:00 committed by GitHub
parent aec61ec5d1
commit 951c8afebc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -155,6 +155,16 @@ const Moderates = ({ moderates }: { moderates?: CommunityModeratorView[] }) =>
const Follows = () =>
getCommunitiesListing("subscribed", UserService.Instance.myUserInfo?.follows);
function isPersonBlocked(personRes: RequestState<GetPersonDetailsResponse>) {
return (
(personRes.state === "success" &&
UserService.Instance.myUserInfo?.person_blocks.some(
({ target: { id } }) => id === personRes.data.person_view.person.id,
)) ??
false
);
}
export class Profile extends Component<
RouteComponentProps<{ username: string }>,
ProfileState
@ -211,10 +221,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 +246,18 @@ export class Profile extends Component<
const { page, sort, view } = getProfileQueryParams();
this.setState({ personRes: { state: "loading" } });
this.setState({
personRes: await HttpService.client.getPersonDetails({
const personRes = await HttpService.client.getPersonDetails({
username: this.props.match.params.username,
sort,
saved_only: view === PersonDetailsView.Saved,
page,
limit: fetchLimit,
}),
});
this.setState({
personRes,
personBlocked: isPersonBlocked(personRes),
});
restoreScrollPosition(this.context);
this.setPersonBlock();
}
get amCurrentUser() {
@ -258,19 +271,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 +791,7 @@ export class Profile extends Component<
});
if (res.state === "success") {
updatePersonBlock(res.data);
this.setState({ personBlocked: res.data.blocked });
}
}
@ -826,6 +827,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 });
}
}