diff --git a/dist/index.js b/dist/index.js index 64bcf960..4b5fc0fa 100644 --- a/dist/index.js +++ b/dist/index.js @@ -511,8 +511,14 @@ const { sender, body, channel, isoDate, messageObject } = JSON.parse( data.messageBody ); - if (messageObject && messageObject.id && messageObject.title) { - return this.handleMessageObject(messageObject); + if (messageObject) { + const decrypted = await decryptString( + messageObject, + this.encryptionKey.value + ); + console.log(decrypted); + const object = JSON.parse(decrypted); + if (object.id && object.title) return this.handleMessageObject(object); } this.handleMessage({ sender, @@ -534,6 +540,18 @@ handleMessageObject = (messageObject) => { this.objects.set(messageObject.id, messageObject); }; + // sending + sendMessagesInOutbox = () => { + this.outbox.value.forEach(async (message) => { + const isSent = await this.sendMessage(message); + if (isSent == true) this.outbox.remove(message); + }); + this.objectOutbox.value.forEach(async (object) => { + const chatMessage = await this.createChatMessage("", object); + const isSent = await this.sendMessage(chatMessage); + if (isSent == true) this.objectOutbox.remove(object.id); + }); + }; // messages createChatMessage = async (messageText, messageObject) => { const secondaryChannelNames = [ @@ -550,7 +568,11 @@ body: messageText, isoDate: (/* @__PURE__ */ new Date()).toISOString() }; - if (messageObject) chatMessage.messageObject = messageObject; + if (messageObject) + chatMessage.messageObject = await encryptString( + JSON.stringify(messageObject), + this.encryptionKey.value + ); return chatMessage; }; sendMessageFromComposer = async () => { @@ -567,15 +589,6 @@ if (this.cannotResendMessage.value == true) return; this.sendMessageFromText(chatMessage.body); }; - sendMessagesInOutbox = () => { - this.outbox.value.forEach((message) => { - this.sendMessage(message); - }); - this.objectOutbox.value.forEach(async (object) => { - const chatMessage = await this.createChatMessage("", object); - this.sendMessage(chatMessage); - }); - }; clearMessages = () => { this.messages.clear(); }; @@ -593,14 +606,13 @@ this.messages.callSubscriptions(); }; sendMessage = async (chatMessage) => { - if (isConnected.value == false || this.isSubscribed.value == false) return; + if (isConnected.value == false || this.isSubscribed.value == false) + return false; const encryptedBody = this.encryptionKey.value == "" ? chatMessage.body : await encryptString(chatMessage.body, this.encryptionKey.value); chatMessage.body = encryptedBody; const messageString = JSON.stringify(chatMessage); UDN.sendMessage(chatMessage.channel, messageString); - this.outbox.remove(chatMessage); - if (chatMessage.messageObject) - this.objectOutbox.remove(chatMessage.messageObject.id); + return true; }; // objects addObjectAndSend = (object) => { @@ -1139,7 +1151,7 @@ "toggle:disabled": chat.cannotClearObjects }, translation.clearObjects, - /* @__PURE__ */ createElement("span", { class: "icon" }, "delete_sweep") + /* @__PURE__ */ createElement("span", { class: "icon" }, "deployed_code") ), /* @__PURE__ */ createElement( "button", { diff --git a/src/Model/chatModel.ts b/src/Model/chatModel.ts index fa012f64..1ce33c08 100644 --- a/src/Model/chatModel.ts +++ b/src/Model/chatModel.ts @@ -22,7 +22,7 @@ export interface ChatMessage { body: string; isoDate: string; - messageObject?: MessageObject; + messageObject?: string; } // object @@ -154,8 +154,13 @@ export class Chat { data.messageBody ); - if (messageObject && messageObject.id && messageObject.title) { - return this.handleMessageObject(messageObject); + if (messageObject) { + const decrypted = await decryptString( + messageObject, + this.encryptionKey.value + ); + const object = JSON.parse(decrypted); + if (object.id && object.title) return this.handleMessageObject(object); } this.handleMessage({ @@ -183,6 +188,20 @@ export class Chat { this.objects.set(messageObject.id, messageObject); }; + // sending + + sendMessagesInOutbox = () => { + this.outbox.value.forEach(async (message) => { + const isSent = await this.sendMessage(message); + if (isSent == true) this.outbox.remove(message); + }); + this.objectOutbox.value.forEach(async (object) => { + const chatMessage = await this.createChatMessage("", object); + const isSent = await this.sendMessage(chatMessage); + if (isSent == true) this.objectOutbox.remove(object.id); + }); + }; + // messages createChatMessage = async ( messageText: string, @@ -206,7 +225,11 @@ export class Chat { isoDate: new Date().toISOString(), }; - if (messageObject) chatMessage.messageObject = messageObject; + if (messageObject) + chatMessage.messageObject = await encryptString( + JSON.stringify(messageObject), + this.encryptionKey.value + ); return chatMessage; }; @@ -228,16 +251,6 @@ export class Chat { this.sendMessageFromText(chatMessage.body); }; - sendMessagesInOutbox = () => { - this.outbox.value.forEach((message) => { - this.sendMessage(message); - }); - this.objectOutbox.value.forEach(async (object) => { - const chatMessage = await this.createChatMessage("", object); - this.sendMessage(chatMessage); - }); - }; - clearMessages = (): void => { this.messages.clear(); }; @@ -258,8 +271,9 @@ export class Chat { this.messages.callSubscriptions(); }; - sendMessage = async (chatMessage: ChatMessage): Promise => { - if (isConnected.value == false || this.isSubscribed.value == false) return; + sendMessage = async (chatMessage: ChatMessage): Promise => { + if (isConnected.value == false || this.isSubscribed.value == false) + return false; const encryptedBody = this.encryptionKey.value == "" @@ -271,9 +285,7 @@ export class Chat { const messageString = JSON.stringify(chatMessage); UDN.sendMessage(chatMessage.channel, messageString); - this.outbox.remove(chatMessage); - if (chatMessage.messageObject) - this.objectOutbox.remove(chatMessage.messageObject.id); + return true; }; // objects diff --git a/src/Views/Chat/chatOptionModal.tsx b/src/Views/Chat/chatOptionModal.tsx index 6ab2fb44..d845f99d 100644 --- a/src/Views/Chat/chatOptionModal.tsx +++ b/src/Views/Chat/chatOptionModal.tsx @@ -147,7 +147,7 @@ export function ChatOptionModal(chat: Chat, isPresented: React.State) { toggle:disabled={chat.cannotClearObjects} > {translation.clearObjects} - delete_sweep + deployed_code