MCPcopy Create free account
hub / github.com/callumalpass/tasknotes / installBasesConfigRefreshHook

Function installBasesConfigRefreshHook

src/bases/basesRefreshLifecycle.ts:56–95  ·  view source on GitHub ↗
({
	controller,
	view,
	isConnected,
	refresh,
	scheduleTimeout,
}: InstallBasesConfigRefreshHookOptions)

Source from the content-addressed store, hash-verified

54}
55
56export function installBasesConfigRefreshHook({
57 controller,
58 view,
59 isConnected,
60 refresh,
61 scheduleTimeout,
62}: InstallBasesConfigRefreshHookOptions): (() => void) | null {
63 if (!isRecord(controller) || typeof controller.onConfigChanged !== "function") {
64 return null;
65 }
66
67 const basesController = controller as BasesConfigRefreshController;
68 const originalOnConfigChanged = basesController.onConfigChanged;
69 if (!originalOnConfigChanged) {
70 return null;
71 }
72
73 const refreshIfCurrentView = () => {
74 if (basesController.view && basesController.view !== view) {
75 return;
76 }
77 if (!isConnected()) {
78 return;
79 }
80 refresh();
81 };
82
83 const wrappedOnConfigChanged = (...args: unknown[]): unknown => {
84 const result = originalOnConfigChanged.apply(basesController, args);
85 scheduleConfigRefreshAfterResult(result, refreshIfCurrentView, scheduleTimeout);
86 return result;
87 };
88
89 basesController.onConfigChanged = wrappedOnConfigChanged;
90 return () => {
91 if (basesController.onConfigChanged === wrappedOnConfigChanged) {
92 basesController.onConfigChanged = originalOnConfigChanged;
93 }
94 };
95}
96
97export function scheduleBasesDataUpdateRender({
98 currentTimer,

Callers 2

setupConfigChangeHookFunction · 0.90

Calls 1

isRecordFunction · 0.70

Tested by

no test coverage detected