Browse Source

implement sendStatusUpdate js->swift->rust

cyberta 3 years ago
parent
commit
6d76f5f364
1 changed files with 12 additions and 2 deletions
  1. 12 2
      deltachat-ios/Controller/WebxdcViewController.swift

+ 12 - 2
deltachat-ios/Controller/WebxdcViewController.swift

@@ -64,7 +64,7 @@ class WebxdcViewController: WebViewViewController {
                     payload: payload,
                     descr: descr
                 };
-                webkit.messageHandlers.sendStatusUpdateHandler.postMessage(JSON.stringify(parameter));
+                webkit.messageHandlers.sendStatusUpdateHandler.postMessage(parameter);
             },
           };
         })();
@@ -185,7 +185,17 @@ extension WebxdcViewController: WKScriptMessageHandler {
             // TODO: return
         case .sendStatusUpdate:
             logger.debug("sendStatusUpdate called")
-            // dcContext.sendWebxdcStatusUpdate(msgId: messageId, payload: <#T##String#>, description: <#T##String#>)
+            guard let dict = message.body as? [String: AnyObject],
+                  let payloadDict = dict["payload"] as?  [String: AnyObject],
+                  let payloadJson = try? JSONSerialization.data(withJSONObject: payloadDict, options: []),
+                  let payloadString = String(data: payloadJson, encoding: .utf8),
+                  let description = dict["descr"] as? String else {
+                      logger.error("Failed to parse status update parameters \(message.body)")
+                      return
+                  }
+
+            logger.debug(">> \(payloadString), \(description)")
+            _ = dcContext.sendWebxdcStatusUpdate(msgId: messageId, payload: payloadString, description: description)
         default:
             logger.debug("another method was called")
         }