Skip to content

Commit 023976d

Browse files
authored
Merge pull request #908 from DimensionDev/ios/20250507
Ios/20250507
2 parents 5f9644b + 0ce1d78 commit 023976d

File tree

10 files changed

+3642
-3338
lines changed

10 files changed

+3642
-3338
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ android.nonTransitiveRClass=true
55

66
#kotlin.experimental.tryK2=true
77
android.lint.useK2Uast=true
8-
kotlin.native.cacheKind=none
8+
#kotlin.native.cacheKind=none ios faster build?
99

1010
#MPP
1111
kotlin.mpp.stability.nowarn=true

iosApp/iosApp/Data/UserManager.swift

Lines changed: 51 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ class UserManager {
66
static let shared = UserManager()
77

88
private var currentUser: UiUserV2?
9+
private(set) var instanceMetadata: UiInstanceMetadata?
10+
911
private var presenter = ActiveAccountPresenter()
1012
private var isInitialized = false
1113

@@ -51,10 +53,57 @@ class UserManager {
5153
NotificationCenter.default.post(name: .userDidUpdate, object: data.data)
5254
os_log("[UserManager] 初始化完成,用户: %{public}@", log: .default, type: .debug, data.data.name.raw)
5355
// 获取到用户后就退出循环
56+
57+
if self.currentUser?.isMastodon == true || self.currentUser?.isMisskey == true {
58+
fetchAndStoreInstanceMetadata(host: data.data.key.host, platformType: data.data.platformType)
59+
}
5460
}
5561
}
5662
}
5763
}
58-
}
5964

60-
// 添加通知名称
65+
private func fetchAndStoreInstanceMetadata(host: String, platformType: PlatformType) {
66+
print("UserManager (PresenterBase Model): 初始化 \(host) 的元数据获取...")
67+
instanceMetadata = nil
68+
69+
let presenter = InstanceMetadataPresenter(host: host, platformType: platformType)
70+
Task { @MainActor in
71+
print("UserManager (PresenterBase Model): Task started for \(host)")
72+
73+
do {
74+
for try await stateContainer in presenter.models {
75+
if Task.isCancelled {
76+
print("UserManager (PresenterBase Model): Observation task cancelled for \(host).")
77+
78+
break
79+
}
80+
81+
let uiState = stateContainer.data
82+
print("UserManager (PresenterBase Model): Received state for \(host): \(uiState)")
83+
84+
// self.isLoadingInstanceMetadata = uiState is UiStateLoading<UiInstanceMetadata>
85+
86+
if let successState = uiState as? UiStateSuccess<UiInstanceMetadata> {
87+
self.instanceMetadata = successState.data
88+
print("UserManager (PresenterBase Model): Success for \(host).")
89+
break
90+
} else if let errorState = uiState as? UiStateError<UiInstanceMetadata> {
91+
self.instanceMetadata = nil
92+
let errorMessage = errorState.throwable.message ?? "An unknown error occurred."
93+
print("UserManager (PresenterBase Model): Error for \(host) - \(errorMessage).")
94+
break
95+
} else if uiState is UiStateLoading<UiInstanceMetadata> {
96+
print("UserManager (PresenterBase Model): Still loading for \(host).")
97+
}
98+
}
99+
} catch {
100+
if Task.isCancelled {
101+
print("UserManager (PresenterBase Model): Observation task for \(host) caught cancellation error.")
102+
} else {
103+
print("UserManager (PresenterBase Model): Error observing \(host) metadata flow - \(error.localizedDescription)")
104+
}
105+
self.instanceMetadata = nil
106+
}
107+
}
108+
}
109+
}

iosApp/iosApp/FlareApp.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import FontAwesomeSwiftUI
22
import shared
33
import SwiftUI
44

5-
65
@main
76
struct FlareApp: SwiftUI.App {
87
#if os(macOS)

0 commit comments

Comments
 (0)