瀏覽代碼

sendToChat() accepts base64 now, use that directly

B. Petersen 2 年之前
父節點
當前提交
a8458d7fe4
共有 1 個文件被更改,包括 15 次插入7 次删除
  1. 15 7
      deltachat-ios/Controller/WebxdcViewController.swift

+ 15 - 7
deltachat-ios/Controller/WebxdcViewController.swift

@@ -119,14 +119,22 @@ class WebxdcViewController: WebViewViewController {
                 webkit.messageHandlers.sendStatusUpdateHandler.postMessage(parameter);
             },
 
-            sendToChat: (parameter) => {
-                if (parameter.file) {
-                    // pass blob as base64 as postMessage() encodes File objects as null
-                    parameter.__fileBase64 = btoa(parameter.file.blob); // TODO: not sure if that is right, the encoded string looks suspicious
-                    parameter.__fileName = parameter.file.name;
+            sendToChat: async (message) => {
+                const data = {};
+                if (!message.text && !message.file) {
+                    return Promise.reject("Invalid empty message, at least one of text or file should be provided");
                 }
-                webkit.messageHandlers.sendToChat.postMessage(parameter);
-                // TODO: handle promise return values
+                if (message.text) {
+                    data.text = message.text;
+                }
+                if (message.file) {
+                    if (!message.file.name || typeof message.file.base64 !== 'string') {
+                        return Promise.reject("provided file is invalid, you need to set both name and base64 content");
+                    }
+                    data.base64 = message.file.base64;
+                    data.name = message.file.name;
+                }
+                webkit.messageHandlers.sendToChat.postMessage(data);
             }
           };
         })();