pl-api: kmyblue antennas work
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
@ -5445,7 +5445,7 @@ class PlApiClient {
|
||||
/**
|
||||
* Requires features{@link Features.antennas}.
|
||||
*/
|
||||
getAntennaAccounts: async (antennaId: string) =>
|
||||
getAntennaAccounts: async (antennaId: string) =>
|
||||
this.#paginatedGet(`/api/v1/antennas/${antennaId}/accounts`, {}, accountSchema),
|
||||
|
||||
/**
|
||||
@ -5475,13 +5475,13 @@ class PlApiClient {
|
||||
/**
|
||||
* Requires features{@link Features.antennas}.
|
||||
*/
|
||||
getAntennaExcludeAccounts: async (antennaId: string) =>
|
||||
getAntennaExcludedAccounts: async (antennaId: string) =>
|
||||
this.#paginatedGet(`/api/v1/antennas/${antennaId}/exclude_accounts`, {}, accountSchema),
|
||||
|
||||
/**
|
||||
* Requires features{@link Features.antennas}.
|
||||
*/
|
||||
addAntennaExcludeAccounts: async (antennaId: string, accountIds: Array<string>) => {
|
||||
addAntennaExcludedAccounts: async (antennaId: string, accountIds: Array<string>) => {
|
||||
const response = await this.request<{}>(`/api/v1/antennas/${antennaId}/exclude_accounts`, {
|
||||
method: 'POST',
|
||||
body: { account_ids: accountIds },
|
||||
@ -5493,7 +5493,7 @@ class PlApiClient {
|
||||
/**
|
||||
* Requires features{@link Features.antennas}.
|
||||
*/
|
||||
removeAntennaExcludeAccounts: async (antennaId: string, accountIds: Array<string>) => {
|
||||
removeAntennaExcludedAccounts: async (antennaId: string, accountIds: Array<string>) => {
|
||||
const response = await this.request<{}>(`/api/v1/antennas/${antennaId}/exclude_accounts`, {
|
||||
method: 'DELETE',
|
||||
body: { account_ids: accountIds },
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
export * from './accounts';
|
||||
export * from './admin';
|
||||
export * from './antennas';
|
||||
export * from './apps';
|
||||
export * from './chats';
|
||||
export * from './circles';
|
||||
|
||||
134
packages/pl-fe/src/queries/accounts/use-antennas.ts
Normal file
134
packages/pl-fe/src/queries/accounts/use-antennas.ts
Normal file
@ -0,0 +1,134 @@
|
||||
import { type InfiniteData, useMutation, useQuery } from '@tanstack/react-query';
|
||||
|
||||
import { useClient } from 'pl-fe/hooks/use-client';
|
||||
import { useFeatures } from 'pl-fe/hooks/use-features';
|
||||
|
||||
import { queryClient } from '../client';
|
||||
import { filterById } from '../utils/filter-id';
|
||||
import { makePaginatedResponseQuery } from '../utils/make-paginated-response-query';
|
||||
import { minifyAccountList } from '../utils/minify-list';
|
||||
|
||||
import type { Antenna, PaginatedResponse, CreateAntennaParams, UpdateAntennaParams } from 'pl-api';
|
||||
|
||||
const useAntennas = <T>(
|
||||
select?: ((data: Array<Antenna>) => T),
|
||||
) => {
|
||||
const client = useClient();
|
||||
const features = useFeatures();
|
||||
|
||||
return useQuery({
|
||||
queryKey: ['antennas'],
|
||||
queryFn: () => client.antennas.fetchAntennas(),
|
||||
enabled: features.antennas,
|
||||
select,
|
||||
});
|
||||
};
|
||||
|
||||
const useAntenna = (antennaId?: string) => useAntennas((data) => antennaId ? data.find(antenna => antenna.id === antennaId) : undefined);
|
||||
|
||||
const useCreateAntenna = () => {
|
||||
const client = useClient();
|
||||
|
||||
return useMutation({
|
||||
mutationKey: ['antennas', 'create'],
|
||||
mutationFn: (params: CreateAntennaParams) => client.antennas.createAntenna(params),
|
||||
onSettled: () => queryClient.invalidateQueries({ queryKey: ['antennas'] }),
|
||||
});
|
||||
};
|
||||
|
||||
const useDeleteAntenna = () => {
|
||||
const client = useClient();
|
||||
|
||||
return useMutation({
|
||||
mutationKey: ['antennas', 'delete'],
|
||||
mutationFn: (antennaId: string) => client.antennas.deleteAntenna(antennaId),
|
||||
onSuccess: (_, deletedAntennaId) => {
|
||||
queryClient.setQueryData<Array<Antenna>>(
|
||||
['antennas'],
|
||||
(prevData) => prevData?.filter(({ id }) => id !== deletedAntennaId),
|
||||
);
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const useUpdateAntenna = (antennaId: string) => {
|
||||
const client = useClient();
|
||||
|
||||
return useMutation({
|
||||
mutationKey: ['antennas', 'update', antennaId],
|
||||
mutationFn: (params: UpdateAntennaParams) => client.antennas.updateAntenna(antennaId, params),
|
||||
onSettled: () => queryClient.invalidateQueries({ queryKey: ['antennas'] }),
|
||||
});
|
||||
};
|
||||
|
||||
const useAntennaAccounts = makePaginatedResponseQuery(
|
||||
(antennaId: string) => ['accountsLists', 'antennas', antennaId],
|
||||
(client, [antennaId]) => client.antennas.getAntennaAccounts(antennaId).then(minifyAccountList),
|
||||
);
|
||||
|
||||
const useAddAccountsToAntenna = (antennaId: string) => {
|
||||
const client = useClient();
|
||||
|
||||
return useMutation({
|
||||
mutationKey: ['accountsLists', 'antennas', antennaId, 'add'],
|
||||
mutationFn: (accountIds: Array<string>) => client.antennas.addAntennaAccounts(antennaId, accountIds),
|
||||
onSettled: (_, __, accountIds) => {
|
||||
queryClient.invalidateQueries({ queryKey: ['accountsLists', 'antennas', antennaId] });
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const useRemoveAccountsFromAntenna = (antennaId: string) => {
|
||||
const client = useClient();
|
||||
|
||||
return useMutation({
|
||||
mutationKey: ['accountsLists', 'antennas', antennaId, 'remove'],
|
||||
mutationFn: (accountIds: Array<string>) => client.antennas.removeAntennaAccounts(antennaId, accountIds),
|
||||
onSettled: (_, __, accountIds) => {
|
||||
queryClient.setQueryData<InfiniteData<PaginatedResponse<string>>>(['accountsLists', 'antennas', antennaId], filterById(accountIds));
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const useAntennaExcludedAccounts = makePaginatedResponseQuery(
|
||||
(antennaId: string) => ['accountsLists', 'antennas', antennaId, 'excluded'],
|
||||
(client, [antennaId]) => client.antennas.getAntennaExcludedAccounts(antennaId).then(minifyAccountList),
|
||||
);
|
||||
|
||||
const useAddExcludedAccountsToAntenna = (antennaId: string) => {
|
||||
const client = useClient();
|
||||
|
||||
return useMutation({
|
||||
mutationKey: ['accountsLists', 'antennas', antennaId, 'addExcluded'],
|
||||
mutationFn: (accountIds: Array<string>) => client.antennas.addAntennaExcludedAccounts(antennaId, accountIds),
|
||||
onSettled: (_, __, accountIds) => {
|
||||
queryClient.invalidateQueries({ queryKey: ['accountsLists', 'antennas', antennaId] });
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const useRemoveExcludedAccountsFromAntenna = (antennaId: string) => {
|
||||
const client = useClient();
|
||||
|
||||
return useMutation({
|
||||
mutationKey: ['accountsLists', 'antennas', antennaId, 'removeExcluded'],
|
||||
mutationFn: (accountIds: Array<string>) => client.antennas.removeAntennaExcludedAccounts(antennaId, accountIds),
|
||||
onSettled: (_, __, accountIds) => {
|
||||
queryClient.setQueryData<InfiniteData<PaginatedResponse<string>>>(['accountsLists', 'antennas', antennaId], filterById(accountIds));
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
export {
|
||||
useAntennas,
|
||||
useAntenna,
|
||||
useCreateAntenna,
|
||||
useDeleteAntenna,
|
||||
useUpdateAntenna,
|
||||
useAntennaAccounts,
|
||||
useAddAccountsToAntenna,
|
||||
useRemoveAccountsFromAntenna,
|
||||
useAntennaExcludedAccounts,
|
||||
useAddExcludedAccountsToAntenna,
|
||||
useRemoveExcludedAccountsFromAntenna,
|
||||
};
|
||||
Reference in New Issue
Block a user