Skip to content

Commit 920e6d5

Browse files
authored
feat: Add Profile view to watchOS app (#138)
* feat: Add Profile view to watchOS app * Update README.md
1 parent 5862703 commit 920e6d5

File tree

23 files changed

+300
-67
lines changed

23 files changed

+300
-67
lines changed

OCKSample.xcodeproj/project.pbxproj

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,14 @@
5353
7099D20C29E98E400037CD8E /* InstallationChannel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7099D20A29E98E400037CD8E /* InstallationChannel.swift */; };
5454
70A98D62278A2683009B58F2 /* Styler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9169381A271B64E100A634ED /* Styler.swift */; };
5555
70A98D63278A268B009B58F2 /* ColorStyler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9169381C271B650700A634ED /* ColorStyler.swift */; };
56-
70A98D68278A2DF1009B58F2 /* TintColorKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918FDEC2271B4E950045A0EF /* TintColorKey.swift */; };
5756
70C0D474279BA492003DA141 /* Utility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91693821271B897200A634ED /* Utility.swift */; };
5857
70CF66E428E1E74C00FAE977 /* TintColorFlipKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70CF66E328E1E74C00FAE977 /* TintColorFlipKey.swift */; };
5958
70CF66E528E1E74C00FAE977 /* TintColorFlipKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70CF66E328E1E74C00FAE977 /* TintColorFlipKey.swift */; };
6059
70DFD80B2567074500B9DB12 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70BD2B1E254B44DB0030B424 /* LoginView.swift */; };
60+
70E342292DB05813005124F9 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70E342282DB05813005124F9 /* ProfileView.swift */; };
61+
70E3422B2DB0581C005124F9 /* MainTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70E3422A2DB0581C005124F9 /* MainTabView.swift */; };
62+
70E3422F2DB06281005124F9 /* NoHighlightStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70E3422E2DB06281005124F9 /* NoHighlightStyle.swift */; };
63+
70E342302DB062F8005124F9 /* NoHighlightStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70E3422E2DB06281005124F9 /* NoHighlightStyle.swift */; };
6164
70F03A952786093B00E5AFB4 /* OCKHealthKitPassthroughStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70F03A942786093B00E5AFB4 /* OCKHealthKitPassthroughStore.swift */; };
6265
70F03A972786098F00E5AFB4 /* OCKStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70F03A962786098F00E5AFB4 /* OCKStore.swift */; };
6366
70F03A9C27860A2000E5AFB4 /* OCKStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70F03A962786098F00E5AFB4 /* OCKStore.swift */; };
@@ -87,7 +90,6 @@
8790
918FDEB7271B41FF0045A0EF /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918FDEB6271B41FF0045A0EF /* Logger.swift */; };
8891
918FDEB8271B49060045A0EF /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918FDEB6271B41FF0045A0EF /* Logger.swift */; };
8992
918FDEB9271B493A0045A0EF /* Installation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918FDEB4271B40590045A0EF /* Installation.swift */; };
90-
918FDEC3271B4E950045A0EF /* TintColorKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918FDEC2271B4E950045A0EF /* TintColorKey.swift */; };
9193
918FDEC5271B4EA70045A0EF /* StoreCoordinatorKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 918FDEC4271B4EA70045A0EF /* StoreCoordinatorKey.swift */; };
9294
91AD922224A45A3900925D4D /* ParseCareKit.plist in Resources */ = {isa = PBXBuildFile; fileRef = 91AD922124A45A3900925D4D /* ParseCareKit.plist */; };
9395
91AD922424A461D200925D4D /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 91AD922324A461D200925D4D /* README.md */; };
@@ -182,6 +184,9 @@
182184
7099D20A29E98E400037CD8E /* InstallationChannel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstallationChannel.swift; sourceTree = "<group>"; };
183185
70BD2B1E254B44DB0030B424 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = "<group>"; };
184186
70CF66E328E1E74C00FAE977 /* TintColorFlipKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TintColorFlipKey.swift; sourceTree = "<group>"; };
187+
70E342282DB05813005124F9 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
188+
70E3422A2DB0581C005124F9 /* MainTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabView.swift; sourceTree = "<group>"; };
189+
70E3422E2DB06281005124F9 /* NoHighlightStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoHighlightStyle.swift; sourceTree = "<group>"; };
185190
70F03A942786093B00E5AFB4 /* OCKHealthKitPassthroughStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OCKHealthKitPassthroughStore.swift; sourceTree = "<group>"; };
186191
70F03A962786098F00E5AFB4 /* OCKStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OCKStore.swift; sourceTree = "<group>"; };
187192
70F03AA227860AFF00E5AFB4 /* OCKPatient+Parse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OCKPatient+Parse.swift"; sourceTree = "<group>"; };
@@ -198,7 +203,6 @@
198203
91693821271B897200A634ED /* Utility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utility.swift; sourceTree = "<group>"; };
199204
918FDEB4271B40590045A0EF /* Installation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Installation.swift; sourceTree = "<group>"; };
200205
918FDEB6271B41FF0045A0EF /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = "<group>"; };
201-
918FDEC2271B4E950045A0EF /* TintColorKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TintColorKey.swift; sourceTree = "<group>"; };
202206
918FDEC4271B4EA70045A0EF /* StoreCoordinatorKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreCoordinatorKey.swift; sourceTree = "<group>"; };
203207
91AD922124A45A3900925D4D /* ParseCareKit.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ParseCareKit.plist; sourceTree = "<group>"; };
204208
91AD922324A461D200925D4D /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
@@ -274,14 +278,6 @@
274278
path = OCKSampleUITests;
275279
sourceTree = "<group>";
276280
};
277-
70221F2B28D7C7C600971195 /* CustomCards */ = {
278-
isa = PBXGroup;
279-
children = (
280-
E7C37848228F887800E982D8 /* TipView.swift */,
281-
);
282-
path = CustomCards;
283-
sourceTree = "<group>";
284-
};
285281
70221F2C28D7CD7400971195 /* Extensions */ = {
286282
isa = PBXGroup;
287283
children = (
@@ -305,6 +301,7 @@
305301
children = (
306302
70221F2728D7809800971195 /* MainTabView.swift */,
307303
7036E4D2256EBE35006E9A3C /* MainView.swift */,
304+
70E3422C2DB058A7005124F9 /* Cards */,
308305
70308878258272CD00FFABB6 /* Care */,
309306
7030887D258272F400FFABB6 /* Contact */,
310307
7030887E2582731300FFABB6 /* Login */,
@@ -319,7 +316,6 @@
319316
children = (
320317
7036E4C3256E0A48006E9A3C /* CareView.swift */,
321318
E7440E4E229477F7007AD30A /* CareViewController.swift */,
322-
70221F2B28D7C7C600971195 /* CustomCards */,
323319
);
324320
path = Care;
325321
sourceTree = "<group>";
@@ -354,8 +350,10 @@
354350
isa = PBXGroup;
355351
children = (
356352
7075151C28DE1A7400A57A0C /* MainView.swift */,
353+
70E3422A2DB0581C005124F9 /* MainTabView.swift */,
357354
70A98D64278A2722009B58F2 /* Care */,
358355
70A98D65278A273E009B58F2 /* Login */,
356+
70E342272DB057FD005124F9 /* Profile */,
359357
);
360358
path = Main;
361359
sourceTree = "<group>";
@@ -396,6 +394,31 @@
396394
path = Login;
397395
sourceTree = "<group>";
398396
};
397+
70E342272DB057FD005124F9 /* Profile */ = {
398+
isa = PBXGroup;
399+
children = (
400+
70E342282DB05813005124F9 /* ProfileView.swift */,
401+
);
402+
path = Profile;
403+
sourceTree = "<group>";
404+
};
405+
70E3422C2DB058A7005124F9 /* Cards */ = {
406+
isa = PBXGroup;
407+
children = (
408+
E7C37848228F887800E982D8 /* TipView.swift */,
409+
70E3422D2DB0626A005124F9 /* Modifiers */,
410+
);
411+
path = Cards;
412+
sourceTree = "<group>";
413+
};
414+
70E3422D2DB0626A005124F9 /* Modifiers */ = {
415+
isa = PBXGroup;
416+
children = (
417+
70E3422E2DB06281005124F9 /* NoHighlightStyle.swift */,
418+
);
419+
path = Modifiers;
420+
sourceTree = "<group>";
421+
};
399422
70F921AA27CABDE900368CEC /* WatchConnectivity */ = {
400423
isa = PBXGroup;
401424
children = (
@@ -461,7 +484,6 @@
461484
70F921A727CA9A3A00368CEC /* CustomStylerKey.swift */,
462485
70F03AA727860E7700E5AFB4 /* FontColorKey.swift */,
463486
918FDEC4271B4EA70045A0EF /* StoreCoordinatorKey.swift */,
464-
918FDEC2271B4E950045A0EF /* TintColorKey.swift */,
465487
70CF66E328E1E74C00FAE977 /* TintColorFlipKey.swift */,
466488
);
467489
path = Environment;
@@ -744,8 +766,11 @@
744766
7075151E28DE1A8300A57A0C /* MainView.swift in Sources */,
745767
70A98D62278A2683009B58F2 /* Styler.swift in Sources */,
746768
91693818271B5E1600A634ED /* Constants.swift in Sources */,
769+
70E3422B2DB0581C005124F9 /* MainTabView.swift in Sources */,
747770
7075152028DE1BB400A57A0C /* LoginView.swift in Sources */,
771+
70E342292DB05813005124F9 /* ProfileView.swift in Sources */,
748772
70F921B227CAC16E00368CEC /* RemoteSessionDelegate.swift in Sources */,
773+
70E342302DB062F8005124F9 /* NoHighlightStyle.swift in Sources */,
749774
70221F2F28D7CDE400971195 /* AppDelegate+ParseRemoteDelegate.swift in Sources */,
750775
7083A857279CA40F00B3832E /* PCKUtility.swift in Sources */,
751776
91AD923924A4C42D00925D4D /* OCKWatchSampleApp.swift in Sources */,
@@ -755,7 +780,6 @@
755780
7099D20329E98DDF0037CD8E /* MainViewPath.swift in Sources */,
756781
707CC719254DA91900116728 /* OCKLocalization.swift in Sources */,
757782
7007759B252229C900EC0EDA /* User.swift in Sources */,
758-
70A98D68278A2DF1009B58F2 /* TintColorKey.swift in Sources */,
759783
7099D20929E98E200037CD8E /* UserType.swift in Sources */,
760784
918FDEB9271B493A0045A0EF /* Installation.swift in Sources */,
761785
91AD923F24A4C42D00925D4D /* NotificationController.swift in Sources */,
@@ -793,7 +817,7 @@
793817
7036E4C4256E0A48006E9A3C /* CareView.swift in Sources */,
794818
70F921B027CABED600368CEC /* LocalSyncSessionDelegate.swift in Sources */,
795819
70221F2828D7809800971195 /* MainTabView.swift in Sources */,
796-
918FDEC3271B4E950045A0EF /* TintColorKey.swift in Sources */,
820+
70E3422F2DB06281005124F9 /* NoHighlightStyle.swift in Sources */,
797821
70CF66E428E1E74C00FAE977 /* TintColorFlipKey.swift in Sources */,
798822
70F03AA327860AFF00E5AFB4 /* OCKPatient+Parse.swift in Sources */,
799823
7099D1FF29E98D900037CD8E /* AppError.swift in Sources */,
@@ -865,6 +889,7 @@
865889
buildSettings = {
866890
ALWAYS_SEARCH_USER_PATHS = NO;
867891
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
892+
"ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME[sdk=*]" = AccentColor;
868893
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
869894
CLANG_ANALYZER_NONNULL = YES;
870895
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@@ -925,6 +950,7 @@
925950
isa = XCBuildConfiguration;
926951
buildSettings = {
927952
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
953+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
928954
CODE_SIGN_ENTITLEMENTS = OCKSample/OCKSample.entitlements;
929955
CODE_SIGN_IDENTITY = "Apple Development";
930956
CODE_SIGN_STYLE = Automatic;
@@ -1101,6 +1127,7 @@
11011127
buildSettings = {
11021128
ALWAYS_SEARCH_USER_PATHS = NO;
11031129
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
1130+
"ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME[sdk=*]" = AccentColor;
11041131
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
11051132
CLANG_ANALYZER_NONNULL = YES;
11061133
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@@ -1167,6 +1194,7 @@
11671194
isa = XCBuildConfiguration;
11681195
buildSettings = {
11691196
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
1197+
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
11701198
CODE_SIGN_ENTITLEMENTS = OCKSample/OCKSample.entitlements;
11711199
CODE_SIGN_IDENTITY = "Apple Development";
11721200
CODE_SIGN_STYLE = Automatic;

OCKSample/Environment/TintColorKey.swift

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// NoHighlightStyle.swift
3+
// OCKSample
4+
//
5+
// Created by Corey Baker on 3/27/25.
6+
// Copyright © 2025 Network Reconnaissance Lab. All rights reserved.
7+
//
8+
9+
import SwiftUI
10+
11+
struct NoHighlightStyle: ButtonStyle {
12+
func makeBody(configuration: Self.Configuration) -> some View {
13+
return configuration.label.contentShape(Rectangle())
14+
}
15+
}
File renamed without changes.

OCKSample/Main/Care/CareView.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ struct CareView: UIViewControllerRepresentable {
6161
struct CareView_Previews: PreviewProvider {
6262
static var previews: some View {
6363
CareView()
64-
.accentColor(Color(TintColorKey.defaultValue))
6564
.environment(\.appDelegate, AppDelegate())
6665
.environment(\.careStore, Utility.createPreviewStore())
6766
}

OCKSample/Main/Care/CareViewController.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,6 @@ class CareViewController: OCKDailyPageViewController {
4343

4444
private var isSyncing = false
4545
private var isLoading = false
46-
private var accentColor: Color {
47-
Color(TintColorKey.defaultValue)
48-
}
4946
private var style: Styler {
5047
CustomStylerKey.defaultValue
5148
}
@@ -114,7 +111,7 @@ class CareViewController: OCKDailyPageViewController {
114111
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "\(progress)",
115112
style: .plain, target: self,
116113
action: #selector(self.synchronizeWithRemote))
117-
self.navigationItem.rightBarButtonItem?.tintColor = TintColorKey.defaultValue
114+
self.navigationItem.rightBarButtonItem?.tintColor = self.view.tintColor
118115
}
119116
}
120117
}
@@ -291,7 +288,7 @@ class CareViewController: OCKDailyPageViewController {
291288

292289
// dynamic gradient colors
293290
let nauseaGradientStart = Color(TintColorFlipKey.defaultValue)
294-
let nauseaGradientEnd = accentColor
291+
let nauseaGradientEnd = Color.accentColor
295292

296293
let nauseaDataSeries = CKEDataSeriesConfiguration(
297294
taskID: task.id,

OCKSample/Main/Contact/ContactView.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ struct ContactView_Previews: PreviewProvider {
4545

4646
static var previews: some View {
4747
ContactView()
48-
.accentColor(Color(TintColorKey.defaultValue))
4948
.environment(\.careStore, Utility.createPreviewStore())
5049
}
5150
}

OCKSample/Main/Login/LoginView.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import UIKit
2121
in Section 2 for an explanation
2222
*/
2323
struct LoginView: View {
24-
@Environment(\.tintColor) var tintColor
2524
@Environment(\.tintColorFlip) var tintColorFlip
2625
@ObservedObject var viewModel: LoginViewModel
2726
@State var usersname = ""
@@ -161,7 +160,8 @@ struct LoginView: View {
161160
gradient: Gradient(
162161
colors: [
163162
Color(tintColorFlip),
164-
Color(tintColor)]
163+
Color.accentColor
164+
]
165165
),
166166
startPoint: .top,
167167
endPoint: .bottom
@@ -173,6 +173,5 @@ struct LoginView: View {
173173
struct LoginView_Previews: PreviewProvider {
174174
static var previews: some View {
175175
LoginView(viewModel: .init())
176-
.accentColor(Color(TintColorKey.defaultValue))
177176
}
178177
}

OCKSample/Main/MainTabView.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ struct MainTabView: View {
5959
struct MainTabView_Previews: PreviewProvider {
6060
static var previews: some View {
6161
MainTabView(loginViewModel: .init())
62-
.accentColor(Color(TintColorKey.defaultValue))
6362
.environment(\.careStore, Utility.createPreviewStore())
6463
}
6564
}

OCKSample/Main/MainView.swift

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,5 @@ struct MainView_Previews: PreviewProvider {
7070
MainView()
7171
.environment(\.appDelegate, AppDelegate())
7272
.environment(\.careStore, Utility.createPreviewStore())
73-
.accentColor(Color(TintColorKey.defaultValue))
7473
}
7574
}

0 commit comments

Comments
 (0)