Refactor schedule functionality in frontend
- Extract schedule logic into custom useSchedule hook - Update BlocklistScheduleSection to use the new hook - Add tests for useSchedule hook - Update documentation with task progress Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -17,12 +17,13 @@ const DAYS = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
|
||||
interface ScheduleSectionProps {
|
||||
onRunImport: () => void;
|
||||
runImportRunning: boolean;
|
||||
importLastResult?: unknown;
|
||||
}
|
||||
|
||||
export function BlocklistScheduleSection({ onRunImport, runImportRunning }: ScheduleSectionProps): React.JSX.Element {
|
||||
export function BlocklistScheduleSection({ onRunImport, runImportRunning, importLastResult }: ScheduleSectionProps): React.JSX.Element {
|
||||
const styles = useBlocklistStyles();
|
||||
const sectionStyles = useCommonSectionStyles();
|
||||
const { info, loading, error, saveSchedule } = useSchedule();
|
||||
const { info, loading, error, saveSchedule, refresh } = useSchedule();
|
||||
const [saving, setSaving] = useState(false);
|
||||
const [saveMsg, setSaveMsg] = useState<string | null>(null);
|
||||
const saveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||
@@ -46,6 +47,7 @@ export function BlocklistScheduleSection({ onRunImport, runImportRunning }: Sche
|
||||
setSaving(true);
|
||||
saveSchedule(draft)
|
||||
.then(() => {
|
||||
refresh();
|
||||
setSaveMsg("Schedule saved.");
|
||||
setSaving(false);
|
||||
saveTimeoutRef.current = setTimeout(() => {
|
||||
@@ -57,7 +59,13 @@ export function BlocklistScheduleSection({ onRunImport, runImportRunning }: Sche
|
||||
setSaveMsg(err instanceof Error ? err.message : "Failed to save schedule");
|
||||
setSaving(false);
|
||||
});
|
||||
}, [draft, saveSchedule]);
|
||||
}, [draft, saveSchedule, refresh]);
|
||||
|
||||
useEffect(() => {
|
||||
if (importLastResult) {
|
||||
refresh();
|
||||
}
|
||||
}, [importLastResult, refresh]);
|
||||
|
||||
useEffect(() => {
|
||||
return (): void => {
|
||||
|
||||
Reference in New Issue
Block a user