From 6d32e51c3e99d62fc2496ef357e2a369e9553ffb Mon Sep 17 00:00:00 2001 From: Andras Schmelczer Date: Thu, 2 Jan 2025 10:58:22 +0000 Subject: [PATCH] Make noop updates hidable --- plugin/src/database/sync-settings.ts | 2 ++ plugin/src/views/history-view.ts | 21 ++++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/plugin/src/database/sync-settings.ts b/plugin/src/database/sync-settings.ts index 2574c814..09ab9469 100644 --- a/plugin/src/database/sync-settings.ts +++ b/plugin/src/database/sync-settings.ts @@ -5,6 +5,7 @@ export interface SyncSettings { fetchChangesUpdateIntervalMs: number; syncConcurrency: number; isSyncEnabled: boolean; + displayNoopSyncEvents: boolean; } export const DEFAULT_SETTINGS: SyncSettings = { @@ -14,4 +15,5 @@ export const DEFAULT_SETTINGS: SyncSettings = { fetchChangesUpdateIntervalMs: 1000, syncConcurrency: 1, isSyncEnabled: false, + displayNoopSyncEvents: false, }; diff --git a/plugin/src/views/history-view.ts b/plugin/src/views/history-view.ts index ed7ead10..3b8281ae 100644 --- a/plugin/src/views/history-view.ts +++ b/plugin/src/views/history-view.ts @@ -1,16 +1,18 @@ import type { WorkspaceLeaf } from "obsidian"; import { ItemView } from "obsidian"; import type { SyncHistory } from "src/tracing/sync-history"; -import { SyncSource } from "src/tracing/sync-history"; +import { SyncSource, SyncStatus } from "src/tracing/sync-history"; import { intlFormatDistance } from "date-fns"; +import { Database } from "src/database/database"; export class HistoryView extends ItemView { - public static readonly TYPE = "example-view"; + public static readonly TYPE = "history-view"; public static readonly ICON = "square-stack"; private timer: NodeJS.Timer | null = null; public constructor( leaf: WorkspaceLeaf, + private readonly database: Database, private readonly history: SyncHistory ) { super(leaf); @@ -33,22 +35,18 @@ export class HistoryView extends ItemView { } } - private static formatTime(timestamp: Date): string { - return intlFormatDistance(timestamp, new Date()); - } - public getViewType(): string { return HistoryView.TYPE; } public getDisplayText(): string { - return "Example view"; + return "VaultLink history"; } public async onOpen(): Promise { await this.updateView(); // eslint-disable-next-line @typescript-eslint/no-misused-promises - this.timer = setInterval(async () => this.updateView(), 500); + this.timer = setInterval(async () => this.updateView(), 1000); } public async onClose(): Promise { @@ -65,6 +63,11 @@ export class HistoryView extends ItemView { this.history .getEntries() .reverse() + .filter( + (entry) => + entry.status !== SyncStatus.NO_OP || + this.database.getSettings().displayNoopSyncEvents + ) .forEach((entry) => { const card = container.createDiv({ cls: ["history-card", entry.status.toLocaleLowerCase()], @@ -77,7 +80,7 @@ export class HistoryView extends ItemView { cls: "history-card-title", }); header.createSpan({ - text: HistoryView.formatTime(entry.timestamp), + text: intlFormatDistance(entry.timestamp, new Date()), cls: "history-card-timestamp", }); card.createEl("p", {