Skip to content

Commit b5946eb

Browse files
authored
Bugfix/update loading overlay (#119)
* Работа в процессе Поменял способ работы модификатора с лоадером - теперь через ZStack и if/else, чтобы не дрифтовал * Работа в процессе Прячу лишний лоадер при рефреше * Поправил лоадер * Мелкий рефактор
1 parent 63d9e94 commit b5946eb

File tree

6 files changed

+17
-17
lines changed

6 files changed

+17
-17
lines changed

SwiftUI-WorkoutApp/DesignSystem/Sources/DesignSystem/ViewModifiers/LoadingOverlayModifier.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,26 @@ struct LoadingOverlayModifier: ViewModifier {
44
let isLoading: Bool
55

66
func body(content: Content) -> some View {
7-
content
8-
.disabled(isLoading)
9-
.opacity(isLoading ? 0.5 : 1)
10-
.animation(.default, value: isLoading)
11-
.overlay {
12-
LoadingIndicator(isVisible: isLoading)
7+
ZStack {
8+
if isLoading {
9+
content.opacity(0.5)
10+
LoadingIndicator()
11+
} else {
12+
content
1313
}
14+
}
15+
.disabled(isLoading)
16+
.animation(.default, value: isLoading)
1417
}
1518
}
1619

1720
private struct LoadingIndicator: View {
1821
@State private var isAnimating = false
19-
let isVisible: Bool
2022

2123
var body: some View {
2224
Image("LoadingIndicator", bundle: .module)
2325
.resizable()
2426
.frame(width: 50, height: 50)
25-
.opacity(isVisible ? 1 : 0)
26-
.animation(.default, value: isVisible)
2727
.rotationEffect(Angle(degrees: isAnimating ? 360 : 0))
2828
.animation(
2929
.linear(duration: 2.0).repeatForever(autoreverses: false),

SwiftUI-WorkoutApp/Screens/Events/List/EventsListView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ private extension EventsListView {
150150
}
151151

152152
var showEmptyView: Bool {
153-
selectedEventType == .future && viewModel.futureEvents.isEmpty
153+
selectedEventType == .future && viewModel.futureEvents.isEmpty && !viewModel.isLoading
154154
}
155155

156156
func selectedEventAction(_: EventType) {

SwiftUI-WorkoutApp/Screens/Journals/JournalsList/JournalsListView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private extension JournalsListView {
116116
}
117117

118118
var showEmptyView: Bool {
119-
viewModel.list.isEmpty && isMainUser
119+
viewModel.list.isEmpty && isMainUser && !viewModel.isLoading
120120
}
121121

122122
var isMainUser: Bool {

SwiftUI-WorkoutApp/Screens/Messages/DialogList/DialogListView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ private extension DialogListView {
8585
}
8686

8787
var showEmptyView: Bool {
88-
viewModel.list.isEmpty
88+
viewModel.list.isEmpty && !viewModel.isLoading
8989
}
9090

9191
var emptyViewButtonTitle: String {

SwiftUI-WorkoutApp/Screens/Messages/DialogList/DialogListViewModel.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ final class DialogListViewModel: ObservableObject {
99

1010
func makeItems(with defaults: DefaultsService, refresh: Bool) async {
1111
if isLoading || (!list.isEmpty && !refresh) { return }
12-
isLoading.toggle()
12+
if !refresh { isLoading.toggle() }
1313
do {
1414
list = try await APIService(with: defaults).getDialogs()
1515
let unreadMessagesCount = list.map(\.unreadMessagesCount).reduce(0, +)
1616
defaults.saveUnreadMessagesCount(unreadMessagesCount)
1717
} catch {
1818
errorMessage = ErrorFilterService.message(from: error)
1919
}
20-
isLoading.toggle()
20+
if !refresh { isLoading.toggle() }
2121
}
2222

2323
func deleteDialog(at index: Int?, with defaults: DefaultsProtocol) async {

SwiftUI-WorkoutApp/Screens/SportsGrounds/List/SportsGroundListViewModel.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ final class SportsGroundListViewModel: ObservableObject {
1515
let needUpdate = list.isEmpty || refresh
1616
if isMainUser {
1717
if !needUpdate, !defaults.needUpdateUser { return }
18-
isLoading.toggle()
18+
if !refresh { isLoading.toggle() }
1919
await makeList(for: userID, with: defaults)
2020
} else {
2121
if !needUpdate { return }
22-
isLoading.toggle()
22+
if !refresh { isLoading.toggle() }
2323
await makeList(for: userID, with: defaults)
2424
}
25-
isLoading.toggle()
25+
if !refresh { isLoading.toggle() }
2626
case let .added(list):
2727
self.list = list
2828
}

0 commit comments

Comments
 (0)