I am making an application for change theme colour of safari browser. I am using bellow code in safari extension but it did not work. Please check what is wrong in the bellow code
class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling {
var isDarkModeEnabled = false
func beginRequest(with context: NSExtensionContext) {
let request = context.inputItems.first as? NSExtensionItem
let message: Any? = request?.userInfo?[SFExtensionMessageKey]
let profileUUID: UUID? = request?.userInfo?[SFExtensionProfileKey] as? UUID
os_log(.default, "Received message from browser.runtime.sendNativeMessage: %@ (profile: %@)", String(describing: message), profileUUID?.uuidString ?? "none")
let response = NSExtensionItem()
isDarkModeEnabled.toggle()
let cssStyles = isDarkModeEnabled ? """
document.documentElement.setAttribute('data-theme', 'dark');
""" : """
document.documentElement.removeAttribute('data-theme');
"""
self.dispatchMessageToScript(withName: "injectCSS", userInfo: ["css": cssStyles])
context.completeRequest(returningItems: [response], completionHandler: nil)
}
func dispatchMessageToScript(withName messageName: String, userInfo: [String: Any]) {
let message = ["name": messageName, "userInfo": userInfo] as [String : Any]
let script = "window.postMessage(\(message), '*')"
let jsScript = NSItemProvider(item: script as NSSecureCoding, typeIdentifier: kUTTypePlainText as String)
NSExtensionItem().userInfo = ["script": jsScript]
}
}