@@ -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+ }
0 commit comments