Fix copying TOTP not working in Safari (#1598)
This commit is contained in:
parent
3e79dd245b
commit
e5764ee16e
|
@ -21,6 +21,13 @@ class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling {
|
||||||
let pasteboard = NSPasteboard.general
|
let pasteboard = NSPasteboard.general
|
||||||
response.userInfo = [ SFExtensionMessageKey: pasteboard.pasteboardItems?.first?.string(forType: .string) as Any ]
|
response.userInfo = [ SFExtensionMessageKey: pasteboard.pasteboardItems?.first?.string(forType: .string) as Any ]
|
||||||
break
|
break
|
||||||
|
case "copyToClipboard":
|
||||||
|
guard let msg = message?["data"] as? String else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let pasteboard = NSPasteboard.general
|
||||||
|
pasteboard.clearContents()
|
||||||
|
pasteboard.setString(msg, forType: .string)
|
||||||
case "showPopover":
|
case "showPopover":
|
||||||
SFSafariApplication.getActiveWindow { win in
|
SFSafariApplication.getActiveWindow { win in
|
||||||
win?.getToolbarItem(completionHandler: { item in
|
win?.getToolbarItem(completionHandler: { item in
|
||||||
|
|
|
@ -190,7 +190,14 @@ export default class BrowserPlatformUtilsService implements PlatformUtilsService
|
||||||
}
|
}
|
||||||
const clearing = options ? !!options.clearing : false;
|
const clearing = options ? !!options.clearing : false;
|
||||||
const clearMs: number = options && options.clearMs ? options.clearMs : null;
|
const clearMs: number = options && options.clearMs ? options.clearMs : null;
|
||||||
if (this.isFirefox() && (win as any).navigator.clipboard && (win as any).navigator.clipboard.writeText) {
|
|
||||||
|
if (this.isSafari()) {
|
||||||
|
SafariApp.sendMessageToApp('copyToClipboard', text).then(() => {
|
||||||
|
if (!clearing && this.clipboardWriteCallback != null) {
|
||||||
|
this.clipboardWriteCallback(text, clearMs);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if (this.isFirefox() && (win as any).navigator.clipboard && (win as any).navigator.clipboard.writeText) {
|
||||||
(win as any).navigator.clipboard.writeText(text).then(() => {
|
(win as any).navigator.clipboard.writeText(text).then(() => {
|
||||||
if (!clearing && this.clipboardWriteCallback != null) {
|
if (!clearing && this.clipboardWriteCallback != null) {
|
||||||
this.clipboardWriteCallback(text, clearMs);
|
this.clipboardWriteCallback(text, clearMs);
|
||||||
|
|
Loading…
Reference in New Issue