@@ -11,8 +11,10 @@ struct SwiftUI_WorkoutAppApp: App {
1111 @StateObject private var defaults = DefaultsService ( )
1212 @StateObject private var network = NetworkStatus ( )
1313 @StateObject private var parksManager = ParksManager ( )
14+ @StateObject private var dialogsViewModel = DialogsViewModel ( )
1415 @State private var countriesUpdateTask : Task < Void , Never > ?
1516 @State private var socialUpdateTask : Task < Void , Never > ?
17+ @State private var dialogsUpdateTask : Task < Void , Never > ?
1618 private let countriesStorage = SWAddress ( )
1719 private var client : SWClient { SWClient ( with: defaults) }
1820 private var colorScheme : ColorScheme ? {
@@ -38,6 +40,7 @@ struct SwiftUI_WorkoutAppApp: App {
3840 . environmentObject ( network)
3941 . environmentObject ( defaults)
4042 . environmentObject ( parksManager)
43+ . environmentObject ( dialogsViewModel)
4144 . preferredColorScheme ( colorScheme)
4245 . environment ( \. isNetworkConnected, network. isConnected)
4346 . environment ( \. userFlags, defaults. userFlags)
@@ -67,18 +70,15 @@ struct SwiftUI_WorkoutAppApp: App {
6770 private func updateSocialInfoIfNeeded( ) {
6871 guard let mainUserId = defaults. mainUserInfo? . id else { return }
6972 socialUpdateTask = Task {
70- async let socialUpdatesTask = client. getSocialUpdates ( userID: mainUserId)
71- async let unreadCountTask = UnreadCountService ( client: client) . getUnreadCount ( )
72- let ( socialUpdates, unreadCount) = await ( socialUpdatesTask, unreadCountTask)
73- if let socialUpdates {
74- try ? defaults. saveFriendsIds ( socialUpdates. friends. map ( \. id) )
75- try ? defaults. saveFriendRequests ( socialUpdates. friendRequests)
76- try ? defaults. saveBlacklist ( socialUpdates. blacklist)
73+ if let result = await client. getSocialUpdates ( userID: mainUserId) {
74+ try ? defaults. saveFriendsIds ( result. friends. map ( \. id) )
75+ try ? defaults. saveFriendRequests ( result. friendRequests)
76+ try ? defaults. saveBlacklist ( result. blacklist)
7777 defaults. setUserNeedUpdate ( false )
7878 }
79- if let unreadCount {
80- defaults . saveUnreadMessagesCount ( unreadCount )
81- }
79+ }
80+ dialogsUpdateTask = Task {
81+ try ? await dialogsViewModel . askForDialogs ( refresh : true , defaults : defaults )
8282 }
8383 }
8484}
@@ -93,7 +93,13 @@ private extension SwiftUI_WorkoutAppApp {
9393 $0. backgroundColor = . init( Color . swBackground)
9494 $0. shadowColor = nil
9595 }
96+ let tabBarItemAppearance = makeTabBarItemAppearance ( )
97+ tabBarAppearance. inlineLayoutAppearance = tabBarItemAppearance
98+ tabBarAppearance. stackedLayoutAppearance = tabBarItemAppearance
99+ tabBarAppearance. compactInlineLayoutAppearance = tabBarItemAppearance
100+ UITabBar . appearance ( ) . standardAppearance = tabBarAppearance
96101 UITabBar . appearance ( ) . scrollEdgeAppearance = tabBarAppearance
102+ UINavigationBar . appearance ( ) . standardAppearance = navBarAppearance
97103 UINavigationBar . appearance ( ) . scrollEdgeAppearance = navBarAppearance
98104 fixAlertAccentColor ( )
99105 if !DeviceOSVersionChecker. iOS16Available {
@@ -104,15 +110,27 @@ private extension SwiftUI_WorkoutAppApp {
104110 /// Исправляет баг с accentColor у алертов, [обсуждение](https://developer.apple.com/forums/thread/673147)
105111 ///
106112 /// Без этой настройки у всех алертов при первом появлении стандартный tintColor (синий),
107- /// а при нажатии он меняется на ` AccentColor` в проекте
113+ /// а при нажатии он меняется на AccentColor в проекте
108114 func fixAlertAccentColor( ) {
109115 UIView . appearance ( ) . tintColor = . accent
110116 }
111117
118+ /// Настройки цветовых параметров для табов в таббаре
119+ func makeTabBarItemAppearance( ) -> UITabBarItemAppearance {
120+ let tabBarItemAppearance = UITabBarItemAppearance ( )
121+ tabBarItemAppearance. normal. iconColor = . init( . swSmallElements)
122+ tabBarItemAppearance. normal. titleTextAttributes = [ . foregroundColor: UIColor ( . swSmallElements) ]
123+ tabBarItemAppearance. normal. badgeBackgroundColor = . accent
124+ tabBarItemAppearance. normal. badgeTextAttributes = [ . foregroundColor: UIColor ( . swBackground) ]
125+ return tabBarItemAppearance
126+ }
127+
128+ #if DEBUG
112129 func prepareForUITestIfNeeded( ) {
113130 if ProcessInfo . processInfo. arguments. contains ( " UITest " ) {
114131 UserDefaults . standard. removePersistentDomain ( forName: Bundle . main. bundleIdentifier!)
115132 UIView . setAnimationsEnabled ( false )
116133 }
117134 }
135+ #endif
118136}
0 commit comments