refactor: get status in new entity store as a fallback

This commit is contained in:
P. Reis 2024-12-19 20:23:54 -03:00
parent afd1f49e59
commit b8da3e4f0c
1 changed files with 33 additions and 3 deletions

View File

@ -1,29 +1,59 @@
import { favourite as favouriteAction, unfavourite as unfavouriteAction, toggleFavourite as toggleFavouriteAction } from 'soapbox/actions/interactions.ts';
import { Entities } from 'soapbox/entity-store/entities.ts';
import { selectEntity } from 'soapbox/entity-store/selectors.ts';
import { useAppDispatch } from 'soapbox/hooks/useAppDispatch.ts';
import { useGetState } from 'soapbox/hooks/useGetState.ts';
import { normalizeStatus } from 'soapbox/normalizers/index.ts';
import { Status as StatusEntity } from 'soapbox/schemas/index.ts';
import type { Status as LegacyStatus } from 'soapbox/types/entities.ts';
export function useFavourite() {
const getState = useGetState();
const dispatch = useAppDispatch();
const favourite = (statusId: string) => {
const status = getState().statuses.get(statusId);
let status: undefined|LegacyStatus|StatusEntity = getState().statuses.get(statusId);
if (status) {
dispatch(favouriteAction(status));
return;
}
status = selectEntity<StatusEntity>(getState(), Entities.STATUSES, statusId);
if (status) {
dispatch(favouriteAction(normalizeStatus(status) as LegacyStatus));
return;
}
};
const unfavourite = (statusId: string) => {
const status = getState().statuses.get(statusId);
let status: undefined|LegacyStatus|StatusEntity = getState().statuses.get(statusId);
if (status) {
dispatch(unfavouriteAction(status));
return;
}
status = selectEntity<StatusEntity>(getState(), Entities.STATUSES, statusId);
if (status) {
dispatch(unfavouriteAction(normalizeStatus(status) as LegacyStatus));
return;
}
};
const toggleFavourite = (statusId: string) => {
const status = getState().statuses.get(statusId);
let status: undefined|LegacyStatus|StatusEntity = getState().statuses.get(statusId);
if (status) {
dispatch(toggleFavouriteAction(status));
return;
}
status = selectEntity<StatusEntity>(getState(), Entities.STATUSES, statusId);
if (status) {
dispatch(toggleFavouriteAction(normalizeStatus(status) as LegacyStatus));
return;
}
};