diff --git a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationItem.swift b/Application/Presentation/NotificationTab/Sources/PushNotificationItem.swift similarity index 100% rename from Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationItem.swift rename to Application/Presentation/NotificationTab/Sources/PushNotificationItem.swift diff --git a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListFeature.swift b/Application/Presentation/NotificationTab/Sources/PushNotificationListFeature.swift similarity index 100% rename from Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListFeature.swift rename to Application/Presentation/NotificationTab/Sources/PushNotificationListFeature.swift diff --git a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListFeatureDependencies.swift b/Application/Presentation/NotificationTab/Sources/PushNotificationListFeatureDependencies.swift similarity index 100% rename from Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListFeatureDependencies.swift rename to Application/Presentation/NotificationTab/Sources/PushNotificationListFeatureDependencies.swift diff --git a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListView.swift b/Application/Presentation/NotificationTab/Sources/PushNotificationListView.swift similarity index 95% rename from Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListView.swift rename to Application/Presentation/NotificationTab/Sources/PushNotificationListView.swift index d93f6f64..b3488f5b 100644 --- a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListView.swift +++ b/Application/Presentation/NotificationTab/Sources/PushNotificationListView.swift @@ -31,20 +31,20 @@ public struct PushNotificationListView: View { public var body: some View { NavigationStack { notificationListContent + .listStyle(.plain) .background(Color(.systemGroupedBackground)) .background(NavigationBarConfigurator(alwaysVisible: true)) - .onScrollOffsetChange { offset in - guard isScrollTrackingEnabled else { return } - headerOffset = max(0, -offset) - } - .safeAreaInset(edge: .top) { safeAreaHeader } .refreshable(isEnabled: PullToRefreshAvailability.isEnabled) { let task = store.send(.view(.refresh)) await task.finish() store.send(.view(.startObserving)) } + .onScrollOffsetChange { offset in + guard isScrollTrackingEnabled else { return } + headerOffset = max(0, -offset) + } + .safeAreaInset(edge: .top) { safeAreaHeader } .navigationTitle(String(localized: "nav_push_notifications")) - .listStyle(.plain) } .prominentAlert(store, state: \.alert, action: \.alert) .sheet(item: sheetStore) { store in @@ -144,7 +144,20 @@ public struct PushNotificationListView: View { private var safeAreaHeader: some View { VStack(spacing: 4) { - headerView + ScrollView(.horizontal) { + headerContent + } + .scrollIndicators(.never) + .contentMargins(.leading, 16, for: .scrollContent) + .frame(maxWidth: .infinity, alignment: .leading) + .frame(height: headerHeight) + .onAppear { + headerOffset = 0 + isScrollTrackingEnabled = false + DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { + isScrollTrackingEnabled = true + } + } if #unavailable(iOS 26) { Divider() .padding(.horizontal, -16) @@ -160,30 +173,6 @@ public struct PushNotificationListView: View { .offset(y: headerOffset) } - private var headerView: some View { - Group { - if #available(iOS 18.0, *) { - ScrollView(.horizontal) { - headerContent - } - .scrollIndicators(.never) - .contentMargins(.leading, 16, for: .scrollContent) - } else { - headerContent - .padding(.leading, 16) - } - } - .frame(maxWidth: .infinity, alignment: .leading) - .frame(height: headerHeight) - .onAppear { - headerOffset = 0 - isScrollTrackingEnabled = false - DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { - isScrollTrackingEnabled = true - } - } - } - private var headerContent: some View { HStack(spacing: 8) { if 0 < store.appliedFilterCount { diff --git a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListViewCoordinator.swift b/Application/Presentation/NotificationTab/Sources/PushNotificationListViewCoordinator.swift similarity index 100% rename from Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListViewCoordinator.swift rename to Application/Presentation/NotificationTab/Sources/PushNotificationListViewCoordinator.swift diff --git a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationQuery+Presentation.swift b/Application/Presentation/NotificationTab/Sources/PushNotificationQuery+Presentation.swift similarity index 100% rename from Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationQuery+Presentation.swift rename to Application/Presentation/NotificationTab/Sources/PushNotificationQuery+Presentation.swift diff --git a/Application/Presentation/NotificationTab/Sources/PushNotification/View+Refreshable.swift b/Application/Presentation/NotificationTab/Sources/View+Refreshable.swift similarity index 100% rename from Application/Presentation/NotificationTab/Sources/PushNotification/View+Refreshable.swift rename to Application/Presentation/NotificationTab/Sources/View+Refreshable.swift diff --git a/Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationItemTests.swift b/Application/Presentation/NotificationTab/Tests/PushNotificationItemTests.swift similarity index 100% rename from Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationItemTests.swift rename to Application/Presentation/NotificationTab/Tests/PushNotificationItemTests.swift diff --git a/Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListFeatureTests.swift b/Application/Presentation/NotificationTab/Tests/PushNotificationListFeatureTests.swift similarity index 100% rename from Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListFeatureTests.swift rename to Application/Presentation/NotificationTab/Tests/PushNotificationListFeatureTests.swift diff --git a/Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListFixtures.swift b/Application/Presentation/NotificationTab/Tests/PushNotificationListFixtures.swift similarity index 100% rename from Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListFixtures.swift rename to Application/Presentation/NotificationTab/Tests/PushNotificationListFixtures.swift diff --git a/Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListTestAssertions.swift b/Application/Presentation/NotificationTab/Tests/PushNotificationListTestAssertions.swift similarity index 100% rename from Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListTestAssertions.swift rename to Application/Presentation/NotificationTab/Tests/PushNotificationListTestAssertions.swift diff --git a/Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListTestSpies.swift b/Application/Presentation/NotificationTab/Tests/PushNotificationListTestSpies.swift similarity index 100% rename from Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListTestSpies.swift rename to Application/Presentation/NotificationTab/Tests/PushNotificationListTestSpies.swift diff --git a/Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListTestSupport.swift b/Application/Presentation/NotificationTab/Tests/PushNotificationListTestSupport.swift similarity index 100% rename from Application/Presentation/NotificationTab/Tests/PushNotification/PushNotificationListTestSupport.swift rename to Application/Presentation/NotificationTab/Tests/PushNotificationListTestSupport.swift