diff --git a/Application/DevLogApp/Sources/Resource/Info.plist b/Application/DevLogApp/Sources/Resource/Info.plist
index 20160ae8..0b7c3a8d 100644
--- a/Application/DevLogApp/Sources/Resource/Info.plist
+++ b/Application/DevLogApp/Sources/Resource/Info.plist
@@ -14,6 +14,8 @@
$(PRODUCT_BUNDLE_IDENTIFIER)
CFBundleInfoDictionaryVersion
6.0
+ CFBundleDisplayName
+ DevLog
CFBundleName
$(PRODUCT_NAME)
CFBundlePackageType
@@ -42,13 +44,37 @@
$(CLIENT_ID)
GITHUB_CLIENT_ID
$(GITHUB_CLIENT_ID)
+ ITSAppUsesNonExemptEncryption
+
+ LSApplicationCategoryType
+ public.app-category.productivity
LSRequiresIPhoneOS
PRIVACY_POLICY_URL
$(PRIVACY_POLICY_URL)
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+
+ UIApplicationSupportsIndirectInputEvents
+
UIBackgroundModes
remote-notification
+ UILaunchScreen
+
+ UISupportedInterfaceOrientations
+
+ UIInterfaceOrientationPortrait
+
+ UISupportedInterfaceOrientations~ipad
+
+ UIInterfaceOrientationLandscapeLeft
+ UIInterfaceOrientationLandscapeRight
+ UIInterfaceOrientationPortrait
+ UIInterfaceOrientationPortraitUpsideDown
+
diff --git a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj
index 32019f8f..8c5c5fc4 100644
--- a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj
+++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj
@@ -25,6 +25,7 @@
2B0C47EBD387EEABE2A90A99 /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FCFF8EE1B8855BA6B7BC315F /* SearchViewModel.swift */; };
2C9840C424A0D3C85D1001C9 /* TestSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5156DCFD77B78CAEE004CDDD /* TestSupport.swift */; };
2DB84D2FBEA0653D48DF614F /* HeatmapDay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70B652BF58D45805A57ECCE0 /* HeatmapDay.swift */; };
+ 30EBAE1A8A4CE21E038CE554 /* PushNotificationSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2A3E43D991EFE9EF2FB3510 /* PushNotificationSettingsViewModel.swift */; };
336D5F52E964A099E10AECFF /* TodoListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB658B8B1246F4399493FE3 /* TodoListItem.swift */; };
34AFBED9DAEBD1F4E4A2DB2B /* TodoIdItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08ACC3D94A90881383764E6C /* TodoIdItem.swift */; };
3801176C353549D8D259FF4A /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4279F380763E7CFF063F4416 /* LoginView.swift */; };
@@ -32,7 +33,7 @@
3AE04B27F085D1E67BA64537 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF52D6EE30673D682147FAFE /* LoginViewModel.swift */; };
40B4784EB5FDD90B5A2EC81B /* TodoManageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E90A0B2F4523B8570322F54C /* TodoManageViewModel.swift */; };
41A5C4626505C6BF0643E43B /* MainTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = 290DE2215D7061AC10A057D8 /* MainTab.swift */; };
- 439047A7AF80D876838710F2 /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A4CFA6FFA82E0EC3C25D527B /* AccountView.swift */; };
+ 47C006F6D6AAA5848290E5E4 /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A387E6A1194033F9F671A28F /* AccountView.swift */; };
49631F09477091376DDA0E4D /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B457717DEF395F131159C04 /* MainView.swift */; };
4BE7032EE7146793A5C58A94 /* ActivityKindItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09CC8A2FCF1577B150A08D83 /* ActivityKindItem.swift */; };
4C07B469D6576A76BE71E639 /* TodoMarkdownContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFB7CB1992F8434647D2E8D1 /* TodoMarkdownContentView.swift */; };
@@ -57,6 +58,7 @@
91A04437CA63E957BDD1A060 /* TodayTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587B2119664DB4FDF4A18FFE /* TodayTodoItem.swift */; };
92DAE6E67927B3014F7FB18A /* PushNotificationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34C7A0A3DE0AB6D5E4DD116B /* PushNotificationItem.swift */; };
959832CAA00E2B06DF0B8A83 /* TodoEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E2D739A2380C3D28C575D08 /* TodoEditorViewModel.swift */; };
+ 968A5DDD560CC221D35657AA /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF6F04B8737B498134BABBBD /* SettingsViewModel.swift */; };
9ADFFABEE75489A526E1ECE5 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 252057C930A70DC1D5674EE5 /* HomeView.swift */; };
9D69715291EB7F2AE704A722 /* NavigationRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D136528209E2B94793441C78 /* NavigationRouter.swift */; };
A302B2F9FDCDAFAE5A852E94 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2195BF2BC362FB4BD570C915 /* RootView.swift */; };
@@ -64,35 +66,33 @@
AECD97E6C980B7940A3112E4 /* Error+SocialLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6F1C309AC57614AD630F79 /* Error+SocialLogin.swift */; };
AFF2EFF4181D0AB292540962 /* NavigationBarConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A16A2DF4C226ACFE7E2F2BD /* NavigationBarConfigurator.swift */; };
B11D48231BFAFAA422C7CB30 /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D36A4E11056749B1D5DEF446 /* DevLogPresentation.framework */; };
+ B19660510D0792E229B52C9A /* AccountViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A8F58AB3EE5F96A1DFB3DA6 /* AccountViewModel.swift */; };
B81EE3C71EC5CCC8CB9D5CAC /* TodayViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48DEAD71515D037F501E9B9F /* TodayViewModel.swift */; };
B8792A002416865EF41FCB5D /* TodayViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B434E6F27EFBC9D054461A /* TodayViewCoordinator.swift */; };
- BC607762E625C0DCD3B66E8A /* PushNotificationSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2663D0FE64234FEBBDA9362C /* PushNotificationSettingsViewModel.swift */; };
BCDC49501F5BA61CABB12D2B /* MainViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36FA78DB36F62C17E9957AFF /* MainViewCoordinator.swift */; };
BE51244E594875155551774A /* WebItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA1D8AFC51309CDFB5962985 /* WebItemRow.swift */; };
C13E62E8FB7D681C14A42AC1 /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E834C7D761EA77E717C9DE /* HomeViewModel.swift */; };
C2530FF7F76903E54626D73B /* TodoEditorWindowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E802368D0BA811BD50470735 /* TodoEditorWindowView.swift */; };
C26C5A74B162EF0866093F6E /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = F44AF3158F945047473FA5E7 /* OrderedCollections */; };
+ C2CFDA48F8D98DF428D7EF34 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A910FDF6E746B5EB7681DF87 /* SettingsView.swift */; };
C3883077C738EF1E76DFCC4C /* RelativeTimeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB112B525D9D6CB7B001028A /* RelativeTimeText.swift */; };
CAD9F0F9CDADF2FA55CBC78B /* CacheableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = C52955505427FEA95D9B3CC8 /* CacheableImage.swift */; };
CB6204EC0FB8557D7FAF7174 /* HeatmapActivityItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E174814D9FFAFC79746E1902 /* HeatmapActivityItem.swift */; };
D4C92919FF08171E53C15011 /* TodoDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 334EB88BC5FC0BD7DDA6A0FE /* TodoDetailViewModel.swift */; };
+ D53C4D51716DDE5956A78FB6 /* ThemeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17D5BE050186102B97FE88CA /* ThemeView.swift */; };
D73622D51033A4BAF3B68DAC /* HeatmapMonth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CD8C6D9E12E040F7B612FB1 /* HeatmapMonth.swift */; };
- D7E51185AD82E7DB333300AF /* AccountViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D6ACE383B5F1DA964DAB252 /* AccountViewModel.swift */; };
D7F0530537BE180AEAA579BB /* DeletePushNotificationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A05BB3C999F4A364401871C5 /* DeletePushNotificationTests.swift */; };
D878C47DE4B2E1A9525FBCBF /* LoadingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14DA5CF22287DA889A033F8E /* LoadingState.swift */; };
D988D2118F62024F5BA6A095 /* TodoEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82C8541262E532FA4A218650 /* TodoEditorView.swift */; };
- D99AD1D26B1D745028A93B8A /* SettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB82F4B31B49736F70F50EE7 /* SettingView.swift */; };
DCD8775B3F51592DD956952F /* HeatmapQuarter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 573AD2720FA89362FF4C4CEF /* HeatmapQuarter.swift */; };
DDC4E20C8BDB38D0087A5190 /* TodoDetailContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1EE8F142D93B01909B6D5C8 /* TodoDetailContentView.swift */; };
- DFF40ACAFF99281CECC2303E /* PushNotificationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C346B13A821F3DFAB3489BBB /* PushNotificationSettingsView.swift */; };
E53B0B91BEE6857758DAF9ED /* TodoItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA81C7F4127479FE7CCE033 /* TodoItemRow.swift */; };
E548BBC38D99E0D2C7D1FA4B /* Tags.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2D1521A459AF5AEFFA99A83 /* Tags.swift */; };
- E635248ED51664A502A7F08A /* ThemeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89BC344F5437426E7A309429 /* ThemeView.swift */; };
E8077B723C81E374416DE861 /* TodoEditorWindowValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FA597F8A6C68F9460DE11FC /* TodoEditorWindowValue.swift */; };
E95BB5F53AE62F152798567D /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 950469A44DFD1834A6BFC4B2 /* DevLogDomain.framework */; };
ED2003CBD86C61AB483F9D15 /* TodoManageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E41DC5D62BCD0C53ADF8E7A6 /* TodoManageView.swift */; };
EDDAC6A024EB85257A37723E /* TodayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C91DE4D388124119156BC64E /* TodayView.swift */; };
- F20FC30D05246FD333F034DE /* SettingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B81F9AF1E3CEC36D194A916C /* SettingViewModel.swift */; };
+ F41D584F8BF5FF032AA3B12A /* PushNotificationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEE6F409C294C45A9623C41A /* PushNotificationSettingsView.swift */; };
F5D87CFA04C5DF6A6FA36129 /* TodoWindowCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF0435F01417FE17DE757ADB /* TodoWindowCoordinator.swift */; };
FA2E29AB049CAC97DE350BE9 /* ProfileViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A87C034F294C1825D3AC49C3 /* ProfileViewCoordinator.swift */; };
/* End PBXBuildFile section */
@@ -134,14 +134,15 @@
085FC0504CE36484B655FB09 /* TodoEditorWindowEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoEditorWindowEvent.swift; sourceTree = ""; };
08ACC3D94A90881383764E6C /* TodoIdItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoIdItem.swift; sourceTree = ""; };
09CC8A2FCF1577B150A08D83 /* ActivityKindItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActivityKindItem.swift; sourceTree = ""; };
+ 0A8F58AB3EE5F96A1DFB3DA6 /* AccountViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewModel.swift; sourceTree = ""; };
0B8F3DEEF6527F9FBCBDCD5A /* TodoReferenceItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoReferenceItem.swift; sourceTree = ""; };
0EB658B8B1246F4399493FE3 /* TodoListItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoListItem.swift; sourceTree = ""; };
10169ED43745C8286BAA560A /* UserTodoCategoryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserTodoCategoryItem.swift; sourceTree = ""; };
14DA5CF22287DA889A033F8E /* LoadingState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingState.swift; sourceTree = ""; };
+ 17D5BE050186102B97FE88CA /* ThemeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeView.swift; sourceTree = ""; };
1B6F1C309AC57614AD630F79 /* Error+SocialLogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Error+SocialLogin.swift"; sourceTree = ""; };
2195BF2BC362FB4BD570C915 /* RootView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootView.swift; sourceTree = ""; };
252057C930A70DC1D5674EE5 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; };
- 2663D0FE64234FEBBDA9362C /* PushNotificationSettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationSettingsViewModel.swift; sourceTree = ""; };
290DE2215D7061AC10A057D8 /* MainTab.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTab.swift; sourceTree = ""; };
2AED8D48F34AE2476CCF4F5A /* TodoInfoSheetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoInfoSheetView.swift; sourceTree = ""; };
334EB88BC5FC0BD7DDA6A0FE /* TodoDetailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoDetailViewModel.swift; sourceTree = ""; };
@@ -151,7 +152,6 @@
37323FDF36DF44C549A71A85 /* DeleteWebPageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteWebPageTests.swift; sourceTree = ""; };
38030D2CAA016ABB3D0C396B /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; };
3CA75873FCFFC6182662694B /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; };
- 3D6ACE383B5F1DA964DAB252 /* AccountViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountViewModel.swift; sourceTree = ""; };
3DC9F3129E8EEBF9CAC622E7 /* ProfileViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewModel.swift; sourceTree = ""; };
3EA81C7F4127479FE7CCE033 /* TodoItemRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoItemRow.swift; sourceTree = ""; };
4279F380763E7CFF063F4416 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = ""; };
@@ -180,26 +180,25 @@
80B7DE00658AC1080A3741C9 /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; };
82C8541262E532FA4A218650 /* TodoEditorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoEditorView.swift; sourceTree = ""; };
852D34A35C60375D1D9F9566 /* Color+Hex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+Hex.swift"; sourceTree = ""; };
- 89BC344F5437426E7A309429 /* ThemeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeView.swift; sourceTree = ""; };
950469A44DFD1834A6BFC4B2 /* DevLogDomain.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDomain.framework; sourceTree = BUILT_PRODUCTS_DIR; };
9A6BFC9AC306836245B6E5CD /* TodoDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoDetailView.swift; sourceTree = ""; };
9E2D739A2380C3D28C575D08 /* TodoEditorViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoEditorViewModel.swift; sourceTree = ""; };
A05BB3C999F4A364401871C5 /* DeletePushNotificationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeletePushNotificationTests.swift; sourceTree = ""; };
- A4CFA6FFA82E0EC3C25D527B /* AccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountView.swift; sourceTree = ""; };
+ A387E6A1194033F9F671A28F /* AccountView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountView.swift; sourceTree = ""; };
A6F52E54B2F053507AE43819 /* PushNotificationListViewCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationListViewCoordinator.swift; sourceTree = ""; };
A87C034F294C1825D3AC49C3 /* ProfileViewCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileViewCoordinator.swift; sourceTree = ""; };
+ A910FDF6E746B5EB7681DF87 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; };
A9B434E6F27EFBC9D054461A /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayViewCoordinator.swift; sourceTree = ""; };
AB112B525D9D6CB7B001028A /* RelativeTimeText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelativeTimeText.swift; sourceTree = ""; };
ACA48428342FE3040FE708BE /* Version.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Version.xcconfig; sourceTree = ""; };
+ AF6F04B8737B498134BABBBD /* SettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsViewModel.swift; sourceTree = ""; };
B1EE8F142D93B01909B6D5C8 /* TodoDetailContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoDetailContentView.swift; sourceTree = ""; };
B2D1521A459AF5AEFFA99A83 /* Tags.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tags.swift; sourceTree = ""; };
- B81F9AF1E3CEC36D194A916C /* SettingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingViewModel.swift; sourceTree = ""; };
B8C462E5D83C6B639A66ED26 /* LoginButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginButton.swift; sourceTree = ""; };
BA1D8AFC51309CDFB5962985 /* WebItemRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebItemRow.swift; sourceTree = ""; };
BF0435F01417FE17DE757ADB /* TodoWindowCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoWindowCoordinator.swift; sourceTree = ""; };
C0CBB0EEB3B15A4BE2EF9641 /* SystemTodoCategoryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemTodoCategoryItem.swift; sourceTree = ""; };
C25193961AAF03B736D8BA4D /* MainViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewModel.swift; sourceTree = ""; };
- C346B13A821F3DFAB3489BBB /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationSettingsView.swift; sourceTree = ""; };
C52955505427FEA95D9B3CC8 /* CacheableImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CacheableImage.swift; sourceTree = ""; };
C8D191AD793EE0AC702B1539 /* WebPageItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebPageItem.swift; sourceTree = ""; };
C91DE4D388124119156BC64E /* TodayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayView.swift; sourceTree = ""; };
@@ -209,14 +208,15 @@
D87DA85DC7F13D4E5B570ED6 /* UIKitTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIKitTextEditor.swift; sourceTree = ""; };
DA4D52F1343CECB8E0AC4742 /* View+.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+.swift"; sourceTree = ""; };
DE04D300F1054596E630CF48 /* TodoCategoryItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoCategoryItem.swift; sourceTree = ""; };
+ DEE6F409C294C45A9623C41A /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationSettingsView.swift; sourceTree = ""; };
E174814D9FFAFC79746E1902 /* HeatmapActivityItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeatmapActivityItem.swift; sourceTree = ""; };
E41DC5D62BCD0C53ADF8E7A6 /* TodoManageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoManageView.swift; sourceTree = ""; };
E71459EB54EF7A0B3F294418 /* WebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebView.swift; sourceTree = ""; };
E802368D0BA811BD50470735 /* TodoEditorWindowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoEditorWindowView.swift; sourceTree = ""; };
E90A0B2F4523B8570322F54C /* TodoManageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodoManageViewModel.swift; sourceTree = ""; };
EACFDECD5652C67B68D4936D /* PushNotificationListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationListViewModel.swift; sourceTree = ""; };
+ F2A3E43D991EFE9EF2FB3510 /* PushNotificationSettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationSettingsViewModel.swift; sourceTree = ""; };
F6D5BDBC6990696C3FA5B22A /* Toast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Toast.swift; sourceTree = ""; };
- FB82F4B31B49736F70F50EE7 /* SettingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingView.swift; sourceTree = ""; };
FCFF8EE1B8855BA6B7BC315F /* SearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewModel.swift; sourceTree = ""; };
FE61399BC82A4181913F8586 /* UnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "UnitTests-Info.plist"; sourceTree = ""; };
FE62ED6DF757AF15ACBB2E07 /* PushNotificationListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushNotificationListView.swift; sourceTree = ""; };
@@ -354,7 +354,7 @@
E35F56087C5F3A236FD17FF2 /* Root */,
D04E76D2F842BF00A4AC7226 /* Routing */,
7530E5897034E53A8917ABEF /* Search */,
- 7A7A479862A8D15E79182C88 /* Setting */,
+ 9AE1515DA0CF983214BECC78 /* Settings */,
14A1A6F2D3820B4A5D46C522 /* Structure */,
E90A426B16234A9CFAB33C3A /* Today */,
);
@@ -411,20 +411,6 @@
path = Profile;
sourceTree = "";
};
- 7A7A479862A8D15E79182C88 /* Setting */ = {
- isa = PBXGroup;
- children = (
- A4CFA6FFA82E0EC3C25D527B /* AccountView.swift */,
- 3D6ACE383B5F1DA964DAB252 /* AccountViewModel.swift */,
- C346B13A821F3DFAB3489BBB /* PushNotificationSettingsView.swift */,
- 2663D0FE64234FEBBDA9362C /* PushNotificationSettingsViewModel.swift */,
- FB82F4B31B49736F70F50EE7 /* SettingView.swift */,
- B81F9AF1E3CEC36D194A916C /* SettingViewModel.swift */,
- 89BC344F5437426E7A309429 /* ThemeView.swift */,
- );
- path = Setting;
- sourceTree = "";
- };
80795F4F20E81C1E84803EB8 /* Support */ = {
isa = PBXGroup;
children = (
@@ -466,6 +452,20 @@
path = Main;
sourceTree = "";
};
+ 9AE1515DA0CF983214BECC78 /* Settings */ = {
+ isa = PBXGroup;
+ children = (
+ A387E6A1194033F9F671A28F /* AccountView.swift */,
+ 0A8F58AB3EE5F96A1DFB3DA6 /* AccountViewModel.swift */,
+ DEE6F409C294C45A9623C41A /* PushNotificationSettingsView.swift */,
+ F2A3E43D991EFE9EF2FB3510 /* PushNotificationSettingsViewModel.swift */,
+ A910FDF6E746B5EB7681DF87 /* SettingsView.swift */,
+ AF6F04B8737B498134BABBBD /* SettingsViewModel.swift */,
+ 17D5BE050186102B97FE88CA /* ThemeView.swift */,
+ );
+ path = Settings;
+ sourceTree = "";
+ };
BEA53BCE9F5CBA2B9D2748D9 /* Login */ = {
isa = PBXGroup;
children = (
@@ -721,13 +721,13 @@
41A5C4626505C6BF0643E43B /* MainTab.swift in Sources */,
909B1608BDEDA51B07F27332 /* SearchView.swift in Sources */,
2B0C47EBD387EEABE2A90A99 /* SearchViewModel.swift in Sources */,
- 439047A7AF80D876838710F2 /* AccountView.swift in Sources */,
- D7E51185AD82E7DB333300AF /* AccountViewModel.swift in Sources */,
- DFF40ACAFF99281CECC2303E /* PushNotificationSettingsView.swift in Sources */,
- BC607762E625C0DCD3B66E8A /* PushNotificationSettingsViewModel.swift in Sources */,
- D99AD1D26B1D745028A93B8A /* SettingView.swift in Sources */,
- F20FC30D05246FD333F034DE /* SettingViewModel.swift in Sources */,
- E635248ED51664A502A7F08A /* ThemeView.swift in Sources */,
+ 47C006F6D6AAA5848290E5E4 /* AccountView.swift in Sources */,
+ B19660510D0792E229B52C9A /* AccountViewModel.swift in Sources */,
+ F41D584F8BF5FF032AA3B12A /* PushNotificationSettingsView.swift in Sources */,
+ 30EBAE1A8A4CE21E038CE554 /* PushNotificationSettingsViewModel.swift in Sources */,
+ C2CFDA48F8D98DF428D7EF34 /* SettingsView.swift in Sources */,
+ 968A5DDD560CC221D35657AA /* SettingsViewModel.swift in Sources */,
+ D53C4D51716DDE5956A78FB6 /* ThemeView.swift in Sources */,
4BE7032EE7146793A5C58A94 /* ActivityKindItem.swift in Sources */,
CB6204EC0FB8557D7FAF7174 /* HeatmapActivityItem.swift in Sources */,
2DB84D2FBEA0653D48DF614F /* HeatmapDay.swift in Sources */,
diff --git a/Application/DevLogPresentation/Sources/Main/MainView.swift b/Application/DevLogPresentation/Sources/Main/MainView.swift
index 77287698..0614582f 100644
--- a/Application/DevLogPresentation/Sources/Main/MainView.swift
+++ b/Application/DevLogPresentation/Sources/Main/MainView.swift
@@ -359,13 +359,13 @@ struct MainView: View {
TodoDetailView(viewModel: profileViewCoordinator.makeTodoDetailViewModel(todoId: todoId))
.id(todoId)
case .settings:
- SettingView(viewModel: profileViewCoordinator.settingViewModel)
+ SettingsView(viewModel: profileViewCoordinator.settingsViewModel)
.environment(profileViewCoordinator.router)
case .theme:
ThemeView(
theme: Binding(
- get: { profileViewCoordinator.settingViewModel.state.theme },
- set: { profileViewCoordinator.settingViewModel.send(.setTheme($0)) }
+ get: { profileViewCoordinator.settingsViewModel.state.theme },
+ set: { profileViewCoordinator.settingsViewModel.send(.setTheme($0)) }
)
)
case .pushNotification:
diff --git a/Application/DevLogPresentation/Sources/Profile/ProfileView.swift b/Application/DevLogPresentation/Sources/Profile/ProfileView.swift
index 25727f13..3a01c5ab 100644
--- a/Application/DevLogPresentation/Sources/Profile/ProfileView.swift
+++ b/Application/DevLogPresentation/Sources/Profile/ProfileView.swift
@@ -27,7 +27,6 @@ struct ProfileView: View {
profileContentView
}
}
- .toolbar { profileToolbarContent }
.onChange(of: focused) { _, newValue in
withAnimation {
coordinator.viewModel.send(.updateStatusTextFieldFocus(newValue))
@@ -127,6 +126,7 @@ struct ProfileView: View {
.refreshable { coordinator.viewModel.send(.refresh) }
.frame(maxWidth: .infinity)
.background(Color(.systemGroupedBackground))
+ .toolbar { profileToolbarContent }
}
@ToolbarContentBuilder
@@ -148,15 +148,15 @@ struct ProfileView: View {
private func profileDestinationView(_ route: ProfileRoute) -> some View {
switch route {
case .settings:
- SettingView(viewModel: coordinator.settingViewModel)
+ SettingsView(viewModel: coordinator.settingsViewModel)
.environment(coordinator.router)
case .activity(let todoId):
TodoDetailView(viewModel: coordinator.makeTodoDetailViewModel(todoId: todoId))
case .theme:
ThemeView(
theme: Binding(
- get: { coordinator.settingViewModel.state.theme },
- set: { coordinator.settingViewModel.send(.setTheme($0)) }
+ get: { coordinator.settingsViewModel.state.theme },
+ set: { coordinator.settingsViewModel.send(.setTheme($0)) }
)
)
case .pushNotification:
diff --git a/Application/DevLogPresentation/Sources/Profile/ProfileViewCoordinator.swift b/Application/DevLogPresentation/Sources/Profile/ProfileViewCoordinator.swift
index 2a90f684..368275fc 100644
--- a/Application/DevLogPresentation/Sources/Profile/ProfileViewCoordinator.swift
+++ b/Application/DevLogPresentation/Sources/Profile/ProfileViewCoordinator.swift
@@ -13,7 +13,7 @@ import DevLogDomain
@Observable
final class ProfileViewCoordinator {
let viewModel: ProfileViewModel
- let settingViewModel: SettingViewModel
+ let settingsViewModel: SettingsViewModel
var router = NavigationRouter()
private let container: DIContainer
@@ -27,7 +27,7 @@ final class ProfileViewCoordinator {
fetchHeatmapActivityTypesUseCase: container.resolve(FetchHeatmapActivityTypesUseCase.self),
updateHeatmapActivityTypesUseCase: container.resolve(UpdateHeatmapActivityTypesUseCase.self)
)
- self.settingViewModel = SettingViewModel(
+ self.settingsViewModel = SettingsViewModel(
deleteAuthUseCase: container.resolve(DeleteAuthUseCase.self),
signOutUseCase: container.resolve(SignOutUseCase.self),
networkConnectivityUseCase: container.resolve(ObserveNetworkConnectivityUseCase.self),
diff --git a/Application/DevLogPresentation/Sources/Setting/AccountView.swift b/Application/DevLogPresentation/Sources/Settings/AccountView.swift
similarity index 100%
rename from Application/DevLogPresentation/Sources/Setting/AccountView.swift
rename to Application/DevLogPresentation/Sources/Settings/AccountView.swift
diff --git a/Application/DevLogPresentation/Sources/Setting/AccountViewModel.swift b/Application/DevLogPresentation/Sources/Settings/AccountViewModel.swift
similarity index 100%
rename from Application/DevLogPresentation/Sources/Setting/AccountViewModel.swift
rename to Application/DevLogPresentation/Sources/Settings/AccountViewModel.swift
diff --git a/Application/DevLogPresentation/Sources/Setting/PushNotificationSettingsView.swift b/Application/DevLogPresentation/Sources/Settings/PushNotificationSettingsView.swift
similarity index 100%
rename from Application/DevLogPresentation/Sources/Setting/PushNotificationSettingsView.swift
rename to Application/DevLogPresentation/Sources/Settings/PushNotificationSettingsView.swift
diff --git a/Application/DevLogPresentation/Sources/Setting/PushNotificationSettingsViewModel.swift b/Application/DevLogPresentation/Sources/Settings/PushNotificationSettingsViewModel.swift
similarity index 100%
rename from Application/DevLogPresentation/Sources/Setting/PushNotificationSettingsViewModel.swift
rename to Application/DevLogPresentation/Sources/Settings/PushNotificationSettingsViewModel.swift
diff --git a/Application/DevLogPresentation/Sources/Setting/SettingView.swift b/Application/DevLogPresentation/Sources/Settings/SettingsView.swift
similarity index 98%
rename from Application/DevLogPresentation/Sources/Setting/SettingView.swift
rename to Application/DevLogPresentation/Sources/Settings/SettingsView.swift
index 91bd74e7..059e32e9 100644
--- a/Application/DevLogPresentation/Sources/Setting/SettingView.swift
+++ b/Application/DevLogPresentation/Sources/Settings/SettingsView.swift
@@ -1,5 +1,5 @@
//
-// SettingView.swift
+// SettingsView.swift
// DevLogPresentation
//
// Created by opfic on 5/6/25.
@@ -8,9 +8,9 @@
import SwiftUI
import DevLogDomain
-struct SettingView: View {
+struct SettingsView: View {
@Environment(NavigationRouter.self) private var router
- @State var viewModel: SettingViewModel
+ @State var viewModel: SettingsViewModel
var body: some View {
let connected = viewModel.state.isNetworkConnected
diff --git a/Application/DevLogPresentation/Sources/Setting/SettingViewModel.swift b/Application/DevLogPresentation/Sources/Settings/SettingsViewModel.swift
similarity index 98%
rename from Application/DevLogPresentation/Sources/Setting/SettingViewModel.swift
rename to Application/DevLogPresentation/Sources/Settings/SettingsViewModel.swift
index aaddbab2..ab2401ed 100644
--- a/Application/DevLogPresentation/Sources/Setting/SettingViewModel.swift
+++ b/Application/DevLogPresentation/Sources/Settings/SettingsViewModel.swift
@@ -1,5 +1,5 @@
//
-// SettingViewModel.swift
+// SettingsViewModel.swift
// DevLogPresentation
//
// Created by 최윤진 on 11/22/25.
@@ -11,7 +11,7 @@ import DevLogCore
import DevLogDomain
@Observable
-final class SettingViewModel: Store {
+final class SettingsViewModel: Store {
struct State: Equatable {
var theme: SystemTheme = .automatic
var dirSize: Int64 = 0
@@ -158,7 +158,7 @@ final class SettingViewModel: Store {
}
}
-private extension SettingViewModel {
+private extension SettingsViewModel {
func setAlert(
_ state: inout State,
isPresented: Bool,
diff --git a/Application/DevLogPresentation/Sources/Setting/ThemeView.swift b/Application/DevLogPresentation/Sources/Settings/ThemeView.swift
similarity index 100%
rename from Application/DevLogPresentation/Sources/Setting/ThemeView.swift
rename to Application/DevLogPresentation/Sources/Settings/ThemeView.swift