pl-hooks: Updates, add useStatusTranslation query

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
marcin mikołajczak 2024-10-24 23:46:22 +02:00
parent 39f975c793
commit d6aa4bf388
10 changed files with 33 additions and 16 deletions

View file

@ -7,7 +7,7 @@ const useAccountRelationship = (accountId?: string) => {
const { client } = usePlHooksApiClient();
const queryClient = usePlHooksQueryClient();
return useQuery({
return useQuery({
queryKey: ['accounts', 'entities', accountId],
queryFn: async () => (await client.accounts.getRelationships([accountId!]))[0],
enabled: !!accountId,

View file

@ -3,7 +3,7 @@ import { useQuery, UseQueryResult } from '@tanstack/react-query';
import { usePlHooksApiClient } from 'pl-hooks/contexts/api-client';
import { queryClient, usePlHooksQueryClient } from 'pl-hooks/contexts/query-client';
import { importEntities } from 'pl-hooks/importer';
import { normalizeAccount, type Account as NormalizedAccount } from 'pl-hooks/normalizers/account';
import { normalizeAccount, type NormalizedAccount } from 'pl-hooks/normalizers/account';
import { useAccountRelationship } from './use-account-relationship';

View file

@ -7,8 +7,8 @@ import { type NormalizedNotification, normalizeNotification } from 'pl-hooks/nor
import { useAccount } from '../accounts/use-account';
import { useStatus } from '../statuses/use-status';
import type { Account } from 'pl-hooks/normalizers/account';
import type { Status } from 'pl-hooks/normalizers/status';
import type { NormalizedAccount as Account } from 'pl-hooks/normalizers/account';
import type { NormalizedStatus as Status } from 'pl-hooks/normalizers/status';
const getNotificationStatusId = (n: NormalizedNotification) => {
if (['mention', 'status', 'reblog', 'favourite', 'poll', 'update', 'emoji_reaction', 'event_reminder', 'participation_accepted', 'participation_request'].includes(n.type))

View file

@ -7,7 +7,7 @@ const usePoll = (pollId?: string) => {
const queryClient = usePlHooksQueryClient();
const { client } = usePlHooksApiClient();
return useQuery({
return useQuery({
queryKey: ['polls', 'entities', pollId],
queryFn: () => client.polls.getPoll(pollId!),
enabled: !!pollId,

View file

@ -0,0 +1,17 @@
import { useQuery } from '@tanstack/react-query';
import { usePlHooksApiClient } from 'pl-hooks/contexts/api-client';
import { usePlHooksQueryClient } from 'pl-hooks/contexts/query-client';
const useStatusTranslation = (statusId: string, targetLanguage?: string) => {
const { client } = usePlHooksApiClient();
const queryClient = usePlHooksQueryClient();
return useQuery({
queryKey: ['statuses', 'translations', statusId, targetLanguage],
queryFn: () => client.statuses.translateStatus(statusId, targetLanguage),
enabled: !!targetLanguage,
}, queryClient);
};
export { useStatusTranslation };

View file

@ -4,8 +4,8 @@ import { usePlHooksApiClient } from 'pl-hooks/contexts/api-client';
import { queryClient, usePlHooksQueryClient } from 'pl-hooks/contexts/query-client';
import { importEntities } from 'pl-hooks/importer';
import { usePoll } from 'pl-hooks/main';
import { type Account, normalizeAccount } from 'pl-hooks/normalizers/account';
import { type Status as NormalizedStatus, normalizeStatus } from 'pl-hooks/normalizers/status';
import { normalizeAccount, type NormalizedAccount } from 'pl-hooks/normalizers/account';
import { type NormalizedStatus, normalizeStatus } from 'pl-hooks/normalizers/status';
import type { Poll } from 'pl-api';
@ -87,8 +87,8 @@ const importStatus = (status: NormalizedStatus) => {
};
type Status = NormalizedStatus & {
account: Account;
accounts: Array<Account>;
account: NormalizedAccount;
accounts: Array<NormalizedAccount>;
poll?: Poll;
reblog?: Status;
};

View file

@ -1,7 +1,7 @@
import { queryClient } from 'pl-hooks/contexts/query-client';
import { type DeduplicatedNotification, type NormalizedNotification, normalizeNotification } from './normalizers/notification';
import { normalizeStatus, type Status } from './normalizers/status';
import { normalizeStatus, type NormalizedStatus } from './normalizers/status';
import type {
Account as BaseAccount,
@ -32,7 +32,7 @@ const importRelationship = (relationship: BaseRelationship) => queryClient.setQu
['relationships', 'entities', relationship.id], relationship,
);
const importStatus = (status: BaseStatus) => queryClient.setQueryData<Status>(
const importStatus = (status: BaseStatus) => queryClient.setQueryData<NormalizedStatus>(
['statuses', 'entities', status.id], normalizeStatus(status),
);

View file

@ -12,5 +12,8 @@ export * from './hooks/notifications/use-notification';
export * from './hooks/notifications/use-notification-list';
export * from './hooks/polls/use-poll';
export * from './hooks/statuses/use-status';
export * from './hooks/statuses/use-status-translation';
export * from './importer';
export type { NormalizedAccount } from './normalizers/account';

View file

@ -7,4 +7,4 @@ const normalizeAccount = ({ moved, relationship, ...account }: BaseAccount) => (
type Account = ReturnType<typeof normalizeAccount>;
export { normalizeAccount, type Account };
export { normalizeAccount, type Account as NormalizedAccount };

View file

@ -55,14 +55,11 @@ const normalizeStatus = ({ account, accounts, reblog, poll, group, quote, ...sta
reblog_id: reblog?.id || null,
poll_id: poll?.id || null,
group_id: group?.id || null,
translating: false,
expectsCard: false,
showFiltered: null as null | boolean,
...status,
quote_id: quote?.id || status.quote_id || null,
mentions,
expanded: null,
hidden: null,
filtered: status.filtered?.map(result => result.filter.title),
event,
media_attachments,
@ -75,5 +72,5 @@ export {
type StatusApprovalStatus,
type StatusVisibility,
normalizeStatus,
type Status,
type Status as NormalizedStatus,
};