Skip to content

Commit e5e348a

Browse files
authored
Show loading indcators instead of grayscale (#25405)
1 parent 36b74e3 commit e5e348a

4 files changed

Lines changed: 20 additions & 8 deletions

File tree

Modules/Sources/JetpackStats/Cards/ChartCard.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,19 @@ struct ChartCard: View {
4242
viewModel.onAppear()
4343
}
4444
.overlay(alignment: .topTrailing) {
45-
moreMenu
45+
HStack(spacing: 0) {
46+
if viewModel.isStale {
47+
ProgressView()
48+
.controlSize(.small)
49+
.transition(.scale.combined(with: .opacity))
50+
}
51+
moreMenu
52+
}
53+
.animation(.easeInOut(duration: 0.5), value: viewModel.isStale)
4654
}
4755
.cardStyle()
48-
.grayscale(viewModel.isStale ? 1 : 0)
4956
.opacity(viewModel.isEditing ? 0.6 : 1)
5057
.scaleEffect(viewModel.isEditing ? 0.95 : 1)
51-
.animation(.smooth, value: viewModel.isStale)
5258
.animation(.spring, value: viewModel.isEditing)
5359
.accessibilityElement(children: .contain)
5460
.accessibilityLabel(Strings.Accessibility.chartContainer)

Modules/Sources/JetpackStats/Cards/ChartCardViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ final class ChartCardViewModel: ObservableObject, TrafficCardViewModel {
127127
// no response in more than T seconds.
128128
if !chartData.isEmpty {
129129
staleTimer = Task { [weak self] in
130-
try? await Task.sleep(for: .seconds(2))
130+
try? await Task.sleep(for: .seconds(0.8))
131131
guard !Task.isCancelled else { return }
132132
self?.isStale = true
133133
}

Modules/Sources/JetpackStats/Cards/TopListCard.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,24 @@ struct TopListCard: View {
5656
}
5757
.padding(.vertical, Constants.step2)
5858
.overlay(alignment: .topTrailing) {
59-
moreMenu
59+
HStack(spacing: 0) {
60+
if viewModel.isStale {
61+
ProgressView()
62+
.controlSize(.small)
63+
.transition(.scale.combined(with: .opacity))
64+
}
65+
moreMenu
66+
}
67+
.animation(.easeInOut(duration: 0.5), value: viewModel.isStale)
6068
}
6169
.cardStyle()
6270
.onTapGesture {
6371
if !showMoreInline {
6472
navigateToTopListScreen()
6573
}
6674
}
67-
.grayscale(viewModel.isStale ? 1 : 0)
6875
.opacity(viewModel.isEditing ? 0.6 : 1)
6976
.scaleEffect(viewModel.isEditing ? 0.95 : 1)
70-
.animation(.smooth, value: viewModel.isStale)
7177
.animation(.spring, value: viewModel.isEditing)
7278
.accessibilityElement(children: .contain)
7379
.animation(.spring, value: viewModel.data.map(ObjectIdentifier.init)) // placing is important

Modules/Sources/JetpackStats/Cards/TopListViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ final class TopListViewModel: ObservableObject, TrafficCardViewModel {
133133
// no response in more than T seconds.
134134
if data != nil {
135135
staleTimer = Task { [weak self] in
136-
try? await Task.sleep(for: .seconds(2))
136+
try? await Task.sleep(for: .seconds(0.8))
137137
guard !Task.isCancelled else { return }
138138
self?.isStale = true
139139
}

0 commit comments

Comments
 (0)