Refactor task usage and profile auto update

This commit is contained in:
世界
2023-09-22 11:32:51 +08:00
parent 390e063f20
commit 3374f8e727
49 changed files with 823 additions and 636 deletions
@@ -9,3 +9,21 @@ public extension Binding {
})
}
}
public extension Binding where Value == Int32 {
func stringBinding(defaultValue: Int32) -> Binding<String> {
return Binding<String> {
var intValue = wrappedValue
if intValue == 0 {
intValue = defaultValue
}
return String(intValue)
} set: { newValue in
var newIntValue = Int32(newValue) ?? defaultValue
if newIntValue == 0 {
newIntValue = defaultValue
}
wrappedValue = newIntValue
}
}
}
@@ -27,6 +27,8 @@ public func FormItem(_ title: String, @ViewBuilder content: () -> some View) ->
#if os(iOS) || os(tvOS)
HStack {
Text(title)
.lineLimit(1)
.layoutPriority(1)
Spacer()
Spacer()
content()
@@ -7,6 +7,7 @@ import SwiftUI
import AppKit
#endif
@MainActor
public struct ProfileShareButton<Label>: View where Label: View {
private let alert: Binding<Alert?>
private let profile: Profile
@@ -62,8 +63,8 @@ public struct ShareButtonCompat<Label>: View where Label: View {
private func shareItem() {
#if os(iOS)
Task.detached {
shareItem0()
Task {
await shareItem0()
}
#elseif os(macOS)
sharePresented = true
@@ -71,14 +72,14 @@ public struct ShareButtonCompat<Label>: View where Label: View {
}
#if os(iOS)
private func shareItem0() {
private nonisolated func shareItem0() async {
do {
let shareItem = try itemURL()
DispatchQueue.main.async {
await MainActor.run {
shareItem1(shareItem)
}
} catch {
DispatchQueue.main.async {
await MainActor.run {
alert = Alert(error)
}
}