diff --git a/SwiftUI-WorkoutApp.xcodeproj/project.pbxproj b/SwiftUI-WorkoutApp.xcodeproj/project.pbxproj index 561d225c..266b9b89 100644 --- a/SwiftUI-WorkoutApp.xcodeproj/project.pbxproj +++ b/SwiftUI-WorkoutApp.xcodeproj/project.pbxproj @@ -856,7 +856,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CLANG_WARN_SEMICOLON_BEFORE_METHOD_BODY = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 9; + CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_ASSET_PATHS = "SwiftUI-WorkoutApp/Preview\\ Content/PreviewContent.swift SwiftUI-WorkoutApp/Preview\\ Content"; DEVELOPMENT_TEAM = CR68PP2Z3F; ENABLE_PREVIEWS = YES; @@ -907,7 +907,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CLANG_WARN_SEMICOLON_BEFORE_METHOD_BODY = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 9; + CURRENT_PROJECT_VERSION = 10; DEVELOPMENT_ASSET_PATHS = "SwiftUI-WorkoutApp/Preview\\ Content/PreviewContent.swift SwiftUI-WorkoutApp/Preview\\ Content"; DEVELOPMENT_TEAM = CR68PP2Z3F; ENABLE_PREVIEWS = YES; diff --git a/SwiftUI-WorkoutApp/Libraries/SWNetwork/Sources/SWNetwork/SWNetwork.swift b/SwiftUI-WorkoutApp/Libraries/SWNetwork/Sources/SWNetwork/SWNetwork.swift index 3454c389..10dfa8c8 100644 --- a/SwiftUI-WorkoutApp/Libraries/SWNetwork/Sources/SWNetwork/SWNetwork.swift +++ b/SwiftUI-WorkoutApp/Libraries/SWNetwork/Sources/SWNetwork/SWNetwork.swift @@ -163,15 +163,20 @@ private extension SWNetworkService { /// - Returns: Новая ошибка @discardableResult func handleUrlSession(_ error: Error, _ request: URLRequest) -> Error { - if (error as NSError).code == -999 { - assertionFailure("Запрос отменён! Код ошибки: -999") + let errorCode = (error as NSError).code + if errorCode == -999 { + let message = "Запрос отменён! Код ошибки: -999. URL запроса: \(request.urlString)" + logger.error("\(message)") + } else { + logger.error( + """ + Ошибка! + \(error.localizedDescription, privacy: .public) + Код ошибки: \(errorCode, privacy: .public) + \nURL запроса: \(request.urlString, privacy: .public) + """ + ) } - logger.error( - """ - \(error.localizedDescription, privacy: .public) - \nURL запроса: \(request.urlString, privacy: .public) - """ - ) guard let urlError = error as? URLError else { return error } diff --git a/SwiftUI-WorkoutApp/Libraries/SWUtils/Sources/SWUtils/SWAlert.swift b/SwiftUI-WorkoutApp/Libraries/SWUtils/Sources/SWUtils/SWAlert.swift index 7f0eb548..f3cf4c2b 100644 --- a/SwiftUI-WorkoutApp/Libraries/SWUtils/Sources/SWUtils/SWAlert.swift +++ b/SwiftUI-WorkoutApp/Libraries/SWUtils/Sources/SWUtils/SWAlert.swift @@ -34,6 +34,14 @@ public final class SWAlert { topMostViewController.present(alert, animated: true) } + /// Показывает стандартный алерт с сообщение об ошибке + /// + /// Игнорирует `CancellationError` + public func presentDefaultUIKit(_ error: Error) { + guard (error as NSError).code != -999 else { return } + presentDefaultUIKit(message: error.localizedDescription) + } + private func dismiss() { currentAlert?.dismiss(animated: true) currentAlert = nil diff --git a/SwiftUI-WorkoutApp/Screens/Common/ImagePicker/ModernPickedImagesGrid.swift b/SwiftUI-WorkoutApp/Screens/Common/ImagePicker/ModernPickedImagesGrid.swift index 4df68695..6ffe515c 100644 --- a/SwiftUI-WorkoutApp/Screens/Common/ImagePicker/ModernPickedImagesGrid.swift +++ b/SwiftUI-WorkoutApp/Screens/Common/ImagePicker/ModernPickedImagesGrid.swift @@ -66,7 +66,7 @@ struct ModernPickedImagesGrid: View { let newImages = try await loadImages(from: selectedItems) images.append(contentsOf: newImages) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } selectedItems.removeAll() isLoading.toggle() diff --git a/SwiftUI-WorkoutApp/Screens/Common/TextEntryScreen.swift b/SwiftUI-WorkoutApp/Screens/Common/TextEntryScreen.swift index fb046012..9ca86da4 100644 --- a/SwiftUI-WorkoutApp/Screens/Common/TextEntryScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Common/TextEntryScreen.swift @@ -124,7 +124,7 @@ private extension TextEntryScreen { } if isSuccess { refreshClbk() } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Common/UsersListScreen.swift b/SwiftUI-WorkoutApp/Screens/Common/UsersListScreen.swift index 6f85db49..b221c97b 100644 --- a/SwiftUI-WorkoutApp/Screens/Common/UsersListScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Common/UsersListScreen.swift @@ -6,6 +6,7 @@ import SWUtils /// Экран со списком пользователей struct UsersListScreen: View { + @Environment(\.dismiss) private var dismiss @Environment(\.isNetworkConnected) private var isNetworkConnected @EnvironmentObject private var defaults: DefaultsService @State private var users = [UserResponse]() @@ -21,20 +22,10 @@ struct UsersListScreen: View { ScrollView { VStack(spacing: 0) { friendRequestsSectionIfNeeded - SectionView( - header: friendRequests.isEmpty ? nil : "Друзья", - mode: .regular - ) { - LazyVStack(spacing: 12) { - ForEach(users) { item in - listItem(for: item) - .disabled(item.id == defaults.mainUserInfo?.id) - } - } - } - .padding(.top) + friendsSectionIfNeeded } .padding(.horizontal) + .frame(maxWidth: .infinity) } .sheet( item: $messagingModel.recipient, @@ -98,6 +89,27 @@ private extension UsersListScreen { } } + @ViewBuilder + var friendsSectionIfNeeded: some View { + ZStack { + if !users.isEmpty { + SectionView( + header: friendRequests.isEmpty ? nil : "Друзья", + mode: .regular + ) { + LazyVStack(spacing: 12) { + ForEach(users) { item in + listItem(for: item) + .disabled(item.id == defaults.mainUserInfo?.id) + } + } + } + } + } + .animation(.default, value: users) + .padding(.top) + } + @ViewBuilder func listItem(for model: UserResponse) -> some View { switch mode { @@ -146,7 +158,7 @@ private extension UsersListScreen { let isSuccess = try await client.sendMessage(messagingModel.message, to: userID) endMessaging(isSuccess: isSuccess) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } messagingModel.isLoading = false } @@ -166,32 +178,24 @@ private extension UsersListScreen { case let .friends(userID), let .friendsForChat(userID): if !users.isEmpty, !refresh { return } if !refresh { isLoading = true } - let isMainUser = userID == defaults.mainUserInfo?.id - let response = try await client.getFriendsForUser(id: userID) - if isMainUser { - try? defaults.saveFriendsIds(response.map(\.id)) - if defaults.friendRequestsList.isEmpty || refresh { - friendRequests = try await client.getFriendRequests() - try? defaults.saveFriendRequests(friendRequests) - } else { - friendRequests = defaults.friendRequestsList - } + if userID == defaults.mainUserInfo?.id { + try await makeListForMainUser(userID) + } else { + users = try await client.getFriendsForUser(id: userID) } - users = response case let .eventParticipants(list), let .parkParticipants(list): users = list case .blacklist: if !users.isEmpty, !refresh { return } if !refresh { isLoading = true } - if defaults.blacklistedUsers.isEmpty || refresh { - users = try await client.getBlacklist() - try? defaults.saveBlacklist(users) - } else { - users = defaults.blacklistedUsers + users = try await client.getBlacklist() + try? defaults.saveBlacklist(users) + if users.isEmpty { + dismiss() } } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -202,14 +206,26 @@ private extension UsersListScreen { do { let isSuccess = try await client.respondToFriendRequest(from: userID, accept: accept) if isSuccess { - await askForUsers(refresh: true) + friendRequests.removeAll(where: { $0.id == userID }) + try await makeListForMainUser(defaults.mainUserInfo?.id) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } } + + func makeListForMainUser(_ id: Int?) async throws { + guard let id else { return } + async let friendsTask = client.getFriendsForUser(id: id) + async let requestsTask = client.getFriendRequests() + let (friends, requests) = try await (friendsTask, requestsTask) + try? defaults.saveFriendsIds(friends.map(\.id)) + try? defaults.saveFriendRequests(requests) + users = friends + friendRequests = requests + } } #if DEBUG diff --git a/SwiftUI-WorkoutApp/Screens/Events/EventDetailsScreen.swift b/SwiftUI-WorkoutApp/Screens/Events/EventDetailsScreen.swift index b7edf4f1..6ef8311c 100644 --- a/SwiftUI-WorkoutApp/Screens/Events/EventDetailsScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Events/EventDetailsScreen.swift @@ -117,7 +117,7 @@ private extension EventDetailsScreen { onDeletion(event.id) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -228,7 +228,7 @@ private extension EventDetailsScreen { event.trainHere = oldValue } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) event.trainHere = oldValue } isLoading = false @@ -343,7 +343,7 @@ private extension EventDetailsScreen { do { event = try await SWClient(with: defaults).getEvent(by: event.id) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -356,7 +356,7 @@ private extension EventDetailsScreen { event.comments.removeAll(where: { $0.id == id }) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -372,7 +372,7 @@ private extension EventDetailsScreen { event.photos = event.removePhotoById(id) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Events/EventFormScreen.swift b/SwiftUI-WorkoutApp/Screens/Events/EventFormScreen.swift index ffecb5c1..27c3ae4a 100644 --- a/SwiftUI-WorkoutApp/Screens/Events/EventFormScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Events/EventFormScreen.swift @@ -189,7 +189,7 @@ private extension EventFormScreen { dismiss() } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Events/EventsListScreen.swift b/SwiftUI-WorkoutApp/Screens/Events/EventsListScreen.swift index 219cdd95..93dc0ede 100644 --- a/SwiftUI-WorkoutApp/Screens/Events/EventsListScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Events/EventsListScreen.swift @@ -188,7 +188,7 @@ private extension EventsListScreen { if selectedEventType == .past { pastEventStorage.loadIfNeeded(&pastEvents) } - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Messages/DialogScreen.swift b/SwiftUI-WorkoutApp/Screens/Messages/DialogScreen.swift index 481d413c..634144f4 100644 --- a/SwiftUI-WorkoutApp/Screens/Messages/DialogScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Messages/DialogScreen.swift @@ -162,7 +162,7 @@ private extension DialogScreen { markedAsReadClbk(dialog) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } @@ -172,7 +172,7 @@ private extension DialogScreen { do { messages = try await SWClient(with: defaults).getMessages(for: dialog.id).reversed() } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -188,7 +188,7 @@ private extension DialogScreen { await askForMessages(refresh: true) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Messages/DialogsListScreen.swift b/SwiftUI-WorkoutApp/Screens/Messages/DialogsListScreen.swift index 68851a08..ec365ac8 100644 --- a/SwiftUI-WorkoutApp/Screens/Messages/DialogsListScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Messages/DialogsListScreen.swift @@ -164,7 +164,7 @@ private extension DialogsListScreen { do { try await viewModel.askForDialogs(refresh: refresh, defaults: defaults) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } @@ -178,7 +178,7 @@ private extension DialogsListScreen { do { try await viewModel.deleteDialog(at: index, defaults: defaults) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } } diff --git a/SwiftUI-WorkoutApp/Screens/Parks/Map/ParksMapScreen.swift b/SwiftUI-WorkoutApp/Screens/Parks/Map/ParksMapScreen.swift index 2004b454..428dc370 100644 --- a/SwiftUI-WorkoutApp/Screens/Parks/Map/ParksMapScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Parks/Map/ParksMapScreen.swift @@ -190,7 +190,7 @@ private extension ParksMapScreen { do { try parksManager.makeDefaultList() } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } // Если прошло больше одного дня с момента предыдущего обновления, делаем обновление if parksManager.needUpdateDefaultList { @@ -206,7 +206,7 @@ private extension ParksMapScreen { do { try parksManager.deletePark(with: id) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } @@ -224,7 +224,7 @@ private extension ParksMapScreen { let updatedParks = try await SWClient(with: defaults).getUpdatedParks(from: dateString) try parksManager.updateDefaultList(with: updatedParks) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Parks/ParkDetailScreen.swift b/SwiftUI-WorkoutApp/Screens/Parks/ParkDetailScreen.swift index 085b8c33..1214b513 100644 --- a/SwiftUI-WorkoutApp/Screens/Parks/ParkDetailScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Parks/ParkDetailScreen.swift @@ -439,7 +439,7 @@ private extension ParkDetailScreen { ) onDeletion(park.id) } else { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } } diff --git a/SwiftUI-WorkoutApp/Screens/Parks/ParkFormScreen.swift b/SwiftUI-WorkoutApp/Screens/Parks/ParkFormScreen.swift index 92b3d8d8..844524c6 100644 --- a/SwiftUI-WorkoutApp/Screens/Parks/ParkFormScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Parks/ParkFormScreen.swift @@ -153,7 +153,7 @@ private extension ParkFormScreen { refreshClbk() } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Parks/ParksListScreen.swift b/SwiftUI-WorkoutApp/Screens/Parks/ParksListScreen.swift index 1f39d88f..949140ce 100644 --- a/SwiftUI-WorkoutApp/Screens/Parks/ParksListScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Parks/ParksListScreen.swift @@ -128,7 +128,7 @@ private extension ParksListScreen { parks = list } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -148,7 +148,7 @@ private extension ParksListScreen { dismiss() } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } } diff --git a/SwiftUI-WorkoutApp/Screens/Profile/EditProfile/EditProfileScreen.swift b/SwiftUI-WorkoutApp/Screens/Profile/EditProfile/EditProfileScreen.swift index e78a29b8..c69709b8 100644 --- a/SwiftUI-WorkoutApp/Screens/Profile/EditProfile/EditProfileScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Profile/EditProfile/EditProfileScreen.swift @@ -212,7 +212,7 @@ private extension EditProfileScreen { userForm = oldUserForm } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } @@ -244,7 +244,7 @@ private extension EditProfileScreen { dismiss() } catch { isLoading = false - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } } diff --git a/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalEntriesScreen.swift b/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalEntriesScreen.swift index e3b60918..e611b639 100644 --- a/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalEntriesScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalEntriesScreen.swift @@ -152,7 +152,7 @@ private extension JournalEntriesScreen { entries = try await SWClient(with: defaults) .getJournalEntries(for: userID, journalID: currentJournal.id) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -170,7 +170,7 @@ private extension JournalEntriesScreen { entries.removeAll(where: { $0.id == entryID }) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalSettingsScreen.swift b/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalSettingsScreen.swift index 845c6a0f..41a49fd6 100644 --- a/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalSettingsScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalSettingsScreen.swift @@ -100,7 +100,7 @@ private extension JournalSettingsScreen { updateOnSuccess(journal) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading.toggle() } diff --git a/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalsListScreen.swift b/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalsListScreen.swift index 91d5093e..423148ca 100644 --- a/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalsListScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Profile/Journals/JournalsListScreen.swift @@ -145,7 +145,7 @@ private extension JournalsListScreen { defaults.setUserNeedUpdate(true) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -173,7 +173,7 @@ private extension JournalsListScreen { do { journals = try await SWClient(with: defaults).getJournals(for: userID) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -193,7 +193,7 @@ private extension JournalsListScreen { await askForJournals(refresh: true) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Profile/MainUserProfileScreen.swift b/SwiftUI-WorkoutApp/Screens/Profile/MainUserProfileScreen.swift index 2e7872f9..82b34292 100644 --- a/SwiftUI-WorkoutApp/Screens/Profile/MainUserProfileScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Profile/MainUserProfileScreen.swift @@ -164,7 +164,7 @@ private extension MainUserProfileScreen { try defaults.saveFriendRequests(friendRequests) try defaults.saveBlacklist(blacklist) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } } } diff --git a/SwiftUI-WorkoutApp/Screens/Profile/SearchUsersScreen.swift b/SwiftUI-WorkoutApp/Screens/Profile/SearchUsersScreen.swift index 058988f0..464e7513 100644 --- a/SwiftUI-WorkoutApp/Screens/Profile/SearchUsersScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Profile/SearchUsersScreen.swift @@ -110,7 +110,7 @@ private extension SearchUsersScreen { let isSuccess = try await SWClient(with: defaults).sendMessage(messagingModel.message, to: userID) endMessaging(isSuccess: isSuccess) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } messagingModel.isLoading = false } @@ -134,7 +134,7 @@ private extension SearchUsersScreen { SWAlert.shared.presentDefaultUIKit(message: "Не удалось найти такого пользователя".localized) } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } diff --git a/SwiftUI-WorkoutApp/Screens/Profile/UserDetailsScreen.swift b/SwiftUI-WorkoutApp/Screens/Profile/UserDetailsScreen.swift index e66f9aea..770fcabf 100644 --- a/SwiftUI-WorkoutApp/Screens/Profile/UserDetailsScreen.swift +++ b/SwiftUI-WorkoutApp/Screens/Profile/UserDetailsScreen.swift @@ -41,7 +41,6 @@ struct UserDetailsScreen: View { .padding(.horizontal) } .frame(maxWidth: .infinity) - .opacity(user.isFull ? 1 : 0) .loadingOverlay(if: isLoading) .background(Color.swBackground) .toolbar { @@ -135,7 +134,7 @@ private extension UserDetailsScreen { } } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -166,7 +165,7 @@ private extension UserDetailsScreen { } } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } isLoading = false } @@ -199,7 +198,8 @@ private extension UserDetailsScreen { do { user = try await SWClient(with: defaults).getUserByID(user.id) } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + guard (error as NSError).code != -999 else { return } + SWAlert.shared.presentDefaultUIKit(error) } } @@ -212,7 +212,7 @@ private extension UserDetailsScreen { messagingModel.recipient = nil } } catch { - SWAlert.shared.presentDefaultUIKit(message: error.localizedDescription) + SWAlert.shared.presentDefaultUIKit(error) } messagingModel.isLoading = false }