mirror of
https://github.com/bitwarden/browser.git
synced 2024-11-23 11:56:00 +01:00
show popup, reload extension, and formatting
This commit is contained in:
parent
2a7e361300
commit
41be76a107
@ -50,111 +50,110 @@ class SafariExtensionViewController: SFSafariExtensionViewController, WKScriptMe
|
|||||||
}
|
}
|
||||||
|
|
||||||
func userContentController(_: WKUserContentController, didReceive message: WKScriptMessage) {
|
func userContentController(_: WKUserContentController, didReceive message: WKScriptMessage) {
|
||||||
if message.name == "bitwardenApp" {
|
if message.name != "bitwardenApp" {
|
||||||
let messageBody = message.body as! String
|
return
|
||||||
print(messageBody)
|
}
|
||||||
let m: AppMessage? = jsonDeserialize(json: messageBody)
|
let messageBody = message.body as! String
|
||||||
if m == nil {
|
// print(messageBody)
|
||||||
print("m is nil")
|
let m: AppMessage? = jsonDeserialize(json: messageBody)
|
||||||
|
if m == nil {
|
||||||
|
// print("m is nil")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let command = m!.command
|
||||||
|
// print(command)
|
||||||
|
if command == "storage_get" {
|
||||||
|
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 {
|
} else {
|
||||||
let command = m?.command ?? "null"
|
UserDefaults.standard.set(data?.obj, forKey: data!.key)
|
||||||
print(command)
|
}
|
||||||
if command == "storage_get" {
|
replyMessage(message: m!)
|
||||||
let obj = UserDefaults.standard.string(forKey: m!.data!)
|
} else if command == "storage_remove" {
|
||||||
m!.responseData = obj
|
UserDefaults.standard.removeObject(forKey: m!.data!)
|
||||||
replyMessage(message: m!)
|
replyMessage(message: m!)
|
||||||
} else if command == "storage_save" {
|
} else if command == "getLocaleStrings" {
|
||||||
let data: StorageData? = jsonDeserialize(json: m!.data)
|
let language = m!.data ?? "en"
|
||||||
if data?.obj == nil {
|
let bundleURL = Bundle.main.resourceURL!.absoluteURL
|
||||||
UserDefaults.standard.removeObject(forKey: data!.key)
|
let messagesUrl = bundleURL.appendingPathComponent("app/_locales/\(language)/messages.json")
|
||||||
} else {
|
do {
|
||||||
UserDefaults.standard.set(data?.obj, forKey: data!.key)
|
let json = try String(contentsOf: messagesUrl, encoding: .utf8)
|
||||||
}
|
webView.evaluateJavaScript("window.bitwardenLocaleStrings = \(json);", completionHandler: nil)
|
||||||
replyMessage(message: m!)
|
} catch {}
|
||||||
} else if command == "storage_remove" {
|
replyMessage(message: m!)
|
||||||
UserDefaults.standard.removeObject(forKey: m!.data!)
|
} else if command == "tabs_query" {
|
||||||
replyMessage(message: m!)
|
let options: TabQueryOptions? = jsonDeserialize(json: m!.data)
|
||||||
} else if command == "getLocaleStrings" {
|
if options?.currentWindow ?? false {
|
||||||
let language = m!.data ?? "en"
|
SFSafariApplication.getActiveWindow { win in
|
||||||
let bundleURL = Bundle.main.resourceURL!.absoluteURL
|
processWindowsForTabs(wins: [win!], options: options
|
||||||
let messagesUrl = bundleURL.appendingPathComponent("app/_locales/\(language)/messages.json")
|
, complete: { tabs in
|
||||||
do {
|
m!.responseData = jsonSerialize(obj: tabs)
|
||||||
let json = try String(contentsOf: messagesUrl, encoding: .utf8)
|
self.replyMessage(message: m!)
|
||||||
webView.evaluateJavaScript("window.bitwardenLocaleStrings = \(json);", completionHandler: nil)
|
})
|
||||||
} catch {}
|
}
|
||||||
replyMessage(message: m!)
|
} else {
|
||||||
} else if command == "tabs_query" {
|
SFSafariApplication.getAllWindows { wins in
|
||||||
let options: TabQueryOptions? = jsonDeserialize(json: m!.data)
|
processWindowsForTabs(wins: wins, options: options
|
||||||
if options?.currentWindow ?? false {
|
, complete: { tabs in
|
||||||
SFSafariApplication.getActiveWindow { win in
|
m!.responseData = jsonSerialize(obj: tabs)
|
||||||
processWindowsForTabs(wins: [win!], options: options
|
self.replyMessage(message: m!)
|
||||||
, complete: { tabs in
|
})
|
||||||
m!.responseData = jsonSerialize(obj: tabs)
|
|
||||||
self.replyMessage(message: m!)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
SFSafariApplication.getAllWindows { wins in
|
|
||||||
processWindowsForTabs(wins: wins, options: options
|
|
||||||
, complete: { tabs in
|
|
||||||
m!.responseData = jsonSerialize(obj: tabs)
|
|
||||||
self.replyMessage(message: m!)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if command == "tabs_message" {
|
|
||||||
let tabMsg: TabMessage? = jsonDeserialize(json: m!.data)
|
|
||||||
SFSafariApplication.getAllWindows { wins in
|
|
||||||
var theWin: SFSafariWindow?
|
|
||||||
var winIndex = 0
|
|
||||||
for win in wins {
|
|
||||||
if tabMsg?.tab.windowId == winIndex {
|
|
||||||
theWin = win
|
|
||||||
break
|
|
||||||
}
|
|
||||||
winIndex = winIndex + 1
|
|
||||||
}
|
|
||||||
if theWin != nil {
|
|
||||||
var theTab: SFSafariTab?
|
|
||||||
theWin!.getAllTabs { tabs in
|
|
||||||
var tabIndex = 0
|
|
||||||
for tab in tabs {
|
|
||||||
if tabMsg?.tab.index == tabIndex {
|
|
||||||
theTab = tab
|
|
||||||
break
|
|
||||||
}
|
|
||||||
tabIndex = tabIndex + 1
|
|
||||||
}
|
|
||||||
if theTab != nil {
|
|
||||||
theTab!.getActivePage { activePage in
|
|
||||||
if activePage != nil {
|
|
||||||
activePage?.dispatchMessageToScript(withName: "bitwarden", userInfo: ["msg": tabMsg!.obj])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if command == "hidePopover" {
|
|
||||||
dismissPopover()
|
|
||||||
replyMessage(message: m!)
|
|
||||||
} else if command == "showPopover" {
|
|
||||||
// TODO
|
|
||||||
replyMessage(message: m!)
|
|
||||||
} else if command == "reloadExtension" {
|
|
||||||
// TODO
|
|
||||||
replyMessage(message: m!)
|
|
||||||
} else if command == "copyToClipboard" {
|
|
||||||
let pasteboard = NSPasteboard.general
|
|
||||||
pasteboard.declareTypes([NSPasteboard.PasteboardType.string], owner: nil)
|
|
||||||
pasteboard.setString(m!.data ?? "", forType: NSPasteboard.PasteboardType.string)
|
|
||||||
replyMessage(message: m!)
|
|
||||||
} else if command == "readFromClipboard" {
|
|
||||||
let pasteboard = NSPasteboard.general
|
|
||||||
m?.responseData = pasteboard.pasteboardItems?.first?.string(forType: .string)
|
|
||||||
replyMessage(message: m!)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if command == "tabs_message" {
|
||||||
|
let tabMsg: TabMessage? = jsonDeserialize(json: m!.data)
|
||||||
|
SFSafariApplication.getAllWindows { wins in
|
||||||
|
var theWin: SFSafariWindow?
|
||||||
|
var winIndex = 0
|
||||||
|
for win in wins {
|
||||||
|
if tabMsg?.tab.windowId == winIndex {
|
||||||
|
theWin = win
|
||||||
|
break
|
||||||
|
}
|
||||||
|
winIndex = winIndex + 1
|
||||||
|
}
|
||||||
|
var theTab: SFSafariTab?
|
||||||
|
theWin?.getAllTabs { tabs in
|
||||||
|
var tabIndex = 0
|
||||||
|
for tab in tabs {
|
||||||
|
if tabMsg?.tab.index == tabIndex {
|
||||||
|
theTab = tab
|
||||||
|
break
|
||||||
|
}
|
||||||
|
tabIndex = tabIndex + 1
|
||||||
|
}
|
||||||
|
theTab?.getActivePage { activePage in
|
||||||
|
activePage?.dispatchMessageToScript(withName: "bitwarden", userInfo: ["msg": tabMsg!.obj])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if command == "hidePopover" {
|
||||||
|
dismissPopover()
|
||||||
|
replyMessage(message: m!)
|
||||||
|
} else if command == "showPopover" {
|
||||||
|
SFSafariApplication.getActiveWindow { win in
|
||||||
|
win?.getToolbarItem(completionHandler: { item in
|
||||||
|
item?.showPopover()
|
||||||
|
self.replyMessage(message: m!)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else if command == "reloadExtension" {
|
||||||
|
webView?.reload()
|
||||||
|
replyMessage(message: m!)
|
||||||
|
} else if command == "copyToClipboard" {
|
||||||
|
let pasteboard = NSPasteboard.general
|
||||||
|
pasteboard.declareTypes([NSPasteboard.PasteboardType.string], owner: nil)
|
||||||
|
pasteboard.setString(m!.data ?? "", forType: NSPasteboard.PasteboardType.string)
|
||||||
|
replyMessage(message: m!)
|
||||||
|
} else if command == "readFromClipboard" {
|
||||||
|
let pasteboard = NSPasteboard.general
|
||||||
|
m?.responseData = pasteboard.pasteboardItems?.first?.string(forType: .string)
|
||||||
|
replyMessage(message: m!)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user