define paths

This commit is contained in:
marlon-erler
2024-07-22 12:39:26 +02:00
parent b111cd47dd
commit 71281adbd0
4 changed files with 58 additions and 17 deletions
+9 -15
View File
@@ -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"]) }
)
);
})();
+11
View File
@@ -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;
+36
View File
@@ -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;
+2 -2
View File
@@ -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"],
},
};
};