Skip to content

Commit c1e2bd5

Browse files
authored
Merge pull request #96 from OlegEremenko991/feature/update-friend-list
Обновляю списки при появлении приложения на экране: - Список друзей - Список заявок в друзья - Черный список Поправил размер навбара после логаута в профиле Рефактор логаута в UserDefaults
2 parents 550723c + 7a9211d commit c1e2bd5

File tree

10 files changed

+46
-21
lines changed

10 files changed

+46
-21
lines changed

SwiftUI-WorkoutApp.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,7 +1216,7 @@
12161216
"$(inherited)",
12171217
"@executable_path/Frameworks",
12181218
);
1219-
MARKETING_VERSION = 3.2.0;
1219+
MARKETING_VERSION = 3.2.1;
12201220
PRODUCT_BUNDLE_IDENTIFIER = com.FGU.WorkOut;
12211221
PRODUCT_NAME = WorkoutApp;
12221222
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -1252,7 +1252,7 @@
12521252
"$(inherited)",
12531253
"@executable_path/Frameworks",
12541254
);
1255-
MARKETING_VERSION = 3.2.0;
1255+
MARKETING_VERSION = 3.2.1;
12561256
PRODUCT_BUNDLE_IDENTIFIER = com.FGU.WorkOut;
12571257
PRODUCT_NAME = WorkoutApp;
12581258
SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

SwiftUI-WorkoutApp/SWModels/Sources/SWModels/Journal/JournalAccess.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public enum JournalAccess: Int, CaseIterable, CustomStringConvertible {
1919
case .nobody: return "Только я"
2020
}
2121
}
22-
22+
2323
#warning("Сервер возвращает ошибку 404, ждем от Антона уточнений по API")
2424
/// Проверяет возможность создания записи в дневнике
2525
/// - Parameters:

SwiftUI-WorkoutApp/Screens/Common/ImagePicker/PickedImagesGrid.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ private extension PickedImagesGrid {
100100
return "Добавьте фотографии, максимум \(selectionLimit)"
101101
} else {
102102
return selectionLimit > 0
103-
? "Можно добавить ещё \(selectionLimitString)"
104-
: "Добавлено максимальное количество фотографий"
103+
? "Можно добавить ещё \(selectionLimitString)"
104+
: "Добавлено максимальное количество фотографий"
105105
}
106106
}
107107

SwiftUI-WorkoutApp/Screens/Common/TextEntry/TextEntryView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ private extension TextEntryView.Mode {
6969
return "Изменить запись"
7070
}
7171
}
72-
72+
7373
var placeholder: String? {
7474
switch self {
7575
case .newForJournal:

SwiftUI-WorkoutApp/Screens/Events/Form/EventFormView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ private extension EventFormView {
9898
}
9999
.disabled(
100100
!viewModel.canShowGroundPicker(with: defaults, mode: mode)
101-
|| !network.isConnected
101+
|| !network.isConnected
102102
)
103103
case let .createForSelected(ground):
104104
ListRowView(
@@ -116,7 +116,7 @@ private extension EventFormView {
116116
}
117117
.disabled(
118118
!viewModel.canShowGroundPicker(with: defaults, mode: mode)
119-
|| !network.isConnected
119+
|| !network.isConnected
120120
)
121121
}
122122
}

SwiftUI-WorkoutApp/Screens/Events/Form/EventFormViewModel.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ final class EventFormViewModel: ObservableObject {
6464
case .createForSelected:
6565
return false
6666
}
67-
6867
}
6968

7069
func clearErrorMessage() { errorMessage = "" }

SwiftUI-WorkoutApp/Screens/Profile/ProfileScreen.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ struct ProfileScreen: View {
1313
} else {
1414
IncognitoProfileView()
1515
.navigationTitle("Профиль")
16+
.navigationBarTitleDisplayMode(.large)
1617
}
1718
}
1819
}

SwiftUI-WorkoutApp/Services/APIService.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,25 @@ struct APIService {
6767
try await defaults.saveAuthData(authData)
6868
let result = try await makeResult(LoginResponse.self, for: Endpoint.login.urlRequest(with: baseUrlString))
6969
try await getUserByID(result.userID, loginFlow: true)
70+
await getSocialUpdates(userID: result.userID)
71+
}
72+
73+
/// Запрашивает обновления списка друзей, заявок в друзья, черного списка
74+
///
75+
/// - Вызывается при авторизации и при `scenePhase = active`
76+
/// - Список чатов не обновляет
77+
/// - Returns: `true` - все успешно обновилось, `false` - что-то не обновилось
78+
@discardableResult
79+
func getSocialUpdates(userID: Int?) async -> Bool {
80+
guard let userID else { return false }
81+
do {
82+
try await getFriendsForUser(id: userID)
83+
try await getFriendRequests()
84+
try await getBlacklist()
85+
return true
86+
} catch {
87+
return false
88+
}
7089
}
7190

7291
/// Запрашивает данные пользователя по `id`

SwiftUI-WorkoutApp/Services/DefaultsService.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -169,15 +169,15 @@ final class DefaultsService: ObservableObject, DefaultsProtocol {
169169
func triggerLogout() {
170170
authData = .init()
171171
userInfo = .init()
172-
friendsIds = .init()
173-
friendRequests = .init()
174-
blacklist = .init()
175-
unreadMessagesCount = 0
176172
isAuthorized = false
177-
hasFriends = false
178-
hasJournals = false
179173
hasSportsGrounds = false
180-
needUpdateUser = true
174+
try? saveFriendsIds([])
175+
try? saveFriendRequests([])
176+
try? saveBlacklist([])
177+
saveUnreadMessagesCount(0)
178+
setHasJournals(false)
179+
setUserNeedUpdate(true)
180+
setAppTheme(.system)
181181
}
182182
}
183183

SwiftUI-WorkoutApp/SwiftUI_WorkoutAppApp.swift

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ struct SwiftUI_WorkoutAppApp: App {
88
@StateObject private var tabViewModel = TabViewModel()
99
@StateObject private var defaults = DefaultsService()
1010
@StateObject private var network = NetworkStatus()
11+
@State private var socialUpdateTask: Task<Void, Never>?
1112

1213
init() {
1314
setupAppearance()
@@ -25,13 +26,18 @@ struct SwiftUI_WorkoutAppApp: App {
2526
AppThemeService.set(defaults.appTheme)
2627
}
2728
}
28-
.onChange(of: scenePhase) {
29-
if case .background = $0 {
29+
.onChange(of: scenePhase) { phase in
30+
switch phase {
31+
case .active:
32+
socialUpdateTask = Task {
33+
let isUpdated = await APIService(with: defaults)
34+
.getSocialUpdates(userID: defaults.mainUserInfo?.userID)
35+
defaults.setUserNeedUpdate(!isUpdated)
36+
}
37+
default:
38+
socialUpdateTask?.cancel()
3039
defaults.setUserNeedUpdate(true)
3140
}
32-
#if DEBUG
33-
print("--- scenePhase = \($0)")
34-
#endif
3541
}
3642
}
3743
}

0 commit comments

Comments
 (0)