func handleSyncCallWithPrompt()

in Sources/Instrumentation/WKWebView/WKWebViewDelegate.swift [116:153]


    func handleSyncCallWithPrompt(webView: WKWebView, prompt: String, defaultText: String?, completionHandler: @escaping (String?) -> Void) -> Bool {
        if prompt != "OTelJSBridge" {
            return false
        }

        guard let defaultText = defaultText else {
            completionHandler(nil)
            return false
        }

        guard let jsonData = defaultText.data(using: .utf8), let body = try? JSONSerialization.jsonObject(with: jsonData) as? [String: Any] else {
            completionHandler(nil)
            return false
        }

        let bridgeMessage = JSBridgeMessageModule(dictionary: body) { response in
            guard let response = response, response.count > 0 else {
                completionHandler(nil)
                return
            }

            guard let data = try? JSONSerialization.data(withJSONObject: response) else {
                completionHandler(nil)
                return
            }

            guard let jsonString = String.init(data: data, encoding: .utf8) else {
                completionHandler(nil)
                return
            }

            completionHandler(jsonString)

        }

        WKWebViewInstrumentation.dispatchCallbackMessage(webView: webView, message: bridgeMessage)
        return true
    }