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 };