Remove even more dead code

This commit is contained in:
Silvano Cerza 2025-01-14 18:33:37 +01:00
parent 44cc1c6380
commit 5fbcf520a8
4 changed files with 2 additions and 101 deletions

View file

@ -1,14 +1,10 @@
import { Vault, TAbstractFile, TFolder, TFile } from "obsidian"; import { Vault, TAbstractFile, TFolder, TFile } from "obsidian";
import { Event } from "./types"; import MetadataStore from "./metadata-store";
import MetadataStore from "../metadata-store";
import EventsQueue from "./queue";
/** /**
* Tracks changes to local sync directory and updates files metadata. * Tracks changes to local sync directory and updates files metadata.
*/ */
export default class EventsListener { export default class EventsListener {
private eventsQueue: EventsQueue = new EventsQueue();
constructor( constructor(
private vault: Vault, private vault: Vault,
private metadataStore: MetadataStore, private metadataStore: MetadataStore,
@ -23,13 +19,6 @@ export default class EventsListener {
this.vault.on("rename", this.onRename.bind(this)); 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) { private async onCreate(file: TAbstractFile) {
if (!this.isSyncable(file.path)) { if (!this.isSyncable(file.path)) {
// The file has not been created in directory that we're syncing with GitHub // 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(), lastModified: Date.now(),
}; };
await this.metadataStore.save(); await this.metadataStore.save();
this.eventsQueue.enqueue({
type: "create",
file: file as TFile,
});
} }
private async onDelete(file: TAbstractFile | string) { 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].deleted = true;
this.metadataStore.data.files[filePath].deletedAt = Date.now(); this.metadataStore.data.files[filePath].deletedAt = Date.now();
await this.metadataStore.save(); 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) { 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].lastModified = Date.now();
this.metadataStore.data.files[file.path].dirty = true; this.metadataStore.data.files[file.path].dirty = true;
await this.metadataStore.save(); await this.metadataStore.save();
this.eventsQueue.enqueue({
type: "modify",
file: file as TFile,
});
} }
private async onRename(file: TAbstractFile, oldPath: string) { private async onRename(file: TAbstractFile, oldPath: string) {

View file

@ -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<string, Event> = 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;
}
}

View file

@ -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;

View file

@ -4,7 +4,7 @@ import GithubClient, {
NewTreeRequestItem, NewTreeRequestItem,
} from "./github/client"; } from "./github/client";
import MetadataStore, { FileMetadata, Metadata } from "./metadata-store"; import MetadataStore, { FileMetadata, Metadata } from "./metadata-store";
import EventsListener from "./events/listener"; import EventsListener from "./events-listener";
import { GitHubSyncSettings } from "./settings/settings"; import { GitHubSyncSettings } from "./settings/settings";
interface SyncAction { interface SyncAction {