* BasesView lifecycle: Called when Bases data changes. * Required abstract method implementation. * Debounced to prevent excessive re-renders during rapid file saves.
()
| 182 | * Debounced to prevent excessive re-renders during rapid file saves. |
| 183 | */ |
| 184 | onDataUpdated(): void { |
| 185 | // Skip if view is not visible |
| 186 | if (!this.rootElement?.isConnected) { |
| 187 | return; |
| 188 | } |
| 189 | |
| 190 | this.dataUpdateDebounceTimer = scheduleBasesDataUpdateRender({ |
| 191 | currentTimer: this.dataUpdateDebounceTimer, |
| 192 | scheduler: this.getTimeoutScheduler(), |
| 193 | isConnected: () => Boolean(this.rootElement?.isConnected), |
| 194 | beforeRender: () => this.updateRelevantPathsCache(), |
| 195 | render: async () => { |
| 196 | const savedState = this.getEphemeralState(); |
| 197 | try { |
| 198 | await this.render(); |
| 199 | } finally { |
| 200 | this.setEphemeralState(savedState); |
| 201 | } |
| 202 | }, |
| 203 | onTimerCleared: () => { |
| 204 | this.dataUpdateDebounceTimer = null; |
| 205 | }, |
| 206 | onRenderError: (error) => { |
| 207 | this.logger.error("Render error during data update", { |
| 208 | category: "internal", |
| 209 | operation: "data-update-render", |
| 210 | error, |
| 211 | }); |
| 212 | this.renderError(error as Error); |
| 213 | }, |
| 214 | delayMs: 500, |
| 215 | }); |
| 216 | } |
| 217 | |
| 218 | /** |
| 219 | * Update the cache of relevant paths for efficient update checking. |
nothing calls this directly
no test coverage detected