From d8586ede97478ab903963a8a3a7dc2aaad51699f Mon Sep 17 00:00:00 2001 From: opficdev Date: Tue, 28 Jul 2026 09:36:08 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=ED=91=B8=EC=8B=9C=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=ED=97=A4=EB=8D=94=20=EA=B0=80=EB=A1=9C=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A1=A4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PushNotificationListView.swift | 117 +++++++++--------- 1 file changed, 57 insertions(+), 60 deletions(-) diff --git a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListView.swift b/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListView.swift index e74770cb..f076c2f3 100644 --- a/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListView.swift +++ b/Application/Presentation/NotificationTab/Sources/PushNotification/PushNotificationListView.swift @@ -157,81 +157,78 @@ public struct PushNotificationListView: View { } private var headerView: some View { - ScrollView(.horizontal) { - HStack(spacing: 8) { - if 0 < store.appliedFilterCount { - Menu { - Text( - String.localizedStringWithFormat( - String(localized: "push_filters_applied_format"), - Int64(store.appliedFilterCount) - ) - ) - Button(role: .destructive) { - store.send(.view(.resetFilters)) - } label: { - Text(String(localized: "push_clear_all_filters")) - } - } label: { - HStack(spacing: 6) { - Image(systemName: "line.3.horizontal.decrease") - filterBadge - } - .adaptiveButtonStyle() - } - } - - Button { - DispatchQueue.main.async { - store.send(.view(.toggleSortOption)) - } - } label: { - let condition = store.query.sortOrder == .oldest + HStack(spacing: 8) { + if 0 < store.appliedFilterCount { + Menu { Text( String.localizedStringWithFormat( - String(localized: "push_sort_format"), - store.query.sortOrder.title + String(localized: "push_filters_applied_format"), + Int64(store.appliedFilterCount) ) ) - .foregroundStyle(condition ? .white : Color(.label)) - .adaptiveButtonStyle(color: condition ? .blue : .clear) - } - .frame(height: headerHeight) - - Menu { - Picker(selection: $store.query.timeFilter) { - ForEach(PushNotificationQuery.TimeFilter.availableOptions, id: \.self) { option in - Text(option.title).tag(option) - } + Button(role: .destructive) { + store.send(.view(.resetFilters)) } label: { - Text(String(localized: "push_period")) + Text(String(localized: "push_clear_all_filters")) } } label: { - let condition = store.query.timeFilter == .none - HStack { - Text(String(localized: "push_period")) - Image(systemName: "chevron.down") + HStack(spacing: 6) { + Image(systemName: "line.3.horizontal.decrease") + filterBadge } - .foregroundStyle(condition ? Color(.label) : .white) - .adaptiveButtonStyle(color: condition ? .clear : .blue) + .adaptiveButtonStyle() + } + } + + Button { + DispatchQueue.main.async { + store.send(.view(.toggleSortOption)) } + } label: { + let condition = store.query.sortOrder == .oldest + Text( + String.localizedStringWithFormat( + String(localized: "push_sort_format"), + store.query.sortOrder.title + ) + ) + .foregroundStyle(condition ? .white : Color(.label)) + .adaptiveButtonStyle(color: condition ? .blue : .clear) + } + .frame(height: headerHeight) - Button { - DispatchQueue.main.async { - store.send(.view(.toggleUnreadOnly)) + Menu { + Picker(selection: $store.query.timeFilter) { + ForEach(PushNotificationQuery.TimeFilter.availableOptions, id: \.self) { option in + Text(option.title).tag(option) } } label: { - let condition = store.query.unreadOnly - Text(String(localized: "push_unread")) - .foregroundStyle(condition ? .white : Color(.label)) - .adaptiveButtonStyle(color: condition ? .blue : .clear) + Text(String(localized: "push_period")) + } + } label: { + let condition = store.query.timeFilter == .none + HStack { + Text(String(localized: "push_period")) + Image(systemName: "chevron.down") } - .frame(height: headerHeight) + .foregroundStyle(condition ? Color(.label) : .white) + .adaptiveButtonStyle(color: condition ? .clear : .blue) + } + + Button { + DispatchQueue.main.async { + store.send(.view(.toggleUnreadOnly)) + } + } label: { + let condition = store.query.unreadOnly + Text(String(localized: "push_unread")) + .foregroundStyle(condition ? .white : Color(.label)) + .adaptiveButtonStyle(color: condition ? .blue : .clear) } + .frame(height: headerHeight) } - .scrollIndicators(.never) - .scrollDisabled(!isScrollTrackingEnabled) - .contentMargins(.leading, 16, for: .scrollContent) + .padding(.leading, 16) + .frame(maxWidth: .infinity, alignment: .leading) .frame(height: headerHeight) .onAppear { headerOffset = 0 From 150ae5a13eac000591287dbf39308676d96396bb Mon Sep 17 00:00:00 2001 From: opficdev Date: Tue, 28 Jul 2026 09:55:51 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20PR=20=EB=B0=8F=20=EB=A6=AC=EB=B7=B0?= =?UTF-8?q?=20=ED=95=9C=EA=B5=AD=EC=96=B4=20=EC=9E=91=EC=84=B1=20=EC=A7=80?= =?UTF-8?q?=EC=B9=A8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/AGENTS.md b/AGENTS.md index ca5d8505..4ae6666e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,3 +24,4 @@ - For a delegated role, read `.agents/roles.md` and follow the assigned role section and output format. - Use `.agents/workflows.md` when the task matches one of its executable workflows. - If repository-local instructions conflict with global memory, follow the repository-local instructions. +- Write DevLog PR and review text in Korean.