Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
526811c
refactor: ViewBuilder를 추가해 코드 가독성 개선
opficdev May 7, 2026
24fd487
fix: NavigationSplitView의 details 파트와 selection이 연계되지 않는 현상 해결
opficdev May 7, 2026
ffbc714
ui: NavigationSplitView 사용
opficdev May 7, 2026
1757177
ui: compact ui일 때는 시트, 그렇지 않을때는 detail로 푸시 알람 내용을 보이도록 수정
opficdev May 7, 2026
55ca2bd
feat: 푸시알람 리스트를 탭했을 때 선택되었는지 확인하는 ui 구현
opficdev May 7, 2026
f7bd845
fix: PushtNotificationListView에서 푸시알림을 탭했을 때 색이 잘 보이지 않는 현상 해결
opficdev May 7, 2026
e0dee3a
ui: MainView에 NavigationSplitView 적용
opficdev May 7, 2026
33ea564
style: 인덴트 수정
opficdev May 7, 2026
a2608a7
ui: 프로필뷰는 2단, 나머지는 3단 형태로 구성할 수 있도록 수정
opficdev May 7, 2026
fa47718
ui: 3단 형태로 구성할 수 있도록 수정
opficdev May 7, 2026
fa447c6
fix: PushNotificationListView에서 푸시알림 리스트를 탭 해도 detail이 보이지 않는 현상 해결
opficdev May 7, 2026
d3ca010
ui: HomeView에 3계층 NavigationSplitView 적용
opficdev May 8, 2026
605d014
fix: HomeView의 details 부분이 내비게이션이 되지 않는 현상 해결
opficdev May 8, 2026
9b9c623
ui: TodayView를 3단 컬럼 형태의 SplitView로 구성
opficdev May 8, 2026
788b071
refactor: Home, Today의 각 State를 NavigationRouter를 개선하여 정리
opficdev May 8, 2026
c9a280b
refactor: 중복 모디파이어 제거
opficdev May 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,16 +42,16 @@ struct SystemTodoCategoryItem: Identifiable, Hashable {
}
}

var color: Color {
var color: UIColor {
switch systemTodoCategory {
case .issue: return .red
case .feature: return .green
case .improvement: return .cyan
case .review: return .orange
case .test: return .purple
case .doc: return .yellow
case .research: return .teal
case .etc: return .gray
case .issue: return .systemRed
case .feature: return .systemGreen
case .improvement: return .systemCyan
case .review: return .systemOrange
case .test: return .systemPurple
case .doc: return .systemYellow
case .research: return .systemTeal
case .etc: return .systemGray
}
}
}
2 changes: 1 addition & 1 deletion DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ struct TodoCategoryItem: Identifiable, Hashable {
var color: Color {
switch category {
case .system(let systemTodoCategory):
return SystemTodoCategoryItem(from: systemTodoCategory).color
return Color(SystemTodoCategoryItem(from: systemTodoCategory).color)
case .user(let userTodoCategory):
return UserTodoCategoryItem(from: userTodoCategory).color
}
Expand Down
24 changes: 16 additions & 8 deletions DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ final class PushNotificationListViewModel: Store {
var hasMore: Bool = false
var nextCursor: PushNotificationCursor?
var query: PushNotificationQuery
var selectedNotificationId: String?
var selectedTodoId: TodoIdItem?
}

Expand All @@ -42,8 +43,7 @@ final class PushNotificationListViewModel: Store {
case setTimeFilter(PushNotificationQuery.TimeFilter)
case toggleUnreadOnly
case resetFilters
case tapNotification(PushNotificationItem)
case setSelectedTodoId(TodoIdItem?)
case selectNotification(String?)
}

enum SideEffect {
Expand Down Expand Up @@ -97,10 +97,10 @@ final class PushNotificationListViewModel: Store {

switch action {
case .deleteNotification, .toggleRead, .undoDelete, .setAlert, .toggleSortOption,
.setTimeFilter, .toggleUnreadOnly, .resetFilters, .tapNotification:
.setTimeFilter, .toggleUnreadOnly, .resetFilters, .selectNotification:
effects = reduceByUser(action, state: &state)

case .fetchNotifications, .setToast, .setSelectedTodoId, .loadNextPage:
case .fetchNotifications, .setToast, .loadNextPage:
effects = reduceByView(action, state: &state)

case .setLoading, .appendNotifications, .resetPagination, .setHasMore,
Expand Down Expand Up @@ -221,9 +221,19 @@ private extension PushNotificationListViewModel {
updateQueryUseCase.execute(state.query)
state.nextCursor = nil
return [.fetchNotifications(state.query, cursor: nil)]
case .tapNotification(let item):
case .selectNotification(let notificationId):
state.selectedNotificationId = notificationId
guard let notificationId else {
state.selectedTodoId = nil
return []
}
guard let index = state.notifications.firstIndex(where: { $0.id == notificationId }) else {
state.selectedTodoId = nil
return []
}
let item = state.notifications[index]
state.selectedTodoId = TodoIdItem(id: item.todoId)
if let index = state.notifications.firstIndex(where: { $0.id == item.id }), !item.isRead {
if !item.isRead {
state.notifications[index].isRead.toggle()
return [.toggleRead(item.todoId)]
}
Expand All @@ -247,8 +257,6 @@ private extension PushNotificationListViewModel {
state.notifications.removeAll { $0.isHidden }
self.undoNotificationId = nil
}
case .setSelectedTodoId(let todoId):
state.selectedTodoId = todoId
default:
break
}
Expand Down
51 changes: 51 additions & 0 deletions DevLog/Resource/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,23 @@
}
}
},
"home_select_detail" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Select an item."
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "항목을 선택해주세요."
}
}
}
},
"home_recent_title" : {
"extractionState" : "manual",
"localizations" : {
Expand Down Expand Up @@ -1064,6 +1081,23 @@
}
}
},
"push_notifications_select_detail" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Select a notification."
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "알림을 선택해주세요."
}
}
}
},
"push_period" : {
"extractionState" : "manual",
"localizations" : {
Expand Down Expand Up @@ -1897,6 +1931,23 @@
}
}
},
"today_select_detail" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Select a todo."
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "Todo를 선택해주세요."
}
}
}
},
"today_due_overdue" : {
"extractionState" : "manual",
"localizations" : {
Expand Down
Loading