@@ -8,8 +8,6 @@ struct DashboardView: View {
88 @State private var showingFilters = false
99 @State private var showingDetails = false
1010 @State private var showingSyncSettings = false
11- @State private var isScrollActive = false
12- @State private var refreshAfterScroll = false
1311 @AppStorage ( " showFullTokenNumbers " ) private var showFullTokenNumbers = false
1412
1513 private let refreshTimer = Timer . publish ( every: 60 , on: . main, in: . common) . autoconnect ( )
@@ -20,7 +18,7 @@ struct DashboardView: View {
2018 . padding ( . horizontal, 18 )
2119 . padding ( . top, 14 )
2220 . padding ( . bottom, 8 )
23- TokenSmoothScrollView ( onScrollActivityChanged: handleScrollActivityChanged ) {
21+ TokenSmoothScrollView ( onScrollActivityChanged: model . scrollActivityChanged ) {
2422 VStack ( alignment: . leading, spacing: 18 ) {
2523 if updates. updateLabel != nil {
2624 UpdateAvailableBanner ( )
@@ -70,7 +68,7 @@ struct DashboardView: View {
7068 . environmentObject ( updates)
7169 }
7270 . onReceive ( refreshTimer) { _ in
73- refreshRecentChangesWhenIdle ( )
71+ model . refreshRecentChangesWhenIdle ( )
7472 }
7573 . onChange ( of: model. range) { _ in
7674 model. rangeDidChange ( )
@@ -121,7 +119,7 @@ struct DashboardView: View {
121119 Image ( systemName: " arrow.clockwise " )
122120 }
123121 }
124- . help ( " Refresh " )
122+ . accessibilityLabel ( " Refresh " )
125123 . buttonStyle ( TokenIconButtonStyle ( ) )
126124
127125 Button {
@@ -186,7 +184,7 @@ struct DashboardView: View {
186184 Image ( systemName: showFullTokenNumbers ? " number.circle.fill " : " number.circle " )
187185 }
188186 . buttonStyle ( TokenCompactIconButtonStyle ( selected: showFullTokenNumbers) )
189- . help ( " Show exact token counts with separators " )
187+ . accessibilityLabel ( " Show exact token counts with separators " )
190188
191189 if model. isScanning {
192190 HStack ( spacing: 7 ) {
@@ -256,7 +254,6 @@ struct DashboardView: View {
256254 }
257255 . font ( . system( size: 12 ) )
258256 . foregroundStyle ( TokenMeterTheme . secondaryText)
259- . help ( " Compared with the previous matching time period " )
260257 }
261258
262259 private var comparisonText : String {
@@ -356,7 +353,6 @@ struct DashboardView: View {
356353 }
357354 . menuStyle ( . borderlessButton)
358355 . fixedSize ( )
359- . help ( " Time range " )
360356 }
361357
362358 private var bucketPicker : some View {
@@ -387,7 +383,6 @@ struct DashboardView: View {
387383 }
388384 . menuStyle ( . borderlessButton)
389385 . fixedSize ( )
390- . help ( " Chart grouping " )
391386 }
392387
393388 private var recentRangePresets : [ TimeRangePreset ] {
@@ -502,7 +497,6 @@ struct DashboardView: View {
502497 }
503498 . menuStyle ( . borderlessButton)
504499 . fixedSize ( )
505- . help ( " Device scope " )
506500 }
507501
508502 private var details : some View {
@@ -656,28 +650,6 @@ struct DashboardView: View {
656650 return " The current section, time range, project, or model selection has no token events. "
657651 }
658652
659- private func refreshRecentChangesWhenIdle( ) {
660- guard !isScrollActive else {
661- refreshAfterScroll = true
662- return
663- }
664- model. refreshRecentChanges ( )
665- }
666-
667- private func handleScrollActivityChanged( _ isActive: Bool ) {
668- guard isScrollActive != isActive else { return }
669- isScrollActive = isActive
670-
671- if isActive, model. deferInProgressRefreshForScroll ( ) {
672- refreshAfterScroll = true
673- }
674-
675- if !isActive, refreshAfterScroll {
676- refreshAfterScroll = false
677- model. refreshRecentChanges ( )
678- }
679- }
680-
681653 @ViewBuilder
682654 private var syncSettingsSection : some View {
683655 if model. isSyncConfigured {
@@ -872,7 +844,7 @@ struct SyncFolderPanel: View {
872844 . foregroundStyle ( TokenMeterTheme . tertiaryText)
873845 . lineLimit ( 1 )
874846 . truncationMode ( . middle)
875- . help ( configuredPath ?? " " )
847+ . accessibilityValue ( configuredPath ?? " " )
876848 }
877849
878850 Spacer ( )
@@ -1004,7 +976,7 @@ struct DataSourceStatusRow: View {
1004976 . foregroundStyle ( TokenMeterTheme . tertiaryText)
1005977 . lineLimit ( 1 )
1006978 . truncationMode ( . middle)
1007- . help ( status. path)
979+ . accessibilityValue ( status. path)
1008980 }
1009981
1010982 Spacer ( )
0 commit comments