feat: support concurrent Reddit accounts

This commit is contained in:
jjbrunton committed 2026-08-08 19:00:38 +01:00
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);
},
});
}