first commit
This commit is contained in:
39
apps/frontend/src/composables/useNotifications.ts
Normal file
39
apps/frontend/src/composables/useNotifications.ts
Normal 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
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user