diff --git a/src/Model/Chat/chatModel.ts b/src/Model/Chat/chatModel.ts index 7def2262..b1c90d4a 100644 --- a/src/Model/Chat/chatModel.ts +++ b/src/Model/Chat/chatModel.ts @@ -182,7 +182,7 @@ export default class ChatModel { readonly getSendingData = (): [string, string, string] => { const senderName: string = this.settingsModel.username || "?"; - const id: string = this.settingsModel.userid; + const id: string = this.settingsModel.userid; const allChannels: string[] = [this.id]; for (const secondaryChannel of this.info.secondaryChannels) { @@ -203,7 +203,7 @@ export default class ChatModel { const chatMessage: ChatMessage = await ChatModel.createChatMessage( combinedChannel, - senderId, + senderId, senderName, this.info.encryptionKey, body, @@ -240,7 +240,7 @@ export default class ChatModel { const reaction = ChatModel.createMessageReaction( messageId, - senderId, + senderId, content, isDeleting, ); @@ -396,7 +396,7 @@ export default class ChatModel { static createChatMessage = async ( channel: string, sender: string, - senderId: string, + senderId: string, encryptionKey: string, body: string, inlineReplyId?: string, @@ -409,7 +409,7 @@ export default class ChatModel { channel, sender, - senderId, + senderId, body, dateSent: createTimestamp(), inlineReplyId, @@ -438,7 +438,7 @@ export default class ChatModel { static createMessageReaction = ( messageId: string, - senderId: string, + senderId: string, content: ReactionSymbols, isDeleting: boolean, ): ChatMessageReaction => { @@ -449,7 +449,7 @@ export default class ChatModel { fileId: ChatModel.createMessageReactionId(messageId, senderId), messageId, - senderId, + senderId, content, isDeleting, }; diff --git a/src/Model/Global/settingsModel.ts b/src/Model/Global/settingsModel.ts index 602ae913..62179640 100644 --- a/src/Model/Global/settingsModel.ts +++ b/src/Model/Global/settingsModel.ts @@ -1,5 +1,5 @@ -import {UUID} from "../../react"; import StorageModel, { StorageModelSubPaths, filePaths } from "./storageModel"; +import { UUID } from "../../react"; export default class SettingsModel { readonly storageModel: StorageModel; @@ -27,7 +27,7 @@ export default class SettingsModel { this.userid = newValue; this.storeSetting("userid", newValue); }; - + readonly setName = (newValue: string): void => { this.username = newValue; this.storeSetting("username", newValue); @@ -58,12 +58,12 @@ export default class SettingsModel { ); return this.storageModel.read(path); }; - + readonly loadId = (): void => { const content: string | null = this.readSetting("userid"); - const id = content ?? UUID(); + const id = content ?? UUID(); if (content) this.userid = content; - else this.setId(id); + else this.setId(id); }; readonly loadUsername = (): void => { @@ -90,7 +90,7 @@ export default class SettingsModel { constructor(storageModel: StorageModel) { this.storageModel = storageModel; - this.loadId(); + this.loadId(); this.loadUsername(); this.loadFirstDayofWeek(); this.loadLanguage(); diff --git a/src/Model/Global/storageModel.ts b/src/Model/Global/storageModel.ts index eac5400b..8b7e6091 100644 --- a/src/Model/Global/storageModel.ts +++ b/src/Model/Global/storageModel.ts @@ -306,7 +306,7 @@ export const filePaths = { settingsModel: { username: ["user-name"], - userid: ["user-id"], + userid: ["user-id"], firstDayOfWeek: ["first-day-of-week"], language: ["language"], theme: ["theme"], diff --git a/src/Upgrader/v1.ts b/src/Upgrader/v1.ts deleted file mode 100644 index 1ca9b76c..00000000 --- a/src/Upgrader/v1.ts +++ /dev/null @@ -1,286 +0,0 @@ -// this file is responsible for migrating data from v1 to v2. - -import { v4 } from "uuid"; -import CoreViewModel from "../ViewModel/Global/coreViewModel"; -import { - getLocalStorageItemAndClear, - parseArray, - parseOrFallback, -} from "../Model/Utility/utility"; -import { checkMatchesObjectStructure } from "../Model/Utility/typeSafety"; -import FileModel from "../Model/Files/fileModel"; -import { - BoardInfoFileContent, - TaskFileContent, -} from "../Model/Files/boardsAndTasksModel"; -import ChatModel, { - ChatMessage, - ChatMessageStatuses, -} from "../Model/Chat/chatModel"; - -export default class v1Upgrader { - // general - migrateSettings = (): void => { - const name: string | null = getLocalStorageItemAndClear("sender-name"); - if (name != null) { - const parsedName: string = parseOrFallback(name); - this.coreViewModel.settingsModel.setName(parsedName); - } - - const firstDayOfWeek: string | null = - getLocalStorageItemAndClear("first-day-of-week"); - if (firstDayOfWeek != null) { - const parsedFirstDayOfWeek: string = - parseOrFallback(firstDayOfWeek); - this.coreViewModel.settingsModel.setFirstDayOfWeek( - parsedFirstDayOfWeek, - ); - } - }; - - migrateConnections = (): void => { - const previousAddressString: string | null = - getLocalStorageItemAndClear("previous-addresses"); - if (previousAddressString == null) return; - - const previousAddresses: any[] = parseArray(previousAddressString); - for (const address of previousAddresses) { - if (typeof address != "string") continue; - this.coreViewModel.connectionModel.storeAddress(address); - } - }; - - // chats - migrateChats = (): void => { - const chatIdString: string | null = - getLocalStorageItemAndClear("chat-ids"); - if (chatIdString == null) return; - - const chatIds: any[] = parseArray(chatIdString); - for (const chatId of chatIds) { - if (typeof chatId != "string") continue; - this.migrateChatById(chatId); - } - }; - - migrateChatById = (id: string): void => { - // get primary channel - const primaryChannel: string | null = getLocalStorageItemAndClear( - storageKeys.primaryChannel(id), - ); - if (primaryChannel == null) return; - const parsedPriamryChannel: string = parseOrFallback(primaryChannel); - - // create chat - const chatModel: ChatModel = - this.coreViewModel.chatListModel.createChat(parsedPriamryChannel); - - // secondary channels - const secondaryChannelString: string | null = - getLocalStorageItemAndClear(storageKeys.secondaryChannels(id)); - if (secondaryChannelString != null) { - const potentialSecondaryChannels: any[] = parseArray( - secondaryChannelString, - ); - - const confirmedSecondaryChannels: string[] = []; - for (const secondaryChannel of potentialSecondaryChannels) { - if (typeof secondaryChannel != "string") continue; - confirmedSecondaryChannels.push(secondaryChannel); - } - - chatModel.setSecondaryChannels(confirmedSecondaryChannels); - } - - // encryption key - const encryptionKey: string | null = getLocalStorageItemAndClear( - storageKeys.encyptionKey(id), - ); - if (encryptionKey != null) { - const parsedEncryptionKey: string = parseOrFallback(encryptionKey); - chatModel.setEncryptionKey(parsedEncryptionKey); - } - - // messages - const messagesString: string = - getLocalStorageItemAndClear(storageKeys.messages(id)) ?? ""; - const messageOutboxString: string = - getLocalStorageItemAndClear(storageKeys.outbox(id)) ?? ""; - const potentialMessages: any[] = parseArray(messagesString); - const potentialMessagesInOutbox: any[] = - parseArray(messageOutboxString); - - const addMessages = ( - potentialMessages: any[], - status: ChatMessageStatuses, - ) => { - for (const potentialMessage of potentialMessages) { - const isV1ChatMessage: boolean = checkMatchesObjectStructure( - potentialMessage, - V1ChatMessageReference, - ); - if (isV1ChatMessage == false) continue; - const v1ChatMessage: typeof V1ChatMessageReference = - potentialMessage; - - const convertedChatMessage: ChatMessage = { - dataVersion: "v2", - - id: v4(), - - channel: v1ChatMessage.channel, - sender: v1ChatMessage.sender, - body: v1ChatMessage.body, - dateSent: v1ChatMessage.isoDate, - - status, - stringifiedFile: "", - }; - chatModel.addMessage(convertedChatMessage); - if (status == ChatMessageStatuses.Outbox) { - this.coreViewModel.connectionModel.sendMessageOrStore( - convertedChatMessage, - ); - } - } - }; - - addMessages(potentialMessages, ChatMessageStatuses.Received); - addMessages(potentialMessagesInOutbox, ChatMessageStatuses.Outbox); - - // objects - const objectsString: string = - getLocalStorageItemAndClear(storageKeys.objects(id)) ?? ""; - const objectOutboxString: string = - getLocalStorageItemAndClear(storageKeys.itemOutbox(id)) ?? ""; - const potentialObjects: any[] = parseArray(objectsString); - const potentialObjectsInOutbox: any[] = parseArray(objectOutboxString); - - const addObjects = (potentialObjects: any[]): void => { - const board: BoardInfoFileContent = - chatModel.fileModel.boardsAndTasksModel.createBoard( - this.coreViewModel.translations.updater.migrated, - ); - chatModel.fileModel.boardsAndTasksModel.updateBoard(board); - - for (const potentialObjectEntry of potentialObjects) { - const potentialObject = potentialObjectEntry[1]; - const isV1MessageObject: boolean = - checkIsV1MessageObject(potentialObject); - if (isV1MessageObject == false) continue; - - const objectId: string = potentialObject.id; - const objectName: string = potentialObject.title; - - const contentVersions: any[] = Object.values( - potentialObject.contentVersions, - ); - for (const potentialVersion of contentVersions) { - const isV1MessageObjectContent: boolean = - checkIsV1MessageObjectContent(potentialVersion); - if (isV1MessageObjectContent == false) continue; - - const convertedTaskFileContent: TaskFileContent = { - dataVersion: "v2", - - fileId: objectId, - fileContentId: FileModel.generateFileContentId( - potentialVersion.isoDateVersionCreated, - ), - creationDate: potentialVersion.isoDateVersionCreated, - type: "task", - - name: objectName ?? "", - boardId: board.fileId ?? "", - - description: potentialVersion.noteContent ?? "", - - category: potentialVersion.categoryName ?? "", - status: potentialVersion.status ?? "", - priority: potentialVersion.priority ?? "", - - date: potentialVersion.date ?? "", - time: potentialVersion.time ?? "", - }; - console.log(convertedTaskFileContent); - chatModel.fileModel.handleFileContent( - convertedTaskFileContent, - ); - } - } - }; - - addObjects([...potentialObjects, ...potentialObjectsInOutbox]); - }; - - // init - constructor(public coreViewModel: CoreViewModel) { - this.migrateSettings(); - this.migrateConnections(); - this.migrateChats(); - } -} - -const storageKeys = { - viewType(id: string): string { - return id + "view-type"; - }, - - hasUnread(id: string): string { - return id + "has-unread-messages"; - }, - - primaryChannel(id: string): string { - return id + "primary-channel"; - }, - - secondaryChannels(id: string): string { - return id + "secondary-channels"; - }, - - encyptionKey(id: string): string { - return id + "encryption-key"; - }, - - messages(id: string): string { - return id + "messages"; - }, - - objects(id: string): string { - return id + "items"; - }, - - outbox(id: string): string { - return id + "outbox"; - }, - - itemOutbox(id: string): string { - return id + "item-outbox"; - }, - - composingMessage(id: string): string { - return id + "composing-message"; - }, -}; - -const V1ChatMessageReference = { - channel: "", - sender: "", - body: "", - isoDate: "", -}; - -function checkIsV1MessageObject(object: any): boolean { - if (object.id == undefined) return false; - if (object.title == undefined) return false; - if (object.contentVersions == undefined) return false; - - return true; -} - -function checkIsV1MessageObjectContent(object: any): boolean { - if (object.id == undefined) return false; - if (object.isoDateVersionCreated == undefined) return false; - - return true; -} diff --git a/src/index.tsx b/src/index.tsx index 209b1110..d14e13de 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -15,7 +15,6 @@ import { StorageModal } from "./View/Modals/storageModal"; import { SettingsModal } from "./View/Modals/settingsModal"; import { DataTransferModalWrapper } from "./View/Modals/dataTransferModal"; import { ConnectionModal } from "./View/Modals/connectionModal"; -import v1Upgrader from "./Upgrader/v1"; import StorageModel from "./Model/Global/storageModel"; import SettingsModel from "./Model/Global/settingsModel"; import FileTransferModel from "./Model/Global/fileTransferModel"; @@ -42,9 +41,6 @@ const coreViewModel = new CoreViewModel( fileTransferModel, ); -// upgrade -new v1Upgrader(coreViewModel); - const storageViewModel = new StorageViewModel(coreViewModel); const settingsViewModel = new SettingsViewModel(coreViewModel); const connectionViewModel = new ConnectionViewModel(coreViewModel);