pl-hooks: more prefetching

Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
marcin mikołajczak 2024-10-21 12:07:19 +02:00
parent 558f89ee10
commit 2fb53d92be
6 changed files with 24 additions and 9 deletions

View file

@ -144,7 +144,6 @@
"vite-plugin-html": "^3.2.2",
"vite-plugin-require": "^1.2.14",
"vite-plugin-static-copy": "^1.0.6",
"wicg-inert": "^3.1.3",
"zustand": "^5.0.0-rc.2"
},
"devDependencies": {

View file

@ -10172,11 +10172,6 @@ why-is-node-running@^2.3.0:
siginfo "^2.0.0"
stackback "0.0.2"
wicg-inert@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/wicg-inert/-/wicg-inert-3.1.3.tgz#e53dbc9ac1e0d7f8c60f25e707614a835986272a"
integrity sha512-5L0PKK7iP+0Q/jv2ccgmkz/pfXbumZtlEyWS/xnX+L+Og3f7WjL4+iEs18k4IuldOX3PgGpza3qGndL9xUBjCQ==
word-wrap@^1.2.5:
version "1.2.5"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34"

View file

@ -1,11 +1,14 @@
import { useQuery } from '@tanstack/react-query';
import { usePlHooksApiClient } from 'pl-hooks/contexts/api-client';
import { usePlHooksQueryClient } from 'pl-hooks/contexts/query-client';
import { queryClient, usePlHooksQueryClient } from 'pl-hooks/contexts/query-client';
import { importEntities } from 'pl-hooks/importer';
import { type Account, normalizeAccount } from 'pl-hooks/normalizers/normalizeAccount';
import { useAccountRelationship } from './useAccountRelationship';
import type { PlApiClient } from 'pl-api';
interface UseAccountOpts {
withRelationship?: boolean;
withScrobble?: boolean;
@ -38,4 +41,15 @@ const useAccount = (accountId?: string, opts: UseAccountOpts = {}) => {
return { ...accountQuery, data };
};
export { useAccount, type UseAccountOpts };
const prefetchAccount = (client: PlApiClient, accountId: string) =>
queryClient.prefetchQuery({
queryKey: ['accounts', 'entities', accountId],
queryFn: () => client.accounts.getAccount(accountId!)
.then(account => {
importEntities({ accounts: [account] }, { withParents: false });
return normalizeAccount(account);
}),
});
export { useAccount, prefetchAccount, type UseAccountOpts };

View file

@ -12,7 +12,6 @@ import type {
} from 'pl-api';
const importAccount = (account: BaseAccount) => {
queryClient.setQueryData<string>(['accounts', 'byAcct', account.acct.toLocaleLowerCase()], account.id);
return queryClient.setQueryData<BaseAccount>(['accounts', 'entities', account.id], account);
};
@ -58,6 +57,8 @@ const importEntities = (entities: {
const statuses: Record<string, BaseStatus> = {};
const processAccount = (account: BaseAccount) => {
queryClient.setQueryData<string>(['accounts', 'byAcct', account.acct.toLocaleLowerCase()], account.id);
if (account.moved) processAccount(account.moved);
if (account.relationship) relationships[account.relationship.id] = account.relationship;
};

View file

@ -8,6 +8,7 @@ export * from './hooks/markers/useMarkers';
export * from './hooks/markers/useUpdateMarkerMutation';
export * from './hooks/notifications/useNotification';
export * from './hooks/notifications/useNotificationList';
export * from './hooks/polls/usePoll';
export * from './hooks/statuses/useStatus';
export * from './importer';

View file

@ -4,6 +4,8 @@ import { resolve } from 'path';
import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';
import pkg from './package.json';
export default defineConfig({
plugins: [dts({ include: ['lib'], insertTypesEntry: true })],
build: {
@ -16,6 +18,9 @@ export default defineConfig({
},
target: 'esnext',
sourcemap: true,
rollupOptions: {
external: Object.keys(pkg.dependencies),
},
},
resolve: {
alias: [