mirror of
https://github.com/silvanocerza/github-gitless-sync.git
synced 2026-07-22 12:10:28 +00:00
Remove even more dead code
This commit is contained in:
parent
44cc1c6380
commit
5fbcf520a8
4 changed files with 2 additions and 101 deletions
|
|
@ -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) {
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue