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 { 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) {
|
||||||
|
|
@ -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,
|
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 {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue