From dc0077391f84138fa0c9d81c1e8181906b7e13f7 Mon Sep 17 00:00:00 2001 From: squid-ney Date: Mon, 25 Jul 2022 17:57:38 -0400 Subject: [PATCH] adding to git --- GrowSteps.xcodeproj/project.pbxproj | 617 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../UserInterfaceState.xcuserstate | Bin 0 -> 36359 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 56 ++ .../xcschemes/xcschememanagement.plist | 14 + .../AccentColor.colorset/Contents.json | 11 + .../AppIcon.appiconset/Contents.json | 98 +++ GrowSteps/Assets.xcassets/Contents.json | 6 + GrowSteps/ContentView.swift | 88 +++ GrowSteps/GrowSteps.entitlements | 10 + GrowSteps/GrowStepsApp.swift | 17 + GrowSteps/HealthAvatar.swift | 30 + GrowSteps/HealthStore.swift | 55 ++ GrowSteps/Info.plist | 54 ++ GrowSteps/Models/WellnessState.swift | 11 + .../Preview Assets.xcassets/Contents.json | 6 + GrowStepsTests/GrowStepsTests.swift | 33 + GrowStepsTests/Info.plist | 22 + GrowStepsUITests/GrowStepsUITests.swift | 42 ++ GrowStepsUITests/Info.plist | 22 + 21 files changed, 1207 insertions(+) create mode 100644 GrowSteps.xcodeproj/project.pbxproj create mode 100644 GrowSteps.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 GrowSteps.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 GrowSteps.xcodeproj/project.xcworkspace/xcuserdata/Sydney.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 GrowSteps.xcodeproj/xcuserdata/Sydney.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 GrowSteps.xcodeproj/xcuserdata/Sydney.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 GrowSteps/Assets.xcassets/AccentColor.colorset/Contents.json create mode 100644 GrowSteps/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 GrowSteps/Assets.xcassets/Contents.json create mode 100644 GrowSteps/ContentView.swift create mode 100644 GrowSteps/GrowSteps.entitlements create mode 100644 GrowSteps/GrowStepsApp.swift create mode 100644 GrowSteps/HealthAvatar.swift create mode 100644 GrowSteps/HealthStore.swift create mode 100644 GrowSteps/Info.plist create mode 100644 GrowSteps/Models/WellnessState.swift create mode 100644 GrowSteps/Preview Content/Preview Assets.xcassets/Contents.json create mode 100644 GrowStepsTests/GrowStepsTests.swift create mode 100644 GrowStepsTests/Info.plist create mode 100644 GrowStepsUITests/GrowStepsUITests.swift create mode 100644 GrowStepsUITests/Info.plist diff --git a/GrowSteps.xcodeproj/project.pbxproj b/GrowSteps.xcodeproj/project.pbxproj new file mode 100644 index 0000000..f3b5740 --- /dev/null +++ b/GrowSteps.xcodeproj/project.pbxproj @@ -0,0 +1,617 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + EB765EE227C57C5300FC9E83 /* HealthAvatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB765EE127C57C5300FC9E83 /* HealthAvatar.swift */; }; + EB765EE527C5874000FC9E83 /* WellnessState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB765EE427C5874000FC9E83 /* WellnessState.swift */; }; + EB82B3ED27AF31EF00F46135 /* HealthKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EB82B3EC27AF31EF00F46135 /* HealthKit.framework */; }; + EB82B3F227AF3ABC00F46135 /* HealthStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB82B3F127AF3ABC00F46135 /* HealthStore.swift */; }; + EB856FA227A17C4B00C15CEC /* GrowStepsApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB856FA127A17C4B00C15CEC /* GrowStepsApp.swift */; }; + EB856FA427A17C4B00C15CEC /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB856FA327A17C4B00C15CEC /* ContentView.swift */; }; + EB856FA627A17C4F00C15CEC /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EB856FA527A17C4F00C15CEC /* Assets.xcassets */; }; + EB856FA927A17C4F00C15CEC /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EB856FA827A17C4F00C15CEC /* Preview Assets.xcassets */; }; + EB856FB427A17C4F00C15CEC /* GrowStepsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB856FB327A17C4F00C15CEC /* GrowStepsTests.swift */; }; + EB856FBF27A17C4F00C15CEC /* GrowStepsUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB856FBE27A17C4F00C15CEC /* GrowStepsUITests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + EB856FB027A17C4F00C15CEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EB856F9627A17C4B00C15CEC /* Project object */; + proxyType = 1; + remoteGlobalIDString = EB856F9D27A17C4B00C15CEC; + remoteInfo = GrowSteps; + }; + EB856FBB27A17C4F00C15CEC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EB856F9627A17C4B00C15CEC /* Project object */; + proxyType = 1; + remoteGlobalIDString = EB856F9D27A17C4B00C15CEC; + remoteInfo = GrowSteps; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + EB765EE127C57C5300FC9E83 /* HealthAvatar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthAvatar.swift; sourceTree = ""; }; + EB765EE427C5874000FC9E83 /* WellnessState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WellnessState.swift; sourceTree = ""; }; + EB82B3EA27AF31EF00F46135 /* GrowSteps.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = GrowSteps.entitlements; sourceTree = ""; }; + EB82B3EC27AF31EF00F46135 /* HealthKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HealthKit.framework; path = System/Library/Frameworks/HealthKit.framework; sourceTree = SDKROOT; }; + EB82B3F127AF3ABC00F46135 /* HealthStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HealthStore.swift; sourceTree = ""; }; + EB856F9E27A17C4B00C15CEC /* GrowSteps.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GrowSteps.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EB856FA127A17C4B00C15CEC /* GrowStepsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrowStepsApp.swift; sourceTree = ""; }; + EB856FA327A17C4B00C15CEC /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = ""; }; + EB856FA527A17C4F00C15CEC /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + EB856FA827A17C4F00C15CEC /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; + EB856FAA27A17C4F00C15CEC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EB856FAF27A17C4F00C15CEC /* GrowStepsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GrowStepsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + EB856FB327A17C4F00C15CEC /* GrowStepsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrowStepsTests.swift; sourceTree = ""; }; + EB856FB527A17C4F00C15CEC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EB856FBA27A17C4F00C15CEC /* GrowStepsUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GrowStepsUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + EB856FBE27A17C4F00C15CEC /* GrowStepsUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GrowStepsUITests.swift; sourceTree = ""; }; + EB856FC027A17C4F00C15CEC /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + EB856F9B27A17C4B00C15CEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EB82B3ED27AF31EF00F46135 /* HealthKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB856FAC27A17C4F00C15CEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB856FB727A17C4F00C15CEC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + EB765EE327C5871000FC9E83 /* Models */ = { + isa = PBXGroup; + children = ( + EB765EE427C5874000FC9E83 /* WellnessState.swift */, + ); + path = Models; + sourceTree = ""; + }; + EB82B3EB27AF31EF00F46135 /* Frameworks */ = { + isa = PBXGroup; + children = ( + EB82B3EC27AF31EF00F46135 /* HealthKit.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + EB856F9527A17C4B00C15CEC = { + isa = PBXGroup; + children = ( + EB856FA027A17C4B00C15CEC /* GrowSteps */, + EB856FB227A17C4F00C15CEC /* GrowStepsTests */, + EB856FBD27A17C4F00C15CEC /* GrowStepsUITests */, + EB856F9F27A17C4B00C15CEC /* Products */, + EB82B3EB27AF31EF00F46135 /* Frameworks */, + ); + sourceTree = ""; + }; + EB856F9F27A17C4B00C15CEC /* Products */ = { + isa = PBXGroup; + children = ( + EB856F9E27A17C4B00C15CEC /* GrowSteps.app */, + EB856FAF27A17C4F00C15CEC /* GrowStepsTests.xctest */, + EB856FBA27A17C4F00C15CEC /* GrowStepsUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + EB856FA027A17C4B00C15CEC /* GrowSteps */ = { + isa = PBXGroup; + children = ( + EB765EE327C5871000FC9E83 /* Models */, + EB82B3EA27AF31EF00F46135 /* GrowSteps.entitlements */, + EB856FA127A17C4B00C15CEC /* GrowStepsApp.swift */, + EB856FA327A17C4B00C15CEC /* ContentView.swift */, + EB765EE127C57C5300FC9E83 /* HealthAvatar.swift */, + EB856FA527A17C4F00C15CEC /* Assets.xcassets */, + EB856FAA27A17C4F00C15CEC /* Info.plist */, + EB856FA727A17C4F00C15CEC /* Preview Content */, + EB82B3F127AF3ABC00F46135 /* HealthStore.swift */, + ); + path = GrowSteps; + sourceTree = ""; + }; + EB856FA727A17C4F00C15CEC /* Preview Content */ = { + isa = PBXGroup; + children = ( + EB856FA827A17C4F00C15CEC /* Preview Assets.xcassets */, + ); + path = "Preview Content"; + sourceTree = ""; + }; + EB856FB227A17C4F00C15CEC /* GrowStepsTests */ = { + isa = PBXGroup; + children = ( + EB856FB327A17C4F00C15CEC /* GrowStepsTests.swift */, + EB856FB527A17C4F00C15CEC /* Info.plist */, + ); + path = GrowStepsTests; + sourceTree = ""; + }; + EB856FBD27A17C4F00C15CEC /* GrowStepsUITests */ = { + isa = PBXGroup; + children = ( + EB856FBE27A17C4F00C15CEC /* GrowStepsUITests.swift */, + EB856FC027A17C4F00C15CEC /* Info.plist */, + ); + path = GrowStepsUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + EB856F9D27A17C4B00C15CEC /* GrowSteps */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB856FC327A17C4F00C15CEC /* Build configuration list for PBXNativeTarget "GrowSteps" */; + buildPhases = ( + EB856F9A27A17C4B00C15CEC /* Sources */, + EB856F9B27A17C4B00C15CEC /* Frameworks */, + EB856F9C27A17C4B00C15CEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GrowSteps; + productName = GrowSteps; + productReference = EB856F9E27A17C4B00C15CEC /* GrowSteps.app */; + productType = "com.apple.product-type.application"; + }; + EB856FAE27A17C4F00C15CEC /* GrowStepsTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB856FC627A17C4F00C15CEC /* Build configuration list for PBXNativeTarget "GrowStepsTests" */; + buildPhases = ( + EB856FAB27A17C4F00C15CEC /* Sources */, + EB856FAC27A17C4F00C15CEC /* Frameworks */, + EB856FAD27A17C4F00C15CEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + EB856FB127A17C4F00C15CEC /* PBXTargetDependency */, + ); + name = GrowStepsTests; + productName = GrowStepsTests; + productReference = EB856FAF27A17C4F00C15CEC /* GrowStepsTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + EB856FB927A17C4F00C15CEC /* GrowStepsUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EB856FC927A17C4F00C15CEC /* Build configuration list for PBXNativeTarget "GrowStepsUITests" */; + buildPhases = ( + EB856FB627A17C4F00C15CEC /* Sources */, + EB856FB727A17C4F00C15CEC /* Frameworks */, + EB856FB827A17C4F00C15CEC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + EB856FBC27A17C4F00C15CEC /* PBXTargetDependency */, + ); + name = GrowStepsUITests; + productName = GrowStepsUITests; + productReference = EB856FBA27A17C4F00C15CEC /* GrowStepsUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + EB856F9627A17C4B00C15CEC /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1240; + LastUpgradeCheck = 1240; + TargetAttributes = { + EB856F9D27A17C4B00C15CEC = { + CreatedOnToolsVersion = 12.4; + }; + EB856FAE27A17C4F00C15CEC = { + CreatedOnToolsVersion = 12.4; + TestTargetID = EB856F9D27A17C4B00C15CEC; + }; + EB856FB927A17C4F00C15CEC = { + CreatedOnToolsVersion = 12.4; + TestTargetID = EB856F9D27A17C4B00C15CEC; + }; + }; + }; + buildConfigurationList = EB856F9927A17C4B00C15CEC /* Build configuration list for PBXProject "GrowSteps" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = EB856F9527A17C4B00C15CEC; + productRefGroup = EB856F9F27A17C4B00C15CEC /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EB856F9D27A17C4B00C15CEC /* GrowSteps */, + EB856FAE27A17C4F00C15CEC /* GrowStepsTests */, + EB856FB927A17C4F00C15CEC /* GrowStepsUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + EB856F9C27A17C4B00C15CEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB856FA927A17C4F00C15CEC /* Preview Assets.xcassets in Resources */, + EB856FA627A17C4F00C15CEC /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB856FAD27A17C4F00C15CEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB856FB827A17C4F00C15CEC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + EB856F9A27A17C4B00C15CEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB765EE527C5874000FC9E83 /* WellnessState.swift in Sources */, + EB856FA427A17C4B00C15CEC /* ContentView.swift in Sources */, + EB82B3F227AF3ABC00F46135 /* HealthStore.swift in Sources */, + EB765EE227C57C5300FC9E83 /* HealthAvatar.swift in Sources */, + EB856FA227A17C4B00C15CEC /* GrowStepsApp.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB856FAB27A17C4F00C15CEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB856FB427A17C4F00C15CEC /* GrowStepsTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EB856FB627A17C4F00C15CEC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EB856FBF27A17C4F00C15CEC /* GrowStepsUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + EB856FB127A17C4F00C15CEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EB856F9D27A17C4B00C15CEC /* GrowSteps */; + targetProxy = EB856FB027A17C4F00C15CEC /* PBXContainerItemProxy */; + }; + EB856FBC27A17C4F00C15CEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EB856F9D27A17C4B00C15CEC /* GrowSteps */; + targetProxy = EB856FBB27A17C4F00C15CEC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + EB856FC127A17C4F00C15CEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + EB856FC227A17C4F00C15CEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + EB856FC427A17C4F00C15CEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = GrowSteps/GrowSteps.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"GrowSteps/Preview Content\""; + DEVELOPMENT_TEAM = 3V25YZZQMC; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = GrowSteps/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.GrowSteps; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + EB856FC527A17C4F00C15CEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = GrowSteps/GrowSteps.entitlements; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_ASSET_PATHS = "\"GrowSteps/Preview Content\""; + DEVELOPMENT_TEAM = 3V25YZZQMC; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = GrowSteps/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.GrowSteps; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + EB856FC727A17C4F00C15CEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = GrowStepsTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.GrowStepsTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GrowSteps.app/GrowSteps"; + }; + name = Debug; + }; + EB856FC827A17C4F00C15CEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = GrowStepsTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.GrowStepsTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/GrowSteps.app/GrowSteps"; + }; + name = Release; + }; + EB856FCA27A17C4F00C15CEC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = GrowStepsUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.GrowStepsUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = GrowSteps; + }; + name = Debug; + }; + EB856FCB27A17C4F00C15CEC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = GrowStepsUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.GrowStepsUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = GrowSteps; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + EB856F9927A17C4B00C15CEC /* Build configuration list for PBXProject "GrowSteps" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB856FC127A17C4F00C15CEC /* Debug */, + EB856FC227A17C4F00C15CEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB856FC327A17C4F00C15CEC /* Build configuration list for PBXNativeTarget "GrowSteps" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB856FC427A17C4F00C15CEC /* Debug */, + EB856FC527A17C4F00C15CEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB856FC627A17C4F00C15CEC /* Build configuration list for PBXNativeTarget "GrowStepsTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB856FC727A17C4F00C15CEC /* Debug */, + EB856FC827A17C4F00C15CEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EB856FC927A17C4F00C15CEC /* Build configuration list for PBXNativeTarget "GrowStepsUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EB856FCA27A17C4F00C15CEC /* Debug */, + EB856FCB27A17C4F00C15CEC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = EB856F9627A17C4B00C15CEC /* Project object */; +} diff --git a/GrowSteps.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/GrowSteps.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/GrowSteps.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/GrowSteps.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/GrowSteps.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/GrowSteps.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/GrowSteps.xcodeproj/project.xcworkspace/xcuserdata/Sydney.xcuserdatad/UserInterfaceState.xcuserstate b/GrowSteps.xcodeproj/project.xcworkspace/xcuserdata/Sydney.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..617f258e217fc0d3cb1c59ac36cf61df67e1bd02 GIT binary patch literal 36359 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%0APjbmtuaa?V2AW0O3)#wGIhys9fXMGA3+ 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 I{7*i814`=)TmS$7 literal 0 HcmV?d00001 diff --git a/GrowSteps.xcodeproj/xcuserdata/Sydney.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/GrowSteps.xcodeproj/xcuserdata/Sydney.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..1268552 --- /dev/null +++ b/GrowSteps.xcodeproj/xcuserdata/Sydney.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + diff --git a/GrowSteps.xcodeproj/xcuserdata/Sydney.xcuserdatad/xcschemes/xcschememanagement.plist b/GrowSteps.xcodeproj/xcuserdata/Sydney.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..93c9e32 --- /dev/null +++ b/GrowSteps.xcodeproj/xcuserdata/Sydney.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + GrowSteps.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/GrowSteps/Assets.xcassets/AccentColor.colorset/Contents.json b/GrowSteps/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/GrowSteps/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GrowSteps/Assets.xcassets/AppIcon.appiconset/Contents.json b/GrowSteps/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/GrowSteps/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GrowSteps/Assets.xcassets/Contents.json b/GrowSteps/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/GrowSteps/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GrowSteps/ContentView.swift b/GrowSteps/ContentView.swift new file mode 100644 index 0000000..5ead48b --- /dev/null +++ b/GrowSteps/ContentView.swift @@ -0,0 +1,88 @@ +// +// ContentView.swift +// GrowSteps +// +// Created by Sydney Achinger on 1/26/22. +// + +import SwiftUI +import HealthKit + +struct ContentView: View { + + @State private var progress = 10.0 + + @State private var stepCount: Double? + + @State private var healthStatus: Color? + + private var stepGoal = 5000.00 + + + private var healthStore: HealthStore? + + init() { + healthStore = HealthStore() + } + + private func getHealthStatus(steps: Double){ + let ratio = steps/stepGoal + if(ratio < 0.5){ + healthStatus = Color.red + } + if(ratio >= 0.5){ + healthStatus = Color.gray + } + if(ratio >= 1.0){ + healthStatus = Color.green + } + } + + private func updateUIFromStatistics( _ statisticsCollection: HKStatisticsCollection){ + + statisticsCollection.enumerateStatistics(from: Date(), to: Date()) { statistics, stop in + stepCount = statistics.sumQuantity()?.doubleValue(for: .count()) ?? 0.0 + getHealthStatus(steps: stepCount ?? 0.0) + + } + + } + + var body: some View { + VStack{ + HStack{ + ProgressView(value: stepCount ?? 0.0, total: stepGoal) + .padding(.top, 50) + //.rotationEffect(Angle(degrees: -90.0)) + + } + Spacer() + HealthAvatar(healthStatus: healthStatus ?? Color.clear) + Text(String(stepCount ?? 0.0)+" steps") + .font(.body) + .padding() + } + .onAppear(perform: { + if let healthStore = healthStore { + healthStore.requestAuthorization { (success) in + if success { + healthStore.calculateSteps { statisticsCollection in + if let statisticsCollection = statisticsCollection { + updateUIFromStatistics(statisticsCollection) + } + + } + } + } + } + }) + + } +} + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + ContentView() + .preferredColorScheme(.light) + } +} diff --git a/GrowSteps/GrowSteps.entitlements b/GrowSteps/GrowSteps.entitlements new file mode 100644 index 0000000..2ab14a2 --- /dev/null +++ b/GrowSteps/GrowSteps.entitlements @@ -0,0 +1,10 @@ + + + + + com.apple.developer.healthkit + + com.apple.developer.healthkit.access + + + diff --git a/GrowSteps/GrowStepsApp.swift b/GrowSteps/GrowStepsApp.swift new file mode 100644 index 0000000..f487d2a --- /dev/null +++ b/GrowSteps/GrowStepsApp.swift @@ -0,0 +1,17 @@ +// +// GrowStepsApp.swift +// GrowSteps +// +// Created by Sydney Achinger on 1/26/22. +// + +import SwiftUI + +@main +struct GrowStepsApp: App { + var body: some Scene { + WindowGroup { + ContentView() + } + } +} diff --git a/GrowSteps/HealthAvatar.swift b/GrowSteps/HealthAvatar.swift new file mode 100644 index 0000000..1e7523a --- /dev/null +++ b/GrowSteps/HealthAvatar.swift @@ -0,0 +1,30 @@ +// +// HealthAvatar.swift +// GrowSteps +// +// Created by Sydney Achinger on 2/22/22. +// + +import SwiftUI + +struct HealthAvatar: View { + let healthStatus: Color + +// let statusColorPairs = [ +// "low": Color.red, +// "good": Color.gray, +// "great": Color.green +// ] + + var body: some View { + Rectangle() + .fill(healthStatus) + .frame(width: 200, height: 200) + } +} + +struct HealthAvatar_Previews: PreviewProvider { + static var previews: some View { + HealthAvatar(healthStatus: Color.clear) + } +} diff --git a/GrowSteps/HealthStore.swift b/GrowSteps/HealthStore.swift new file mode 100644 index 0000000..3dc5ca6 --- /dev/null +++ b/GrowSteps/HealthStore.swift @@ -0,0 +1,55 @@ +// +// HealthStore.swift +// GrowSteps +// +// Created by Sydney Achinger on 2/5/22. +// + +import Foundation +import HealthKit + + +class HealthStore { + + var healthStore: HKHealthStore? + + init() { + if HKHealthStore.isHealthDataAvailable(){ + healthStore = HKHealthStore() + let startDate = Calendar.current.date(byAdding: .day, value: -7, to: Date()) + } + } + + func calculateSteps(completion: @escaping (HKStatisticsCollection?) -> Void){ + let stepType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.stepCount)! + + let now = Date() + let startOfDay = Calendar.current.startOfDay(for: now) + var interval = DateComponents() + interval.day = 1 + + let query = HKStatisticsCollectionQuery( + quantityType: stepType, + quantitySamplePredicate: nil, + options: .cumulativeSum, + anchorDate: startOfDay, + intervalComponents: interval) + + query.initialResultsHandler = { query, statisticsCollection, error in + completion(statisticsCollection) + } + if let healthStore = healthStore { + healthStore.execute(query) + } + } + + func requestAuthorization(completion: @escaping (Bool) -> Void){ + let stepType = HKQuantityType.quantityType(forIdentifier: HKQuantityTypeIdentifier.stepCount)! + + guard let healthStore = self.healthStore else { return completion(false) } + + healthStore.requestAuthorization(toShare: [], read: [stepType]) { (success, error) in + completion(success) + } + } +} diff --git a/GrowSteps/Info.plist b/GrowSteps/Info.plist new file mode 100644 index 0000000..dbe366c --- /dev/null +++ b/GrowSteps/Info.plist @@ -0,0 +1,54 @@ + + + + + NSHealthUpdateUsageDescription + This app would like to access your health dataa to motivate you to your steps goal. + NSHealthShareUsageDescription + This app would like to access your health dataa to motivate you to your steps goal. + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen + + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/GrowSteps/Models/WellnessState.swift b/GrowSteps/Models/WellnessState.swift new file mode 100644 index 0000000..2a64054 --- /dev/null +++ b/GrowSteps/Models/WellnessState.swift @@ -0,0 +1,11 @@ +// +// WellnessState.swift +// GrowSteps +// +// Created by Sydney Achinger on 2/22/22. +// + +import Foundation + +struct WellnessState { +} diff --git a/GrowSteps/Preview Content/Preview Assets.xcassets/Contents.json b/GrowSteps/Preview Content/Preview Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/GrowSteps/Preview Content/Preview Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/GrowStepsTests/GrowStepsTests.swift b/GrowStepsTests/GrowStepsTests.swift new file mode 100644 index 0000000..2b3abb7 --- /dev/null +++ b/GrowStepsTests/GrowStepsTests.swift @@ -0,0 +1,33 @@ +// +// GrowStepsTests.swift +// GrowStepsTests +// +// Created by Sydney Achinger on 1/26/22. +// + +import XCTest +@testable import GrowSteps + +class GrowStepsTests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() throws { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/GrowStepsTests/Info.plist b/GrowStepsTests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/GrowStepsTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/GrowStepsUITests/GrowStepsUITests.swift b/GrowStepsUITests/GrowStepsUITests.swift new file mode 100644 index 0000000..b3cf847 --- /dev/null +++ b/GrowStepsUITests/GrowStepsUITests.swift @@ -0,0 +1,42 @@ +// +// GrowStepsUITests.swift +// GrowStepsUITests +// +// Created by Sydney Achinger on 1/26/22. +// + +import XCTest + +class GrowStepsUITests: XCTestCase { + + override func setUpWithError() throws { + // Put setup code here. This method is called before the invocation of each test method in the class. + + // In UI tests it is usually best to stop immediately when a failure occurs. + continueAfterFailure = false + + // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. + } + + override func tearDownWithError() throws { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() throws { + // UI tests must launch the application that they test. + let app = XCUIApplication() + app.launch() + + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testLaunchPerformance() throws { + if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) { + // This measures how long it takes to launch your application. + measure(metrics: [XCTApplicationLaunchMetric()]) { + XCUIApplication().launch() + } + } + } +} diff --git a/GrowStepsUITests/Info.plist b/GrowStepsUITests/Info.plist new file mode 100644 index 0000000..64d65ca --- /dev/null +++ b/GrowStepsUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + +