Skip to content

Commit 2f587d2

Browse files
authored
task isolation for notification (#76)
1 parent 64161af commit 2f587d2

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

fcitx5

Submodule fcitx5 updated 48 files

iosnotifications/notify.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
public func showTip(_ icon: String, _ body: String, _ timeout: Int32) {
2-
guard let showToastCallback = showToastCallback else {
3-
return
2+
Task { @MainActor in
3+
guard let showToastCallback = showToastCallback else {
4+
return
5+
}
6+
showToastCallback(icon, body, timeout)
47
}
5-
showToastCallback(icon, body, timeout)
68
}

iosnotifications/toast.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
@MainActor
12
var showToastCallback: ((String, String, Int32) -> Void)?
23

4+
@MainActor
35
public func setShowToastCallback(_ callback: @escaping (String, String, Int32) -> Void) {
46
showToastCallback = callback
57
}

src/ContentView.swift

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -107,16 +107,14 @@ struct ContentView: View {
107107
try? "".write(
108108
to: documents.appendingPathComponent("placeholder"), atomically: true, encoding: .utf8)
109109
setShowToastCallback({ icon, message, duration in
110-
DispatchQueue.main.async {
111-
self.duration = Double(duration) / 1000.0
112-
self.message = message
113-
self.icon = icon
114-
if icon == "running" {
115-
self.showLoadingToast = true
116-
} else {
117-
self.showLoadingToast = false
118-
self.showToast = true
119-
}
110+
self.duration = Double(duration) / 1000.0
111+
self.message = message
112+
self.icon = icon
113+
if icon == "running" {
114+
self.showLoadingToast = true
115+
} else {
116+
self.showLoadingToast = false
117+
self.showToast = true
120118
}
121119
})
122120
viewModel.refresh()

0 commit comments

Comments
 (0)