first commit

This commit is contained in:
2025-11-01 09:24:26 +08:00
commit 6516d8dc78
87 changed files with 7558 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
import { useQuery } from '@tanstack/vue-query';
import { apiClient } from '../lib/api/client';
export interface NotificationStatus {
secretConfigured: boolean;
secretHint: string | null;
webhookSecret: string | null;
packageWhitelist: string[];
ingestedCount: number;
lastNotificationAt: string | null;
ingestEndpoint: string;
}
const initialStatus: NotificationStatus = {
secretConfigured: false,
secretHint: null,
webhookSecret: null,
packageWhitelist: [],
ingestedCount: 0,
lastNotificationAt: null,
ingestEndpoint: 'http://localhost:4000/api/transactions/notification'
};
export function useNotificationStatusQuery() {
return useQuery<NotificationStatus>({
queryKey: ['notification-status'],
queryFn: async () => {
try {
const { data } = await apiClient.get('/notifications/status');
return data as NotificationStatus;
} catch (error) {
console.warn('[notifications] using fallback status', error);
return initialStatus;
}
},
initialData: initialStatus,
staleTime: 30_000
});
}