diff --git a/dist/index.js b/dist/index.js index f9fd28f1..7f5170bc 100644 --- a/dist/index.js +++ b/dist/index.js @@ -496,8 +496,7 @@ board, name ); - file.contentVersions.add(taskFileContent); - this.fileModel.addOrUpdateFile(file); + this.saveTask(file, taskFileContent); }; saveTask = (file, newTaskFileContent) => { file.contentVersions.add(newTaskFileContent); @@ -550,18 +549,19 @@ handleStringifiedFile = (stringifiedFile) => { const file = parseValidObject(stringifiedFile, FileReference); if (file == null) return; - this.handleFile(file); + this.handleFileAndClearContents(file); }; - handleFile = (file) => { + handleFileAndClearContents = (file) => { for (const fileContent of file.contentVersions) { this.storeFileContent(file, fileContent); this.taskModel.handleTaskFileContent(file, fileContent); + file.contentVersions.delete(fileContent); } }; // methods addOrUpdateFile = (file) => { - this.handleFile(file); this.chatModel.sendMessage("", file); + this.handleFileAndClearContents(file); }; // storage storeFileContent = (file, fileContent) => { @@ -578,10 +578,6 @@ listFileIds = () => { return this.storageModel.list(this.getBasePath()); }; - listFileContents = (file) => { - const filePath = this.getFilePath(file.id); - return this.storageModel.list(filePath); - }; getFile = (fileId) => { const filePath = this.getFilePath(fileId); const fileOrNull = this.storageModel.readStringifiable( @@ -590,6 +586,10 @@ ); return fileOrNull; }; + listFileContents = (file) => { + const filePath = this.getFilePath(file.id); + return this.storageModel.list(filePath); + }; getLatestFileContentName = (fileContentNames) => { return fileContentNames[fileContentNames.length - 1]; }; @@ -2567,10 +2567,4 @@ ConnectionModal(connectionViewModel), StorageModal(storageViewModel) ); - console.log( - checkMatchesObjectStructure( - { a: 1, c: /* @__PURE__ */ new Set() }, - { a: 2, c: /* @__PURE__ */ new Set(["bla"]) } - ) - ); })(); diff --git a/src/Model/Files/fileModel.ts b/src/Model/Files/fileModel.ts index b165c9cf..81e27f6b 100644 --- a/src/Model/Files/fileModel.ts +++ b/src/Model/Files/fileModel.ts @@ -26,6 +26,12 @@ export default class FileModel { ); }; + getModelDirectoryPath = ( + modelName: keyof typeof modelDirectories + ): string[] => { + return [...this.getBasePath(), modelName]; + }; + getFilePath = (fileId: string): string[] => { return [...this.getBasePath(), fileId]; }; @@ -140,6 +146,11 @@ export default class FileModel { }; } +// paths +export const modelDirectories = { + taskModel: "tasks", +}; + // types export interface File extends ValidObject { id: string; diff --git a/src/Model/Files/taskModel.ts b/src/Model/Files/taskModel.ts index ad7263c1..78fcd2fe 100644 --- a/src/Model/Files/taskModel.ts +++ b/src/Model/Files/taskModel.ts @@ -13,6 +13,31 @@ export default class TaskModel { chatModel: ChatModel; fileModel: FileModel; + // paths + getBasePath = (): string[] => { + return this.fileModel.getModelDirectoryPath("taskModel"); + }; + + getLocationDirPath = (): string[] => { + return [...this.getBasePath(), subDirectories.locations]; + }; + + getTaskLocationPath = (fileId: string): string[] => { + return [...this.getLocationDirPath(), fileId]; + }; + + getBoardDirPath = (): string[] => { + return [...this.getBasePath(), subDirectories.boards]; + }; + + getBoardPath = (boardName: string): string[] => { + return [...this.getBoardDirPath(), boardName]; + }; + + getTaskPath = (boardName: string, fileId: string): string[] => { + return [...this.getBoardPath(boardName), fileId]; + }; + // handler handleTaskFileContent = ( file: File, @@ -42,6 +67,12 @@ export default class TaskModel { this.fileModel.addOrUpdateFile(file); }; + // locations + updateTaskLocation = ( + file: File, + taskFileContent: TaskFileContent + ): void => {}; + // init constructor(chatModel: ChatModel, fileModel: FileModel) { this.chatModel = chatModel; @@ -64,6 +95,11 @@ export default class TaskModel { }; } +export const subDirectories = { + locations: "locations", + boards: "boards", +}; + // types export interface TaskFileContent extends FileContent<"task"> { name: string; diff --git a/src/Model/Global/storageModel.ts b/src/Model/Global/storageModel.ts index 2abbe3b9..b5ba4f7e 100644 --- a/src/Model/Global/storageModel.ts +++ b/src/Model/Global/storageModel.ts @@ -184,15 +184,15 @@ export const filePaths = { info: (id: string) => [...filePaths.chat.chatBase(id), "info"], color: (id: string) => [...filePaths.chat.chatBase(id), "color"], messages: (id: string) => [...filePaths.chat.chatBase(id), "messages"], - files: (id: string) => [...filePaths.chat.chatBase(id), "files"], lastUsedPage: (id: string) => [ ...filePaths.chat.chatBase(id), "last-used-page", ], + files: (id: string) => [...filePaths.chat.chatBase(id), "files"], }, settingsModel: { username: ["user-name"], firstDayOfWeek: ["first-day-of-week"], }, -}; \ No newline at end of file +};