feat: support concurrent Reddit accounts
This commit is contained in:
1 parent
d819a0f1e6
commit
16a31335d0
51 files changed
+3241
-250
No files matched your search
@@ -1,10 +1,11 @@
|
||||
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
|
||||
import type { ConfigResponse } from '../../../../../packages/api-contracts/src/index.js';
|
||||
import { fetchLoginStatus, fetchSettings, importRedditSession, saveSettings } from './settings-api.js';
|
||||
import { fetchLoginStatus, fetchRedditAccounts, fetchSettings, importRedditSession, saveSettings } from './settings-api.js';
|
||||
|
||||
export const settingsQueryKeys = {
|
||||
config: ['dashboard', 'config'] as const,
|
||||
loginStatus: ['dashboard', 'login', 'status'] as const,
|
||||
accounts: ['dashboard', 'reddit-accounts'] as const,
|
||||
};
|
||||
|
||||
export function useSettingsQuery() {
|
||||
@@ -30,12 +31,23 @@ export function useLoginStatusQuery() {
|
||||
return useQuery({ queryKey: settingsQueryKeys.loginStatus, queryFn: fetchLoginStatus });
|
||||
}
|
||||
|
||||
export function useRedditAccountsQuery() {
|
||||
return useQuery({ queryKey: settingsQueryKeys.accounts, queryFn: fetchRedditAccounts });
|
||||
}
|
||||
|
||||
function invalidateAccountContent(queryClient: ReturnType<typeof useQueryClient>) {
|
||||
void queryClient.invalidateQueries({ queryKey: settingsQueryKeys.loginStatus });
|
||||
void queryClient.invalidateQueries({ queryKey: settingsQueryKeys.accounts });
|
||||
void queryClient.invalidateQueries({ queryKey: ['dashboard', 'conversations'] });
|
||||
void queryClient.invalidateQueries({ queryKey: ['dashboard', 'media'] });
|
||||
}
|
||||
|
||||
export function useImportRedditSessionMutation() {
|
||||
const queryClient = useQueryClient();
|
||||
return useMutation({
|
||||
mutationFn: importRedditSession,
|
||||
onSuccess() {
|
||||
void queryClient.invalidateQueries({ queryKey: settingsQueryKeys.loginStatus });
|
||||
invalidateAccountContent(queryClient);
|
||||
},
|
||||
});
|
||||
}
|
||||
Reference in new issue
Block a user