mirror of
https://github.com/nimbold/Firelink.git
synced 2026-07-28 13:00:10 +00:00
27 lines
814 B
TypeScript
27 lines
814 B
TypeScript
import { create } from 'zustand';
|
|
import type { DownloadProgressEvent } from '../bindings/DownloadProgressEvent';
|
|
|
|
interface DownloadProgressState {
|
|
progressMap: Record<string, DownloadProgressEvent>;
|
|
updateDownloadProgress: (id: string, payload: DownloadProgressEvent) => void;
|
|
clearDownloadProgress: (id: string) => void;
|
|
}
|
|
|
|
export const useDownloadProgressStore = create<DownloadProgressState>((set) => ({
|
|
progressMap: {},
|
|
updateDownloadProgress: (id, payload) =>
|
|
set((state) => ({
|
|
progressMap: {
|
|
...state.progressMap,
|
|
[id]: payload,
|
|
},
|
|
})),
|
|
clearDownloadProgress: (id) =>
|
|
set((state) => {
|
|
if (!(id in state.progressMap)) return state;
|
|
const next = { ...state.progressMap };
|
|
delete next[id];
|
|
return { progressMap: next };
|
|
}),
|
|
}));
|