From bf141ab20c9d8a38baa5a5fbf23e6ab2adca23b1 Mon Sep 17 00:00:00 2001 From: Chad Scharf <3904944+cscharf@users.noreply.github.com> Date: Wed, 13 May 2020 19:00:49 -0400 Subject: [PATCH] Attempt fix for safair app extension crash --- src/browser/browserApi.ts | 10 ----- .../SafariExtensionViewController.swift | 41 +++++++++---------- 2 files changed, 20 insertions(+), 31 deletions(-) diff --git a/src/browser/browserApi.ts b/src/browser/browserApi.ts index ede5779c16..a536f7a694 100644 --- a/src/browser/browserApi.ts +++ b/src/browser/browserApi.ts @@ -133,16 +133,6 @@ export class BrowserApi { } } - static getAssetUrl(path: string): Promise { - if (BrowserApi.isChromeApi) { - return Promise.resolve(chrome.extension.getURL(path)); - } else if (BrowserApi.isSafariApi) { - return SafariApp.sendMessageToApp('getAppPath'); - } else { - return Promise.resolve(null); - } - } - static messageListener(name: string, callback: (message: any, sender: any, response: any) => void) { if (BrowserApi.isChromeApi) { chrome.runtime.onMessage.addListener((msg: any, sender: any, response: any) => { diff --git a/src/safari/safari/SafariExtensionViewController.swift b/src/safari/safari/SafariExtensionViewController.swift index cfa86e4266..41aab17003 100644 --- a/src/safari/safari/SafariExtensionViewController.swift +++ b/src/safari/safari/SafariExtensionViewController.swift @@ -60,28 +60,34 @@ class SafariExtensionViewController: SFSafariExtensionViewController, WKScriptMe return } let messageBody = message.body as! String - // print(messageBody) + // NSLog("MESSAGE: \(messageBody)") let m: AppMessage? = jsonDeserialize(json: messageBody) if m == nil { return } let command = m!.command - // print(command) + NSLog("Command: \(command)") if command == "storage_get" { - let obj = UserDefaults.standard.string(forKey: m!.data!) - m!.responseData = obj - replyMessage(message: m!) + if m!.data != nil { + let obj = UserDefaults.standard.string(forKey: m!.data!) + m!.responseData = obj + replyMessage(message: m!) + } } else if command == "storage_save" { let data: StorageData? = jsonDeserialize(json: m!.data) - if data?.obj == nil { - UserDefaults.standard.removeObject(forKey: data!.key) - } else { - UserDefaults.standard.set(data?.obj, forKey: data!.key) + if data?.key != nil { + if data?.obj == nil { + UserDefaults.standard.removeObject(forKey: data!.key) + } else { + UserDefaults.standard.set(data?.obj, forKey: data!.key) + } + replyMessage(message: m!) } - replyMessage(message: m!) } else if command == "storage_remove" { - UserDefaults.standard.removeObject(forKey: m!.data!) - replyMessage(message: m!) + if m!.data != nil { + UserDefaults.standard.removeObject(forKey: m!.data!) + replyMessage(message: m!) + } } else if command == "getLocaleStrings" { let language = m!.data ?? "en" let bundleURL = Bundle.main.resourceURL!.absoluteURL @@ -165,7 +171,7 @@ class SafariExtensionViewController: SFSafariExtensionViewController, WKScriptMe replyMessage(message: m!) } else if command == "readFromClipboard" { let pasteboard = NSPasteboard.general - m?.responseData = pasteboard.pasteboardItems?.first?.string(forType: .string) + m!.responseData = pasteboard.pasteboardItems?.first?.string(forType: .string) replyMessage(message: m!) } else if command == "downloadFile" { if m!.data != nil { @@ -173,7 +179,7 @@ class SafariExtensionViewController: SFSafariExtensionViewController, WKScriptMe var data: Data? if dlMsg.blobOptions?.type == "text/plain" { data = dlMsg.blobData?.data(using: .utf8) - } else { + } else if dlMsg.blobData != nil { data = Data(base64Encoded: dlMsg.blobData!) } if data != nil { @@ -199,13 +205,6 @@ class SafariExtensionViewController: SFSafariExtensionViewController, WKScriptMe } } } - } else if command == "getAppPath" { - SFSafariExtension.getBaseURI(completionHandler: { uri in - if uri != nil { - m!.responseData = uri!.absoluteString - self.replyMessage(message: m!) - } - }) } }