mirror of
https://github.com/zadam/trilium.git
synced 2026-03-09 16:04:48 +01:00
chore(client/save_indicator): address requested changes
This commit is contained in:
parent
42283b2469
commit
02e08fdf12
@ -80,12 +80,12 @@ export default class SpacedUpdate {
|
|||||||
try {
|
try {
|
||||||
await this.updater();
|
await this.updater();
|
||||||
this.stateCallback?.("saved");
|
this.stateCallback?.("saved");
|
||||||
|
this.changed = false;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.stateCallback?.("error");
|
this.stateCallback?.("error");
|
||||||
logError(getErrorMessage(e));
|
logError(getErrorMessage(e));
|
||||||
}
|
}
|
||||||
this.lastUpdated = Date.now();
|
this.lastUpdated = Date.now();
|
||||||
this.changed = false;
|
|
||||||
} else {
|
} else {
|
||||||
// update isn't triggered but changes are still pending, so we need to schedule another check
|
// update isn't triggered but changes are still pending, so we need to schedule another check
|
||||||
this.scheduleUpdate();
|
this.scheduleUpdate();
|
||||||
|
|||||||
@ -113,30 +113,30 @@ export function SaveStatusBadge() {
|
|||||||
const saveState = useGetContextData("saveState");
|
const saveState = useGetContextData("saveState");
|
||||||
if (!saveState) return;
|
if (!saveState) return;
|
||||||
|
|
||||||
let icon: string;
|
const stateConfig = {
|
||||||
let title: string;
|
saved: {
|
||||||
let tooltip: string | undefined;
|
icon: "bx bx-check",
|
||||||
switch (saveState?.state) {
|
title: t("breadcrumb_badges.save_status_saved"),
|
||||||
case "saved":
|
tooltip: undefined
|
||||||
icon = "bx bx-check";
|
},
|
||||||
title = t("breadcrumb_badges.save_status_saved");
|
saving: {
|
||||||
break;
|
icon: "bx bx-loader bx-spin",
|
||||||
case "saving":
|
title: t("breadcrumb_badges.save_status_saving"),
|
||||||
icon = "bx bx-loader bx-spin";
|
tooltip: t("breadcrumb_badges.save_status_saving_tooltip")
|
||||||
title = t("breadcrumb_badges.save_status_saving");
|
},
|
||||||
tooltip = t("breadcrumb_badges.save_status_saving_tooltip");
|
unsaved: {
|
||||||
break;
|
icon: "bx bx-pencil",
|
||||||
case "unsaved":
|
title: t("breadcrumb_badges.save_status_unsaved"),
|
||||||
icon = "bx bx-pencil";
|
tooltip: t("breadcrumb_badges.save_status_unsaved_tooltip")
|
||||||
title = t("breadcrumb_badges.save_status_unsaved");
|
},
|
||||||
tooltip = t("breadcrumb_badges.save_status_unsaved_tooltip");
|
error: {
|
||||||
break;
|
icon: "bx bxs-error",
|
||||||
case "error":
|
title: t("breadcrumb_badges.save_status_error"),
|
||||||
icon = "bx bxs-error";
|
tooltip: t("breadcrumb_badges.save_status_error_tooltip")
|
||||||
title = t("breadcrumb_badges.save_status_error");
|
}
|
||||||
tooltip = t("breadcrumb_badges.save_status_error_tooltip");
|
};
|
||||||
break;
|
|
||||||
}
|
const { icon, title, tooltip } = stateConfig[saveState.state];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Badge
|
<Badge
|
||||||
|
|||||||
@ -65,10 +65,11 @@ export function useTriliumEvents<T extends EventNames>(eventNames: T[], handler:
|
|||||||
|
|
||||||
export function useSpacedUpdate(callback: () => void | Promise<void>, interval = 1000, stateCallback?: StateCallback) {
|
export function useSpacedUpdate(callback: () => void | Promise<void>, interval = 1000, stateCallback?: StateCallback) {
|
||||||
const callbackRef = useRef(callback);
|
const callbackRef = useRef(callback);
|
||||||
|
const stateCallbackRef = useRef(stateCallback);
|
||||||
const spacedUpdateRef = useRef<SpacedUpdate>(new SpacedUpdate(
|
const spacedUpdateRef = useRef<SpacedUpdate>(new SpacedUpdate(
|
||||||
() => callbackRef.current(),
|
() => callbackRef.current(),
|
||||||
interval,
|
interval,
|
||||||
stateCallback
|
(state) => stateCallbackRef.current?.(state)
|
||||||
));
|
));
|
||||||
|
|
||||||
// Update callback ref when it changes
|
// Update callback ref when it changes
|
||||||
@ -76,6 +77,11 @@ export function useSpacedUpdate(callback: () => void | Promise<void>, interval =
|
|||||||
callbackRef.current = callback;
|
callbackRef.current = callback;
|
||||||
}, [callback]);
|
}, [callback]);
|
||||||
|
|
||||||
|
// Update state callback when it changes.
|
||||||
|
useEffect(() => {
|
||||||
|
stateCallbackRef.current = stateCallback;
|
||||||
|
}, [ stateCallback ]);
|
||||||
|
|
||||||
// Update interval if it changes
|
// Update interval if it changes
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
spacedUpdateRef.current?.setUpdateInterval(interval);
|
spacedUpdateRef.current?.setUpdateInterval(interval);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user