From 5fbcf520a81bca01f0c1903ffdbcce427e026c54 Mon Sep 17 00:00:00 2001 From: Silvano Cerza Date: Tue, 14 Jan 2025 18:33:37 +0100 Subject: [PATCH] Remove even more dead code --- .../listener.ts => events-listener.ts} | 28 +-------- src/events/queue.ts | 60 ------------------- src/events/types.ts | 13 ---- src/sync-manager.ts | 2 +- 4 files changed, 2 insertions(+), 101 deletions(-) rename src/{events/listener.ts => events-listener.ts} (86%) delete mode 100644 src/events/queue.ts delete mode 100644 src/events/types.ts diff --git a/src/events/listener.ts b/src/events-listener.ts similarity index 86% rename from src/events/listener.ts rename to src/events-listener.ts index 02ef940..06e16cb 100644 --- a/src/events/listener.ts +++ b/src/events-listener.ts @@ -1,14 +1,10 @@ import { Vault, TAbstractFile, TFolder, TFile } from "obsidian"; -import { Event } from "./types"; -import MetadataStore from "../metadata-store"; -import EventsQueue from "./queue"; +import MetadataStore from "./metadata-store"; /** * Tracks changes to local sync directory and updates files metadata. */ export default class EventsListener { - private eventsQueue: EventsQueue = new EventsQueue(); - constructor( private vault: Vault, private metadataStore: MetadataStore, @@ -23,13 +19,6 @@ export default class EventsListener { this.vault.on("rename", this.onRename.bind(this)); } - /** - * Returns and empties the events queue. - */ - flush(): Event[] { - return this.eventsQueue.flush(); - } - private async onCreate(file: TAbstractFile) { if (!this.isSyncable(file.path)) { // The file has not been created in directory that we're syncing with GitHub @@ -70,10 +59,6 @@ export default class EventsListener { lastModified: Date.now(), }; await this.metadataStore.save(); - this.eventsQueue.enqueue({ - type: "create", - file: file as TFile, - }); } private async onDelete(file: TAbstractFile | string) { @@ -90,13 +75,6 @@ export default class EventsListener { this.metadataStore.data.files[filePath].deleted = true; this.metadataStore.data.files[filePath].deletedAt = Date.now(); await this.metadataStore.save(); - // We don't delete metadata as we need that info when calling the API - // to delete the file. - // We'll delete them later. - this.eventsQueue.enqueue({ - type: "delete", - filePath: filePath, - }); } private async onModify(file: TAbstractFile) { @@ -119,10 +97,6 @@ export default class EventsListener { this.metadataStore.data.files[file.path].lastModified = Date.now(); this.metadataStore.data.files[file.path].dirty = true; await this.metadataStore.save(); - this.eventsQueue.enqueue({ - type: "modify", - file: file as TFile, - }); } private async onRename(file: TAbstractFile, oldPath: string) { diff --git a/src/events/queue.ts b/src/events/queue.ts deleted file mode 100644 index ee4d825..0000000 --- a/src/events/queue.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { Event, CreateModifyEvent, DeleteEvent } from "./types"; - -/** - * A custom queue to better handle events. - */ -export default class EventsQueue { - private eventsQueue: Map = new Map(); - - /** - * Enqueues an event in the queue. - * Handles special cases when the previous event and the new one - * would cancel themselves out. - */ - enqueue(event: Event) { - const filePath = event.type === "delete" ? event.filePath : event.file.path; - if (!this.eventsQueue.has(filePath)) { - // No other event exist for this file, just enqueue it - this.eventsQueue.set(filePath, event); - return; - } - - if ( - this.eventsQueue.get(filePath)?.type === "create" && - event.type === "delete" - ) { - // The previous event was a create and the new one is a delete. - // Just delete the previous one as they would amount to the same outcome. - this.eventsQueue.delete(filePath); - } else if ( - this.eventsQueue.get(filePath)?.type === "delete" && - event.type === "create" - ) { - // The old event was a delete and the new one is a create. - // Delete the old one and enqueue a modify event as it likely - // that the content changed. - this.eventsQueue.delete(filePath); - this.eventsQueue.set(filePath, { - type: "modify", - file: event.file, - }); - } else { - // Delete and enqueue the event in all other cases. - // We first delete the event to change the order of the queue - this.eventsQueue.delete(filePath); - this.eventsQueue.set(filePath, event); - } - } - - /** - * Returns and empties the events queue. - */ - flush(): Event[] { - const events: Event[] = []; - this.eventsQueue.forEach((event) => { - events.push(event); - }); - this.eventsQueue.clear(); - return events; - } -} diff --git a/src/events/types.ts b/src/events/types.ts deleted file mode 100644 index d3a8f29..0000000 --- a/src/events/types.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TFile } from "obsidian"; - -export type CreateModifyEvent = { - type: "create" | "modify"; - file: TFile; -}; - -export type DeleteEvent = { - type: "delete"; - filePath: string; -}; - -export type Event = CreateModifyEvent | DeleteEvent; diff --git a/src/sync-manager.ts b/src/sync-manager.ts index 2d8e409..ae5325a 100644 --- a/src/sync-manager.ts +++ b/src/sync-manager.ts @@ -4,7 +4,7 @@ import GithubClient, { NewTreeRequestItem, } from "./github/client"; import MetadataStore, { FileMetadata, Metadata } from "./metadata-store"; -import EventsListener from "./events/listener"; +import EventsListener from "./events-listener"; import { GitHubSyncSettings } from "./settings/settings"; interface SyncAction {