@ -1,11 +1,13 @@
|
||||
import { useQuery } from '@tanstack/react-query';
|
||||
import { useAccount } from 'pl-fe/api/hooks';
|
||||
|
||||
import { useAccount, useGroup } from 'pl-fe/api/hooks';
|
||||
import { useAppSelector, useClient } from 'pl-fe/hooks';
|
||||
import { queryClient } from 'pl-fe/queries/client';
|
||||
import { selectAccount, selectAccounts } from 'pl-fe/selectors';
|
||||
|
||||
import { type MinifiedStatus, minifyStatus } from '../../minifiers/minifyStatus';
|
||||
import { normalizeStatus, type Status } from '../../normalizers/normalizeStatus';
|
||||
import type { Group } from 'pl-fe/normalizers';
|
||||
|
||||
type Account = ReturnType<typeof selectAccount>;
|
||||
|
||||
@ -26,10 +28,14 @@ const useStatus = (statusId: string) => {
|
||||
.then(minifyStatus),
|
||||
});
|
||||
|
||||
const { account } = useAccount(statusQuery.data?.account_id!);
|
||||
const status = statusQuery.data;
|
||||
|
||||
const data: Status | null = useAppSelector((state) => {
|
||||
const status = statusQuery.data;
|
||||
const { account } = useAccount(status?.account_id || undefined);
|
||||
const { group } = useGroup(status?.group_id || undefined);
|
||||
|
||||
const data: Status & {
|
||||
group: Group;
|
||||
} | null = useAppSelector((state) => {
|
||||
if (!status) return null;
|
||||
const accounts = selectAccounts(state, status.account_ids).filter((account): account is Account => account !== undefined);
|
||||
|
||||
@ -37,6 +43,7 @@ const useStatus = (statusId: string) => {
|
||||
...status,
|
||||
account,
|
||||
accounts,
|
||||
group,
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@ -8,7 +8,9 @@ let dispatch: AppDispatch;
|
||||
import('pl-fe/store').then(value => dispatch = value.store.dispatch).catch(() => {});
|
||||
|
||||
import { MinifiedNotification, minifyNotification } from './minifiers/minifyNotification';
|
||||
import { MinifiedStatus, minifyStatus } from './minifiers/minifyStatus';
|
||||
import { DeduplicatedNotification } from './normalizers/deduplicateNotifications';
|
||||
import { normalizeStatus } from './normalizers/normalizeStatus';
|
||||
|
||||
import type {
|
||||
Account as BaseAccount,
|
||||
@ -26,6 +28,13 @@ const importNotification = (notification: DeduplicatedNotification) => {
|
||||
);
|
||||
};
|
||||
|
||||
const importStatus = (status: BaseStatus) => {
|
||||
queryClient.setQueryData<MinifiedStatus>(
|
||||
['statuses', 'entities', status.id],
|
||||
_ => minifyStatus(normalizeStatus(status)),
|
||||
);
|
||||
};
|
||||
|
||||
const isEmpty = (object: Record<string, any>) => {
|
||||
for (const i in object) return false;
|
||||
return true;
|
||||
@ -88,6 +97,7 @@ const importEntities = (entities: {
|
||||
if (!isEmpty(polls)) dispatch(importPolls(Object.values(polls)));
|
||||
if (!isEmpty(relationships)) dispatch(importEntityStoreEntities(Object.values(relationships), Entities.RELATIONSHIPS));
|
||||
if (!isEmpty(statuses)) dispatch(importStatuses(Object.values(statuses)));
|
||||
if (!isEmpty(statuses)) Object.values(statuses).forEach(importStatus);
|
||||
};
|
||||
|
||||
export { importEntities };
|
||||
|
||||
Reference in New Issue
Block a user