Skip to content

Commit e0484bb

Browse files
authored
Reworking/refactoring to share functionality with Daily Calorie Tracker (#17)
1 parent f5d478a commit e0484bb

File tree

9 files changed

+51
-22
lines changed

9 files changed

+51
-22
lines changed

.swiftformat

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
--wraparguments after-first
2+
3+
# was changing
4+
# let routine: Routine = Routine.get(viewContext, forURIRepresentation: routineURI)
5+
# to
6+
# let routine = Routine.get(viewContext, forURIRepresentation: routineURI)
7+
--disable redundantType

Gym Routine Tracker Watch.xcodeproj/project.pbxproj

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@
175175
attributes = {
176176
BuildIndependentTargetsInParallel = 1;
177177
LastSwiftUpdateCheck = 1410;
178-
LastUpgradeCheck = 1410;
178+
LastUpgradeCheck = 1420;
179179
TargetAttributes = {
180180
40CE13FC293B0DBB00462D62 = {
181181
CreatedOnToolsVersion = 14.1;
@@ -284,6 +284,7 @@
284284
CLANG_WARN_UNREACHABLE_CODE = YES;
285285
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
286286
COPY_PHASE_STRIP = NO;
287+
DEAD_CODE_STRIPPING = YES;
287288
DEBUG_INFORMATION_FORMAT = dwarf;
288289
ENABLE_STRICT_OBJC_MSGSEND = YES;
289290
ENABLE_TESTABILITY = YES;
@@ -344,6 +345,7 @@
344345
CLANG_WARN_UNREACHABLE_CODE = YES;
345346
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
346347
COPY_PHASE_STRIP = NO;
348+
DEAD_CODE_STRIPPING = YES;
347349
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
348350
ENABLE_NS_ASSERTIONS = NO;
349351
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -378,14 +380,14 @@
378380
ENABLE_PREVIEWS = YES;
379381
GENERATE_INFOPLIST_FILE = YES;
380382
INFOPLIST_FILE = Sources/Info.plist;
381-
INFOPLIST_KEY_CFBundleDisplayName = "Gym Routine Tracker";
383+
INFOPLIST_KEY_CFBundleDisplayName = "Gym Routines";
382384
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
383385
INFOPLIST_KEY_WKWatchOnly = YES;
384386
LD_RUNPATH_SEARCH_PATHS = (
385387
"$(inherited)",
386388
"@executable_path/Frameworks",
387389
);
388-
MARKETING_VERSION = 1.6.1;
390+
MARKETING_VERSION = 1.7.0;
389391
PRODUCT_BUNDLE_IDENTIFIER = org.openalloc.grout.watch;
390392
PRODUCT_NAME = "$(TARGET_NAME)";
391393
SDKROOT = watchos;
@@ -411,14 +413,14 @@
411413
ENABLE_PREVIEWS = YES;
412414
GENERATE_INFOPLIST_FILE = YES;
413415
INFOPLIST_FILE = Sources/Info.plist;
414-
INFOPLIST_KEY_CFBundleDisplayName = "Gym Routine Tracker";
416+
INFOPLIST_KEY_CFBundleDisplayName = "Gym Routines";
415417
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
416418
INFOPLIST_KEY_WKWatchOnly = YES;
417419
LD_RUNPATH_SEARCH_PATHS = (
418420
"$(inherited)",
419421
"@executable_path/Frameworks",
420422
);
421-
MARKETING_VERSION = 1.6.1;
423+
MARKETING_VERSION = 1.7.0;
422424
PRODUCT_BUNDLE_IDENTIFIER = org.openalloc.grout.watch;
423425
PRODUCT_NAME = "$(TARGET_NAME)";
424426
SDKROOT = watchos;
@@ -440,7 +442,7 @@
440442
DEVELOPMENT_TEAM = J735QC5U38;
441443
INFOPLIST_FILE = Sources/Info.plist;
442444
INFOPLIST_KEY_CFBundleDisplayName = "Gym Routine Tracker";
443-
MARKETING_VERSION = 1.6.1;
445+
MARKETING_VERSION = 1.7.0;
444446
PRODUCT_BUNDLE_IDENTIFIER = org.openalloc.grout;
445447
PRODUCT_NAME = "$(TARGET_NAME)";
446448
SDKROOT = iphoneos;
@@ -457,7 +459,7 @@
457459
DEVELOPMENT_TEAM = J735QC5U38;
458460
INFOPLIST_FILE = Sources/Info.plist;
459461
INFOPLIST_KEY_CFBundleDisplayName = "Gym Routine Tracker";
460-
MARKETING_VERSION = 1.6.1;
462+
MARKETING_VERSION = 1.7.0;
461463
PRODUCT_BUNDLE_IDENTIFIER = org.openalloc.grout;
462464
PRODUCT_NAME = "$(TARGET_NAME)";
463465
SDKROOT = iphoneos;

Gym Routine Tracker Watch.xcodeproj/xcshareddata/xcschemes/Gym Routine Tracker Watch App.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1410"
3+
LastUpgradeVersion = "1420"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

Sources/ContentView.swift

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,26 +15,42 @@ import GroutLib
1515
import GroutUI
1616

1717
struct ContentView: View {
18+
@Environment(\.managedObjectContext) private var viewContext
19+
@EnvironmentObject private var manager: CoreDataStack
20+
1821
@SceneStorage("main-routines-nav") private var routinesNavData: Data?
1922

2023
var body: some View {
21-
NavStack(name: "main", navData: $routinesNavData) {
24+
NavStack(navData: $routinesNavData, destination: destination) {
2225
RoutineList()
2326
}
27+
.onContinueUserActivity(startRoutineActivityType) {
28+
handleStartRoutineUA(viewContext, $0)
29+
}
30+
}
31+
32+
// handle routes for watchOS-specific views here
33+
@ViewBuilder
34+
private func destination(_ router: GroutRouter, _ route: GroutRoute) -> some View {
35+
switch route {
36+
default:
37+
GroutDestination(route)
38+
.environmentObject(router)
39+
.environment(\.managedObjectContext, viewContext)
40+
}
2441
}
2542
}
2643

2744
struct ContentView_Previews: PreviewProvider {
2845
static var previews: some View {
29-
let ctx = PersistenceManager.getPreviewContainer().viewContext
46+
let manager = CoreDataStack.getPreviewStack()
47+
let ctx = manager.container.viewContext
3048
let routine = Routine.create(ctx, userOrder: 0)
3149
routine.name = "Back & Bicep"
32-
let e1 = Exercise.create(ctx, userOrder: 0)
50+
let e1 = Exercise.create(ctx, routine: routine, userOrder: 0)
3351
e1.name = "Lat Pulldown"
34-
e1.routine = routine
35-
let e2 = Exercise.create(ctx, userOrder: 1)
52+
let e2 = Exercise.create(ctx, routine: routine, userOrder: 1)
3653
e2.name = "Arm Curl"
37-
e2.routine = routine
3854
return ContentView()
3955
.environment(\.managedObjectContext, ctx)
4056
}

Sources/WatchApp.swift

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,28 +12,32 @@ import os
1212
import SwiftUI
1313

1414
import GroutLib
15+
import TrackerLib
1516

1617
@main
1718
struct Gym_Routine_Tracker_Watch_App: App {
18-
let persistenceManager = PersistenceManager.shared
19-
2019
@Environment(\.scenePhase) var scenePhase
2120

22-
private let logger = Logger(
23-
subsystem: Bundle.main.bundleIdentifier!,
24-
category: "App"
25-
)
21+
// MARK: - Locals
22+
23+
private let coreDataStack = CoreDataStack(isCloud: true)
24+
25+
private let logger = Logger(subsystem: Bundle.main.bundleIdentifier!,
26+
category: "App")
27+
28+
// MARK: - Scene
2629

2730
var body: some Scene {
2831
WindowGroup {
2932
ContentView()
3033
.environment(\.managedObjectContext,
31-
persistenceManager.container.viewContext)
34+
coreDataStack.container.viewContext)
35+
.environmentObject(coreDataStack)
3236
}
3337
.onChange(of: scenePhase) { _ in
3438
// save if: (1) app moved to background, and (2) changes are pending
3539
do {
36-
try persistenceManager.container.viewContext.save()
40+
try coreDataStack.container.viewContext.save()
3741
} catch {
3842
logger.error("\(#function): \(error.localizedDescription)")
3943
}

0 commit comments

Comments
 (0)