Skip to content

Instantly share code, notes, and snippets.

@kasimte
Created January 2, 2021 03:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kasimte/001e2927fbf9e0bb9e1a6fa0f8f1d6fc to your computer and use it in GitHub Desktop.
Save kasimte/001e2927fbf9e0bb9e1a6fa0f8f1d6fc to your computer and use it in GitHub Desktop.
RxSwift extension for WebKit's WKScriptMessageHandler.
import WebKit
import RxSwift
import RxCocoa
public extension Reactive where Base: WKScriptMessageHandler {
func didReceiveMessage() -> Observable<(WKUserContentController, WKScriptMessage)> {
return self.methodInvoked(#selector(Base.userContentController))
.map { args in
guard args.count == 2,
let controller = args[0] as? WKUserContentController,
let message = args[1] as? WKScriptMessage else {
throw RxCocoaError.castingError(object: args,
targetType: (WKUserContentController, WKScriptMessage).self)
}
return (controller, message)
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment