File tree Expand file tree Collapse file tree
DevLog/Presentation/ViewModel Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -66,14 +66,31 @@ final class TodoManageViewModel: Store {
6666 }
6767
6868 var canSubmitUserCategory : Bool {
69- let trimmedCategoryName = state. category? . name. trimmingCharacters ( in: . whitespacesAndNewlines) ?? " "
69+ guard let currentCategory = state. category else { return false }
70+ let trimmedCategoryName = currentCategory. name. trimmingCharacters ( in: . whitespacesAndNewlines)
7071 if trimmedCategoryName. isEmpty {
7172 return false
7273 }
7374
74- return !SystemTodoCategory. allCases. contains {
75- $0. localizedName. localizedCaseInsensitiveCompare ( trimmedCategoryName) == . orderedSame
75+ // 시스템 카테고리와 이름 중복 확인
76+ if SystemTodoCategory . allCases. contains ( where: {
77+ $0. localizedName. caseInsensitiveCompare ( trimmedCategoryName) == . orderedSame }
78+ ) {
79+ return false
7680 }
81+
82+ // 다른 사용자 카테고리와 이름 중복 확인
83+ if state. preferences. contains ( where: { preference in
84+ guard case . user( let userCategory) = preference. category,
85+ userCategory. id != currentCategory. id else {
86+ return false
87+ }
88+ return userCategory. name. caseInsensitiveCompare ( trimmedCategoryName) == . orderedSame
89+ } ) {
90+ return false
91+ }
92+
93+ return true
7794 }
7895
7996 init ( _ preferences: [ TodoCategoryPreference ] ) {
You can’t perform that action at this time.
0 commit comments