Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 3 additions & 7 deletions src/Frontend/src/composables/useAuditStoreAutoRefresh.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
import { useAuditStore } from "@/stores/AuditStore";
import { useStoreAutoRefresh } from "./useAutoRefresh";

// Override the refresh method to use checkForSuccessfulMessages, which is more lightweight
const useAuditStoreWithRefresh = () => {
const store = useAuditStore();
return Object.assign(store, { refresh: store.checkForSuccessfulMessages });
};

export default useStoreAutoRefresh("auditStoreSuccessfulMessages", useAuditStoreWithRefresh, 5000).autoRefresh;
// Use checkForSuccessfulMessages for auto-refresh (lightweight) via customRefresh
// instead of mutating the store's refresh method, which would break AuditList's full fetch
export default useStoreAutoRefresh("auditStoreSuccessfulMessages", useAuditStore, 5000, (store) => store.checkForSuccessfulMessages()).autoRefresh;
5 changes: 3 additions & 2 deletions src/Frontend/src/composables/useAutoRefresh.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,15 @@ function useAutoRefresh(name: string, refresh: () => Promise<void>, intervalMs:
* @param name - Name for logging purposes
* @param useStore - Function that returns the Pinia store (called within component lifecycle)
* @param intervalMs - Refresh interval in milliseconds
* @param customRefresh - Optional custom refresh function. When provided, this is called instead of store.refresh() during auto-refresh, avoiding the need to mutate the store.
* @returns A composable function that sets up auto-refresh and returns the store. Also provides a method to update the refresh interval and a ref indicating when a refresh is happening
*/
export function useStoreAutoRefresh<TStore extends { refresh: () => Promise<void> }>(name: string, useStore: () => TStore, intervalMs: number) {
export function useStoreAutoRefresh<TStore extends { refresh: () => Promise<void> }>(name: string, useStore: () => TStore, intervalMs: number, customRefresh?: (store: TStore) => Promise<void>) {
const refresh = () => {
if (!store) {
return Promise.resolve();
}
return store.refresh();
return customRefresh ? customRefresh(store) : store.refresh();
};
let store: TStore | null = null;
const { refresh: autoRefresh, isRefreshing, updateInterval } = useAutoRefresh(name, refresh, intervalMs);
Expand Down
Loading