diff --git a/packages/pl-fe/src/instance/about.example/index.html b/packages/pl-fe/src/instance/about.example/index.html
index b313d33f4..6464eb004 100644
--- a/packages/pl-fe/src/instance/about.example/index.html
+++ b/packages/pl-fe/src/instance/about.example/index.html
@@ -1,5 +1,5 @@
About us
-This is an example about page for a Fediverse instance using .
+This is an example about page for a Fediverse instance using Nicolium.
Site rules
@@ -10,5 +10,7 @@
Nicolium is free and open source (FOSS) software.
The Nicolium repository can be found at
- Codeberg
+ Codeberg
diff --git a/packages/pl-fe/src/queries/account-lists/use-follows.ts b/packages/pl-fe/src/queries/account-lists/use-follows.ts
index 04f5c4788..29ae0be5c 100644
--- a/packages/pl-fe/src/queries/account-lists/use-follows.ts
+++ b/packages/pl-fe/src/queries/account-lists/use-follows.ts
@@ -23,12 +23,8 @@ const useFollowing = makePaginatedResponseQuery(
);
const useSubscribers = makePaginatedResponseQuery(
- (accountId?: string, includeExpired?: boolean) => [
- 'accountsLists',
- 'subscribers',
- accountId,
- includeExpired || false,
- ],
+ (accountId?: string, includeExpired?: boolean) =>
+ queryKeys.accountsLists.subscribers(accountId!, includeExpired ?? false),
(client, [accountId, includeExpired]) =>
client.accounts
.getAccountSubscribers(accountId!, {
diff --git a/packages/pl-fe/src/queries/admin/use-accounts.ts b/packages/pl-fe/src/queries/admin/use-accounts.ts
index 28f3c1e9c..f5ce21381 100644
--- a/packages/pl-fe/src/queries/admin/use-accounts.ts
+++ b/packages/pl-fe/src/queries/admin/use-accounts.ts
@@ -26,11 +26,8 @@ import type {
} from 'pl-api';
const useAdminAccounts = makePaginatedResponseQuery(
- (params: Omit) => [
- 'admin',
- 'accountLists',
- params,
- ],
+ (params: Omit) =>
+ queryKeys.admin.accountLists.show(params),
(client, [params]) => client.admin.accounts.getAccounts(params).then(minifyAdminAccountList),
undefined,
'isAdmin',
diff --git a/packages/pl-fe/src/queries/conversations/use-conversations.ts b/packages/pl-fe/src/queries/conversations/use-conversations.ts
index e40b582fb..3d5cceeae 100644
--- a/packages/pl-fe/src/queries/conversations/use-conversations.ts
+++ b/packages/pl-fe/src/queries/conversations/use-conversations.ts
@@ -105,7 +105,7 @@ const useMarkConversationRead = (conversationId: string) => {
const previous = queryClient.getQueryData(queryKeys.conversations.all);
- updatePaginatedResponse(queryKeys.conversations.all, (items) =>
+ updatePaginatedResponse(queryKeys.conversations.all, (items) =>
items.map((item) => (item.id === conversationId ? { ...item, unread: false } : item)),
);
diff --git a/packages/pl-fe/src/queries/events/use-event-participation-requests.ts b/packages/pl-fe/src/queries/events/use-event-participation-requests.ts
index 318f8d63d..8506c01e7 100644
--- a/packages/pl-fe/src/queries/events/use-event-participation-requests.ts
+++ b/packages/pl-fe/src/queries/events/use-event-participation-requests.ts
@@ -25,13 +25,9 @@ const minifyRequestList = (
},
);
-type MinifiedRequestList = ReturnType;
-type MinifiedRequest = MinifiedRequestList['items'][0];
-
const removeRequest = (statusId: string, accountId: string) =>
- updatePaginatedResponse(
- queryKeys.accountsLists.eventParticipationRequests(statusId),
- (items) => items.filter(({ account_id }) => account_id !== accountId),
+ updatePaginatedResponse(queryKeys.accountsLists.eventParticipationRequests(statusId), (items) =>
+ items.filter(({ account_id }) => account_id !== accountId),
);
const useEventParticipationRequests = makePaginatedResponseQuery(
diff --git a/packages/pl-fe/src/queries/utils/make-paginated-response-query-options.ts b/packages/pl-fe/src/queries/utils/make-paginated-response-query-options.ts
index cc48f0c01..04e866dc9 100644
--- a/packages/pl-fe/src/queries/utils/make-paginated-response-query-options.ts
+++ b/packages/pl-fe/src/queries/utils/make-paginated-response-query-options.ts
@@ -1,4 +1,9 @@
-import { type InfiniteData, infiniteQueryOptions, type QueryKey } from '@tanstack/react-query';
+import {
+ type DataTag,
+ type InfiniteData,
+ infiniteQueryOptions,
+ type QueryKey,
+} from '@tanstack/react-query';
import { getClient } from '@/api';
@@ -16,7 +21,9 @@ const makePaginatedResponseQueryOptions =
IsArray extends boolean = true,
T3 = PaginatedResponseQueryResult,
>(
- queryKey: QueryKey | ((...params: T1) => QueryKey),
+ queryKey:
+ | DataTag>>
+ | ((...params: T1) => DataTag>>),
queryFn: (client: PlApiClient, params: T1) => Promise>,
select?: (data: InfiniteData>) => T3,
) =>
diff --git a/packages/pl-fe/src/queries/utils/make-paginated-response-query.ts b/packages/pl-fe/src/queries/utils/make-paginated-response-query.ts
index 61e5bebbe..4fda81d16 100644
--- a/packages/pl-fe/src/queries/utils/make-paginated-response-query.ts
+++ b/packages/pl-fe/src/queries/utils/make-paginated-response-query.ts
@@ -1,4 +1,9 @@
-import { type InfiniteData, type QueryKey, useInfiniteQuery } from '@tanstack/react-query';
+import {
+ type DataTag,
+ type InfiniteData,
+ type QueryKey,
+ useInfiniteQuery,
+} from '@tanstack/react-query';
import { useClient } from '@/hooks/use-client';
import { useOwnAccount } from '@/hooks/use-own-account';
@@ -23,7 +28,9 @@ const makePaginatedResponseQuery =
IsArray extends boolean = true,
T3 = PaginatedResponseQueryResult,
>(
- queryKey: QueryKey | ((...params: T1) => QueryKey),
+ queryKey:
+ | DataTag>>
+ | ((...params: T1) => DataTag>>),
queryFn: (client: PlApiClient, params: T1) => Promise>,
select?: (data: InfiniteData>) => T3,
enabled?: ((...params: T1) => boolean) | 'isLoggedIn' | 'isAdmin',
diff --git a/packages/pl-fe/src/queries/utils/update-paginated-response.ts b/packages/pl-fe/src/queries/utils/update-paginated-response.ts
index 64aceb50e..ec920251e 100644
--- a/packages/pl-fe/src/queries/utils/update-paginated-response.ts
+++ b/packages/pl-fe/src/queries/utils/update-paginated-response.ts
@@ -1,21 +1,31 @@
import { queryClient } from '@/queries/client';
-import type { InfiniteData, QueryKey } from '@tanstack/react-query';
+import type { DataTag, InfiniteData, QueryKey } from '@tanstack/react-query';
import type { PaginatedResponse } from 'pl-api';
-const updatePaginatedResponse = (
- queryKey: QueryKey,
- updater: (items: PaginatedResponse['items']) => PaginatedResponse['items'],
+type InferPaginatedItem =
+ TKey extends DataTag>> ? U : never;
+
+const updatePaginatedResponse = <
+ TKey extends DataTag>>,
+>(
+ queryKey: TKey,
+ updater: (
+ items: PaginatedResponse>['items'],
+ ) => PaginatedResponse>['items'],
) =>
- queryClient.setQueryData>>(queryKey, (data) => {
- if (!data) return undefined;
- return {
- ...data,
- pages: data.pages.map((page) => ({
- ...page,
- items: updater(page.items),
- })),
- };
- });
+ queryClient.setQueryData>>>(
+ queryKey,
+ (data) => {
+ if (!data) return undefined;
+ return {
+ ...data,
+ pages: data.pages.map((page) => ({
+ ...page,
+ items: updater(page.items),
+ })),
+ };
+ },
+ );
export { updatePaginatedResponse };