fix(setup): refresh usage state after accepting consent

This commit is contained in:
Paul Nothaft
2026-09-08 17:25:20 +02:00
parent 9168bdd504
commit a5f7b38e02
2 changed files with 7 additions and 3 deletions
+3 -2
View File
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { Navigate, useNavigate } from 'react-router-dom';
import { useQuery } from '@tanstack/react-query';
import { useQuery, useQueryClient } from '@tanstack/react-query';
import { Key, Mail, Lock, Eye, EyeOff, AlertCircle, ArrowLeft, ArrowRight, Copy, Check, ExternalLink, Bug, Lightbulb, Star, Coffee, ShieldOff, Users, MessageSquare } from 'lucide-react';
import type { LucideIcon } from 'lucide-react';
import { toast } from 'react-toastify';
@@ -73,6 +73,7 @@ export const SetupPage: React.FC = () => {
const { t } = useTranslation();
const navigate = useNavigate();
const { login } = useAdminAuth();
const queryClient = useQueryClient();
const { data: status, isLoading: statusLoading, isError: statusError } = useQuery({
queryKey: ['setup-status'],
@@ -300,7 +301,7 @@ export const SetupPage: React.FC = () => {
const enableUsageReporting = async () => {
setIsEnablingUsageReporting(true);
try {
await productUsageService.enable();
queryClient.setQueryData(['productUsage'], await productUsageService.enable());
toast.success(t('setup.usageReporting.enabled'));
} catch {
toast.warn(t('setup.usageReporting.enableFailed'));
@@ -43,8 +43,10 @@ beforeEach(() => {
});
afterEach(cleanup);
let client: QueryClient;
async function reachInvitation() {
render(<QueryClientProvider client={new QueryClient({ defaultOptions: { queries: { retry: false } } })}>
client = new QueryClient({ defaultOptions: { queries: { retry: false } } });
render(<QueryClientProvider client={client}>
<MemoryRouter><SetupPage /></MemoryRouter>
</QueryClientProvider>);
fireEvent.change(await screen.findByLabelText('setup.tokenLabel'), { target: { value: 'test-token' } });
@@ -82,6 +84,7 @@ it('uses the full settings disclosure and configured collector before accepting
fireEvent.click(dialog.getByRole('button', { name: 'productUsage.enable' }));
await screen.findByText('setup.community.mission');
expect(usage.enable).toHaveBeenCalledTimes(1);
expect(client.getQueryData(['productUsage'])).toMatchObject({ status: 'active' });
});
it('skipping the invitation never enables reporting', async () => {