mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-25 22:38:56 +08:00
fix(ios): fix ios http and ws (#9805)
This commit is contained in:
@@ -53,8 +53,8 @@ class AffineHttpHandler: NSObject, WKURLSchemeHandler {
|
||||
request.setValue(value, forHTTPHeaderField: key)
|
||||
}
|
||||
|
||||
URLSession.shared.dataTask(with: request) {
|
||||
rawData, rawResponse, error in
|
||||
let task = URLSession.shared.dataTask(with: request) {
|
||||
(rawData, rawResponse, error) in
|
||||
urlSchemeTask.stopped?.withLock({
|
||||
if $0 {
|
||||
return
|
||||
@@ -91,12 +91,16 @@ class AffineHttpHandler: NSObject, WKURLSchemeHandler {
|
||||
}
|
||||
})
|
||||
}
|
||||
task.resume()
|
||||
|
||||
urlSchemeTask.dataTask = task
|
||||
}
|
||||
|
||||
func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask) {
|
||||
urlSchemeTask.stopped?.withLock({
|
||||
$0 = true
|
||||
})
|
||||
urlSchemeTask.dataTask?.cancel()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,9 +110,18 @@ private extension WKURLSchemeTask {
|
||||
return objc_getAssociatedObject(self, &stoppedKey) as? Mutex<Bool> ?? nil
|
||||
}
|
||||
set {
|
||||
objc_setAssociatedObject(self, &stoppedKey, newValue, .OBJC_ASSOCIATION_ASSIGN)
|
||||
objc_setAssociatedObject(self, &stoppedKey, newValue, .OBJC_ASSOCIATION_RETAIN)
|
||||
}
|
||||
}
|
||||
var dataTask: URLSessionDataTask? {
|
||||
get {
|
||||
return objc_getAssociatedObject(self, &dataTaskKey) as? URLSessionDataTask
|
||||
}
|
||||
set {
|
||||
objc_setAssociatedObject(self, &dataTaskKey, newValue, .OBJC_ASSOCIATION_RETAIN)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private var stoppedKey = malloc(1)
|
||||
private var dataTaskKey = malloc(1)
|
||||
|
||||
@@ -168,7 +168,7 @@ class AffineWsHandler: NSObject, WKURLSchemeHandler {
|
||||
|
||||
func webView(_ webView: WKWebView, stop urlSchemeTask: WKURLSchemeTask) {
|
||||
urlSchemeTask.stopped?.withLock({
|
||||
$0 = false
|
||||
$0 = true
|
||||
})
|
||||
urlSchemeTask.wsTask?.cancel(with: .abnormalClosure, reason: "Closed".data(using: .utf8))
|
||||
}
|
||||
@@ -180,7 +180,7 @@ private extension WKURLSchemeTask {
|
||||
return objc_getAssociatedObject(self, &stoppedKey) as? Mutex<Bool> ?? nil
|
||||
}
|
||||
set {
|
||||
objc_setAssociatedObject(self, &stoppedKey, newValue, .OBJC_ASSOCIATION_ASSIGN)
|
||||
objc_setAssociatedObject(self, &stoppedKey, newValue, .OBJC_ASSOCIATION_RETAIN)
|
||||
}
|
||||
}
|
||||
var wsTask: URLSessionWebSocketTask? {
|
||||
@@ -188,7 +188,7 @@ private extension WKURLSchemeTask {
|
||||
return objc_getAssociatedObject(self, &wsTaskKey) as? URLSessionWebSocketTask
|
||||
}
|
||||
set {
|
||||
objc_setAssociatedObject(self, &stoppedKey, newValue, .OBJC_ASSOCIATION_ASSIGN)
|
||||
objc_setAssociatedObject(self, &wsTaskKey, newValue, .OBJC_ASSOCIATION_RETAIN)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user