diff --git a/.github/workflows/beta-deployment.yml b/.github/workflows/beta-deployment.yml index 3851246..515284c 100644 --- a/.github/workflows/beta-deployment.yml +++ b/.github/workflows/beta-deployment.yml @@ -25,7 +25,7 @@ jobs: uses: StanfordBDHG/.github/.github/workflows/xcodebuild-or-fastlane.yml@v2 secrets: inherit with: - artifactname: TemplateApplication.xcresult + artifactname: OwnYourData.xcresult runsonlabels: '["macos-latest"]' fastlanelane: beta setupsigning: true diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index a3f2c5e..6d24332 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -22,10 +22,10 @@ jobs: uses: StanfordBDHG/.github/.github/workflows/swiftlint.yml@v2 buildandtest: name: Build and Test - uses: StanfordBDHG/.github/.github/workflows/xcodebuild-or-fastlane.yml@v2 + uses: CS342/.github/.github/workflows/xcodebuild-or-fastlane.yml@v1 with: - artifactname: TemplateApplication.xcresult - runsonlabels: '["macos-latest"]' + artifactname: OwnYourData.xcresult + runsonlabels: '["macOS", "self-hosted"]' setupfirebaseemulator: true customcommand: "firebase emulators:exec 'fastlane test'" uploadcoveragereport: @@ -33,4 +33,4 @@ jobs: needs: buildandtest uses: StanfordBDHG/.github/.github/workflows/create-and-upload-coverage-report.yml@v2 with: - coveragereports: TemplateApplication.xcresult + coveragereports: OwnYourData.xcresult diff --git a/.gitignore b/.gitignore index 62b42d8..23ae896 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ .swiftpm .derivedData .build/ -!TemplateApplication.xcodeproj +!OwnYourData.xcodeproj # IDE related folders .idea @@ -29,7 +29,7 @@ xcuserdata/ # Tests report.junit report.html -TemplateApplication.xcresult +OwnYourData.xcresult # Logs logs diff --git a/.swiftlint.yml b/.swiftlint.yml index 42eb499..438fdb6 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -382,8 +382,8 @@ excluded: # paths to ignore during linting. Takes precedence over `included`. - .swiftpm closure_body_length: # Closure bodies should not span too many lines. - - 35 # warning - default: 20 - - 35 # error - default: 100 + - 75 # warning - default: 20 + - 75 # error - default: 100 enum_case_associated_values_count: # Number of associated values in an enum case should be low - 5 # warning - default: 5 diff --git a/OwnYourData.xcodeproj/project.pbxproj b/OwnYourData.xcodeproj/project.pbxproj new file mode 100644 index 0000000..57048db --- /dev/null +++ b/OwnYourData.xcodeproj/project.pbxproj @@ -0,0 +1,1053 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 2F38E234298047DA00E05C29 /* TemplateSharedContext in Frameworks */ = {isa = PBXBuildFile; productRef = 2F38E233298047DA00E05C29 /* TemplateSharedContext */; }; + 2F38E23829804AA300E05C29 /* TemplateContacts in Frameworks */ = {isa = PBXBuildFile; productRef = 2F38E23729804AA300E05C29 /* TemplateContacts */; }; + 2F38E23A29804AE300E05C29 /* TemplateOnboardingFlow in Frameworks */ = {isa = PBXBuildFile; productRef = 2F38E23929804AE300E05C29 /* TemplateOnboardingFlow */; }; + 2F38E23C29804EFA00E05C29 /* TemplateSchedule in Frameworks */ = {isa = PBXBuildFile; productRef = 2F38E23B29804EFA00E05C29 /* TemplateSchedule */; }; + 2F49B7762980407C00BCB272 /* CardinalKit in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B7752980407B00BCB272 /* CardinalKit */; }; + 2F49B7782980407C00BCB272 /* FHIR in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B7772980407C00BCB272 /* FHIR */; }; + 2F49B77A2980407C00BCB272 /* HealthKitDataSource in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B7792980407C00BCB272 /* HealthKitDataSource */; }; + 2F49B77C2980407C00BCB272 /* HealthKitToFHIRAdapter in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B77B2980407C00BCB272 /* HealthKitToFHIRAdapter */; }; + 2F49B77E2980407C00BCB272 /* Scheduler in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B77D2980407C00BCB272 /* Scheduler */; }; + 2F49B7802980418400BCB272 /* Onboarding in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B77F2980418400BCB272 /* Onboarding */; }; + 2F49B7822980419C00BCB272 /* Questionnaires in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B7812980419C00BCB272 /* Questionnaires */; }; + 2F49B784298041F300BCB272 /* Contact in Frameworks */ = {isa = PBXBuildFile; productRef = 2F49B783298041F300BCB272 /* Contact */; }; + 2F4E237E2989A2FE0013F3D9 /* OnboardingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E237D2989A2FE0013F3D9 /* OnboardingTests.swift */; }; + 2F4E23812989C5930013F3D9 /* XCTHealthKit in Frameworks */ = {isa = PBXBuildFile; productRef = 2F4E23802989C5930013F3D9 /* XCTHealthKit */; }; + 2F4E23832989D51F0013F3D9 /* TemplateAppTestingSetup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4E23822989D51F0013F3D9 /* TemplateAppTestingSetup.swift */; }; + 2F5E32BD297E05EA003432F8 /* TemplateAppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F5E32BC297E05EA003432F8 /* TemplateAppDelegate.swift */; }; + 2F6025CB29BBE70F0045459E /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 2F6025CA29BBE70F0045459E /* GoogleService-Info.plist */; }; + 2F6025CD29BBE92B0045459E /* FHIRMockDataStorageProvider in Frameworks */ = {isa = PBXBuildFile; productRef = 2F6025CC29BBE92B0045459E /* FHIRMockDataStorageProvider */; }; + 2F6025D029BBEC610045459E /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 2F6025CF29BBEC610045459E /* FirebaseAuth */; }; + 2FB2943829CBA29900EE91A0 /* HealthRecordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FB2943229CBA29900EE91A0 /* HealthRecordView.swift */; }; + 2FB2943929CBA29900EE91A0 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FB2943329CBA29900EE91A0 /* ProfileView.swift */; }; + 2FB2943A29CBA29900EE91A0 /* AddDataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FB2943429CBA29900EE91A0 /* AddDataView.swift */; }; + 2FB2943B29CBA29900EE91A0 /* HomeTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FB2943529CBA29900EE91A0 /* HomeTabView.swift */; }; + 2FB2943C29CBA29900EE91A0 /* ShareView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FB2943629CBA29900EE91A0 /* ShareView.swift */; }; + 2FB2943D29CBA29900EE91A0 /* ClinicalTrialsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FB2943729CBA29900EE91A0 /* ClinicalTrialsView.swift */; }; + 2FB2944029CBA4AE00EE91A0 /* ImageSource in Frameworks */ = {isa = PBXBuildFile; productRef = 2FB2943F29CBA4AE00EE91A0 /* ImageSource */; }; + 2FC9759F2978E39600BA99FE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2FC9759E2978E39600BA99FE /* Localizable.strings */; }; + 2FC975A82978F11A00BA99FE /* Home.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FC975A72978F11A00BA99FE /* Home.swift */; }; + 2FED18F22999AAF400A51A28 /* Account in Frameworks */ = {isa = PBXBuildFile; productRef = 2FED18F12999AAF400A51A28 /* Account */; }; + 2FED18F42999AAF400A51A28 /* FirebaseAccount in Frameworks */ = {isa = PBXBuildFile; productRef = 2FED18F32999AAF400A51A28 /* FirebaseAccount */; }; + 2FED18FA299A0C7600A51A28 /* FHIRToFirestoreAdapter in Frameworks */ = {isa = PBXBuildFile; productRef = 2FED18F9299A0C7600A51A28 /* FHIRToFirestoreAdapter */; }; + 2FED18FC299A0C7600A51A28 /* FirestoreDataStorage in Frameworks */ = {isa = PBXBuildFile; productRef = 2FED18FB299A0C7600A51A28 /* FirestoreDataStorage */; }; + 2FED18FE299AE00500A51A28 /* FirestoreStoragePrefixUserIdAdapter in Frameworks */ = {isa = PBXBuildFile; productRef = 2FED18FD299AE00500A51A28 /* FirestoreStoragePrefixUserIdAdapter */; }; + 2FEE103D2998E580000822E1 /* XCTestExtensions in Frameworks */ = {isa = PBXBuildFile; productRef = 2FEE103C2998E580000822E1 /* XCTestExtensions */; }; + 653A2551283387FE005D4D48 /* TemplateApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A2550283387FE005D4D48 /* TemplateApplication.swift */; }; + 653A255528338800005D4D48 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 653A255428338800005D4D48 /* Assets.xcassets */; }; + 653A256228338800005D4D48 /* TemplateApplicationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653A256128338800005D4D48 /* TemplateApplicationTests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 653A255E28338800005D4D48 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 653A2545283387FE005D4D48 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 653A254C283387FE005D4D48; + remoteInfo = TemplateApplication; + }; + 653A256828338800005D4D48 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 653A2545283387FE005D4D48 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 653A254C283387FE005D4D48; + remoteInfo = TemplateApplication; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 2F49B77329803E8F00BCB272 /* TemplateApplicationModules */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = TemplateApplicationModules; sourceTree = ""; }; + 2F4E237D2989A2FE0013F3D9 /* OnboardingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnboardingTests.swift; sourceTree = ""; }; + 2F4E23822989D51F0013F3D9 /* TemplateAppTestingSetup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateAppTestingSetup.swift; sourceTree = ""; }; + 2F5E32BC297E05EA003432F8 /* TemplateAppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateAppDelegate.swift; sourceTree = ""; }; + 2F6025CA29BBE70F0045459E /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + 2FAEC07F297F583900C11C42 /* TemplateApplication.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = TemplateApplication.entitlements; sourceTree = ""; }; + 2FB2943229CBA29900EE91A0 /* HealthRecordView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HealthRecordView.swift; sourceTree = ""; }; + 2FB2943329CBA29900EE91A0 /* ProfileView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = ""; }; + 2FB2943429CBA29900EE91A0 /* AddDataView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddDataView.swift; sourceTree = ""; }; + 2FB2943529CBA29900EE91A0 /* HomeTabView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HomeTabView.swift; sourceTree = ""; }; + 2FB2943629CBA29900EE91A0 /* ShareView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ShareView.swift; sourceTree = ""; }; + 2FB2943729CBA29900EE91A0 /* ClinicalTrialsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClinicalTrialsView.swift; sourceTree = ""; }; + 2FC94CD4298B0A1D009C8209 /* TemplateApplication.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = TemplateApplication.xctestplan; sourceTree = ""; }; + 2FC9759E2978E39600BA99FE /* Localizable.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; }; + 2FC975A72978F11A00BA99FE /* Home.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Home.swift; sourceTree = ""; }; + 653A254D283387FE005D4D48 /* OwnYourData.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OwnYourData.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 653A2550283387FE005D4D48 /* TemplateApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateApplication.swift; sourceTree = ""; }; + 653A255428338800005D4D48 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 653A255D28338800005D4D48 /* OwnYourDataTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OwnYourDataTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 653A256128338800005D4D48 /* TemplateApplicationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TemplateApplicationTests.swift; sourceTree = ""; }; + 653A256728338800005D4D48 /* OwnYourDataUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = OwnYourDataUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 653A258928339462005D4D48 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 653A254A283387FE005D4D48 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2F6025CD29BBE92B0045459E /* FHIRMockDataStorageProvider in Frameworks */, + 2FED18FE299AE00500A51A28 /* FirestoreStoragePrefixUserIdAdapter in Frameworks */, + 2F49B7822980419C00BCB272 /* Questionnaires in Frameworks */, + 2F49B77E2980407C00BCB272 /* Scheduler in Frameworks */, + 2F49B77A2980407C00BCB272 /* HealthKitDataSource in Frameworks */, + 2F49B784298041F300BCB272 /* Contact in Frameworks */, + 2F38E234298047DA00E05C29 /* TemplateSharedContext in Frameworks */, + 2FED18FA299A0C7600A51A28 /* FHIRToFirestoreAdapter in Frameworks */, + 2FED18F42999AAF400A51A28 /* FirebaseAccount in Frameworks */, + 2FED18FC299A0C7600A51A28 /* FirestoreDataStorage in Frameworks */, + 2F38E23829804AA300E05C29 /* TemplateContacts in Frameworks */, + 2F49B7782980407C00BCB272 /* FHIR in Frameworks */, + 2F38E23C29804EFA00E05C29 /* TemplateSchedule in Frameworks */, + 2F6025D029BBEC610045459E /* FirebaseAuth in Frameworks */, + 2F49B7802980418400BCB272 /* Onboarding in Frameworks */, + 2FB2944029CBA4AE00EE91A0 /* ImageSource in Frameworks */, + 2FED18F22999AAF400A51A28 /* Account in Frameworks */, + 2F49B7762980407C00BCB272 /* CardinalKit in Frameworks */, + 2F49B77C2980407C00BCB272 /* HealthKitToFHIRAdapter in Frameworks */, + 2F38E23A29804AE300E05C29 /* TemplateOnboardingFlow in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 653A255A28338800005D4D48 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 653A256428338800005D4D48 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2F4E23812989C5930013F3D9 /* XCTHealthKit in Frameworks */, + 2FEE103D2998E580000822E1 /* XCTestExtensions in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 2FC9759D2978E30800BA99FE /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 2FAEC07F297F583900C11C42 /* TemplateApplication.entitlements */, + 653A258928339462005D4D48 /* Info.plist */, + 2F6025CA29BBE70F0045459E /* GoogleService-Info.plist */, + 653A255428338800005D4D48 /* Assets.xcassets */, + 2FC9759E2978E39600BA99FE /* Localizable.strings */, + ); + path = "Supporting Files"; + sourceTree = ""; + }; + 653A2544283387FE005D4D48 = { + isa = PBXGroup; + children = ( + 2FC94CD4298B0A1D009C8209 /* TemplateApplication.xctestplan */, + 2F49B77329803E8F00BCB272 /* TemplateApplicationModules */, + 653A254F283387FE005D4D48 /* TemplateApplication */, + 653A256028338800005D4D48 /* TemplateApplicationTests */, + 653A256A28338800005D4D48 /* TemplateApplicationUITests */, + 653A254E283387FE005D4D48 /* Products */, + 653A258B283395A7005D4D48 /* Frameworks */, + ); + sourceTree = ""; + }; + 653A254E283387FE005D4D48 /* Products */ = { + isa = PBXGroup; + children = ( + 653A254D283387FE005D4D48 /* OwnYourData.app */, + 653A255D28338800005D4D48 /* OwnYourDataTests.xctest */, + 653A256728338800005D4D48 /* OwnYourDataUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 653A254F283387FE005D4D48 /* TemplateApplication */ = { + isa = PBXGroup; + children = ( + 653A2550283387FE005D4D48 /* TemplateApplication.swift */, + 2F5E32BC297E05EA003432F8 /* TemplateAppDelegate.swift */, + 2F4E23822989D51F0013F3D9 /* TemplateAppTestingSetup.swift */, + 2FC975A72978F11A00BA99FE /* Home.swift */, + 2FB2943429CBA29900EE91A0 /* AddDataView.swift */, + 2FB2943729CBA29900EE91A0 /* ClinicalTrialsView.swift */, + 2FB2943229CBA29900EE91A0 /* HealthRecordView.swift */, + 2FB2943529CBA29900EE91A0 /* HomeTabView.swift */, + 2FB2943329CBA29900EE91A0 /* ProfileView.swift */, + 2FB2943629CBA29900EE91A0 /* ShareView.swift */, + 2FC9759D2978E30800BA99FE /* Supporting Files */, + ); + path = TemplateApplication; + sourceTree = ""; + }; + 653A256028338800005D4D48 /* TemplateApplicationTests */ = { + isa = PBXGroup; + children = ( + 653A256128338800005D4D48 /* TemplateApplicationTests.swift */, + ); + path = TemplateApplicationTests; + sourceTree = ""; + }; + 653A256A28338800005D4D48 /* TemplateApplicationUITests */ = { + isa = PBXGroup; + children = ( + 2F4E237D2989A2FE0013F3D9 /* OnboardingTests.swift */, + ); + path = TemplateApplicationUITests; + sourceTree = ""; + }; + 653A258B283395A7005D4D48 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 653A254C283387FE005D4D48 /* OwnYourData */ = { + isa = PBXNativeTarget; + buildConfigurationList = 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "OwnYourData" */; + buildPhases = ( + 653A2549283387FE005D4D48 /* Sources */, + 653A254A283387FE005D4D48 /* Frameworks */, + 653A254B283387FE005D4D48 /* Resources */, + 2F5B528D29BD237B002020B7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = OwnYourData; + packageProductDependencies = ( + 2F49B7752980407B00BCB272 /* CardinalKit */, + 2F49B7772980407C00BCB272 /* FHIR */, + 2F49B7792980407C00BCB272 /* HealthKitDataSource */, + 2F49B77B2980407C00BCB272 /* HealthKitToFHIRAdapter */, + 2F49B77D2980407C00BCB272 /* Scheduler */, + 2F49B77F2980418400BCB272 /* Onboarding */, + 2F49B7812980419C00BCB272 /* Questionnaires */, + 2F49B783298041F300BCB272 /* Contact */, + 2F38E233298047DA00E05C29 /* TemplateSharedContext */, + 2F38E23729804AA300E05C29 /* TemplateContacts */, + 2F38E23929804AE300E05C29 /* TemplateOnboardingFlow */, + 2F38E23B29804EFA00E05C29 /* TemplateSchedule */, + 2FED18F12999AAF400A51A28 /* Account */, + 2FED18F32999AAF400A51A28 /* FirebaseAccount */, + 2FED18F9299A0C7600A51A28 /* FHIRToFirestoreAdapter */, + 2FED18FB299A0C7600A51A28 /* FirestoreDataStorage */, + 2FED18FD299AE00500A51A28 /* FirestoreStoragePrefixUserIdAdapter */, + 2F6025CC29BBE92B0045459E /* FHIRMockDataStorageProvider */, + 2F6025CF29BBEC610045459E /* FirebaseAuth */, + 2FB2943F29CBA4AE00EE91A0 /* ImageSource */, + ); + productName = TemplateApplication; + productReference = 653A254D283387FE005D4D48 /* OwnYourData.app */; + productType = "com.apple.product-type.application"; + }; + 653A255C28338800005D4D48 /* OwnYourDataTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "OwnYourDataTests" */; + buildPhases = ( + 653A255928338800005D4D48 /* Sources */, + 653A255A28338800005D4D48 /* Frameworks */, + 653A255B28338800005D4D48 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 653A255F28338800005D4D48 /* PBXTargetDependency */, + ); + name = OwnYourDataTests; + productName = TemplateApplicationTests; + productReference = 653A255D28338800005D4D48 /* OwnYourDataTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 653A256628338800005D4D48 /* OwnYourDataUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "OwnYourDataUITests" */; + buildPhases = ( + 653A256328338800005D4D48 /* Sources */, + 653A256428338800005D4D48 /* Frameworks */, + 653A256528338800005D4D48 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 653A256928338800005D4D48 /* PBXTargetDependency */, + ); + name = OwnYourDataUITests; + packageProductDependencies = ( + 2F4E23802989C5930013F3D9 /* XCTHealthKit */, + 2FEE103C2998E580000822E1 /* XCTestExtensions */, + ); + productName = TemplateApplicationUITests; + productReference = 653A256728338800005D4D48 /* OwnYourDataUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 653A2545283387FE005D4D48 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1340; + LastUpgradeCheck = 1340; + TargetAttributes = { + 653A254C283387FE005D4D48 = { + CreatedOnToolsVersion = 13.4; + }; + 653A255C28338800005D4D48 = { + CreatedOnToolsVersion = 13.4; + TestTargetID = 653A254C283387FE005D4D48; + }; + 653A256628338800005D4D48 = { + CreatedOnToolsVersion = 13.4; + TestTargetID = 653A254C283387FE005D4D48; + }; + }; + }; + buildConfigurationList = 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "OwnYourData" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 653A2544283387FE005D4D48; + packageReferences = ( + 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */, + 2F4E237F2989C5930013F3D9 /* XCRemoteSwiftPackageReference "XCTHealthKit" */, + 2FEE103B2998E580000822E1 /* XCRemoteSwiftPackageReference "XCTestExtensions" */, + 2F6025CE29BBEC610045459E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, + 2FB2943E29CBA4AE00EE91A0 /* XCRemoteSwiftPackageReference "ImageSource" */, + ); + productRefGroup = 653A254E283387FE005D4D48 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 653A254C283387FE005D4D48 /* OwnYourData */, + 653A255C28338800005D4D48 /* OwnYourDataTests */, + 653A256628338800005D4D48 /* OwnYourDataUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 653A254B283387FE005D4D48 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 653A255528338800005D4D48 /* Assets.xcassets in Resources */, + 2FC9759F2978E39600BA99FE /* Localizable.strings in Resources */, + 2F6025CB29BBE70F0045459E /* GoogleService-Info.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 653A255B28338800005D4D48 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 653A256528338800005D4D48 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 2F5B528D29BD237B002020B7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"${CONFIGURATION}\" = \"Debug\" ]; then\n export PATH=\"$PATH:/opt/homebrew/bin\"\n if which swiftlint > /dev/null; then\n swiftlint\n else\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\n fi\nfi\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 653A2549283387FE005D4D48 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2FB2943829CBA29900EE91A0 /* HealthRecordView.swift in Sources */, + 2FC975A82978F11A00BA99FE /* Home.swift in Sources */, + 2F4E23832989D51F0013F3D9 /* TemplateAppTestingSetup.swift in Sources */, + 2F5E32BD297E05EA003432F8 /* TemplateAppDelegate.swift in Sources */, + 2FB2943D29CBA29900EE91A0 /* ClinicalTrialsView.swift in Sources */, + 2FB2943929CBA29900EE91A0 /* ProfileView.swift in Sources */, + 653A2551283387FE005D4D48 /* TemplateApplication.swift in Sources */, + 2FB2943C29CBA29900EE91A0 /* ShareView.swift in Sources */, + 2FB2943A29CBA29900EE91A0 /* AddDataView.swift in Sources */, + 2FB2943B29CBA29900EE91A0 /* HomeTabView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 653A255928338800005D4D48 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 653A256228338800005D4D48 /* TemplateApplicationTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 653A256328338800005D4D48 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2F4E237E2989A2FE0013F3D9 /* OnboardingTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 653A255F28338800005D4D48 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 653A254C283387FE005D4D48 /* OwnYourData */; + targetProxy = 653A255E28338800005D4D48 /* PBXContainerItemProxy */; + }; + 653A256928338800005D4D48 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 653A254C283387FE005D4D48 /* OwnYourData */; + targetProxy = 653A256828338800005D4D48 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 2FEE10302998C89C000822E1 /* Test */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; + 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 = 16.2; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = TEST; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Test; + }; + 2FEE10312998C89C000822E1 /* Test */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "TemplateApplication/Supporting Files/TemplateApplication.entitlements"; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = ""; + DEVELOPMENT_TEAM = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = OwnYourData; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_UITemplateApplicationlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UITemplateApplicationlicationSupportsIndirectInputEvents = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Test; + }; + 2FEE10322998C89C000822E1 /* Test */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 637867499T; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/OwnYourData.app/OwnYourData"; + }; + name = Test; + }; + 2FEE10332998C89C000822E1 /* Test */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 637867499T; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = OwnYourData; + }; + name = Test; + }; + 653A256F28338800005D4D48 /* 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++17"; + 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 = 16.2; + 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; + }; + 653A257028338800005D4D48 /* 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++17"; + 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 = 16.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 653A257228338800005D4D48 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "TemplateApplication/Supporting Files/TemplateApplication.entitlements"; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = ""; + DEVELOPMENT_TEAM = ""; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = OwnYourData; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_UITemplateApplicationlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UITemplateApplicationlicationSupportsIndirectInputEvents = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Debug; + }; + 653A257328338800005D4D48 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = "TemplateApplication/Supporting Files/TemplateApplication.entitlements"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = ""; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = 637867499T; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = "TemplateApplication/Supporting Files/Info.plist"; + INFOPLIST_KEY_CFBundleDisplayName = OwnYourData; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; + INFOPLIST_KEY_UITemplateApplicationlicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UITemplateApplicationlicationSupportsIndirectInputEvents = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "CS342 OwnYourData"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + }; + name = Release; + }; + 653A257528338800005D4D48 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 637867499T; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/OwnYourData.app/OwnYourData"; + }; + name = Debug; + }; + 653A257628338800005D4D48 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 637867499T; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/OwnYourData.app/OwnYourData"; + }; + name = Release; + }; + 653A257828338800005D4D48 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 637867499T; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = OwnYourData; + }; + name = Debug; + }; + 653A257928338800005D4D48 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 637867499T; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.2; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = edu.stanford.cs342.ownyourdata; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE = ""; + "SWIFT_ELicenseRef-TemplateApplication_LOC_STRINGS" = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = OwnYourData; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 653A2548283387FE005D4D48 /* Build configuration list for PBXProject "OwnYourData" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 653A256F28338800005D4D48 /* Debug */, + 2FEE10302998C89C000822E1 /* Test */, + 653A257028338800005D4D48 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 653A257128338800005D4D48 /* Build configuration list for PBXNativeTarget "OwnYourData" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 653A257228338800005D4D48 /* Debug */, + 2FEE10312998C89C000822E1 /* Test */, + 653A257328338800005D4D48 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 653A257428338800005D4D48 /* Build configuration list for PBXNativeTarget "OwnYourDataTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 653A257528338800005D4D48 /* Debug */, + 2FEE10322998C89C000822E1 /* Test */, + 653A257628338800005D4D48 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 653A257728338800005D4D48 /* Build configuration list for PBXNativeTarget "OwnYourDataUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 653A257828338800005D4D48 /* Debug */, + 2FEE10332998C89C000822E1 /* Test */, + 653A257928338800005D4D48 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/StanfordBDHG/CardinalKit"; + requirement = { + kind = upToNextMinorVersion; + minimumVersion = 0.3.5; + }; + }; + 2F4E237F2989C5930013F3D9 /* XCRemoteSwiftPackageReference "XCTHealthKit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/StanfordBDHG/XCTHealthKit"; + requirement = { + kind = upToNextMinorVersion; + minimumVersion = 0.3.3; + }; + }; + 2F6025CE29BBEC610045459E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 10.6.0; + }; + }; + 2FB2943E29CBA4AE00EE91A0 /* XCRemoteSwiftPackageReference "ImageSource" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/StanfordBDHG/ImageSource.git"; + requirement = { + kind = revision; + revision = 9f942f21a485f4d552cfcefffae2e4077c0e9635; + }; + }; + 2FEE103B2998E580000822E1 /* XCRemoteSwiftPackageReference "XCTestExtensions" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/StanfordBDHG/XCTestExtensions"; + requirement = { + kind = upToNextMinorVersion; + minimumVersion = 0.3.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 2F38E233298047DA00E05C29 /* TemplateSharedContext */ = { + isa = XCSwiftPackageProductDependency; + productName = TemplateSharedContext; + }; + 2F38E23729804AA300E05C29 /* TemplateContacts */ = { + isa = XCSwiftPackageProductDependency; + productName = TemplateContacts; + }; + 2F38E23929804AE300E05C29 /* TemplateOnboardingFlow */ = { + isa = XCSwiftPackageProductDependency; + productName = TemplateOnboardingFlow; + }; + 2F38E23B29804EFA00E05C29 /* TemplateSchedule */ = { + isa = XCSwiftPackageProductDependency; + productName = TemplateSchedule; + }; + 2F49B7752980407B00BCB272 /* CardinalKit */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = CardinalKit; + }; + 2F49B7772980407C00BCB272 /* FHIR */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = FHIR; + }; + 2F49B7792980407C00BCB272 /* HealthKitDataSource */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = HealthKitDataSource; + }; + 2F49B77B2980407C00BCB272 /* HealthKitToFHIRAdapter */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = HealthKitToFHIRAdapter; + }; + 2F49B77D2980407C00BCB272 /* Scheduler */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = Scheduler; + }; + 2F49B77F2980418400BCB272 /* Onboarding */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = Onboarding; + }; + 2F49B7812980419C00BCB272 /* Questionnaires */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = Questionnaires; + }; + 2F49B783298041F300BCB272 /* Contact */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = Contact; + }; + 2F4E23802989C5930013F3D9 /* XCTHealthKit */ = { + isa = XCSwiftPackageProductDependency; + package = 2F4E237F2989C5930013F3D9 /* XCRemoteSwiftPackageReference "XCTHealthKit" */; + productName = XCTHealthKit; + }; + 2F6025CC29BBE92B0045459E /* FHIRMockDataStorageProvider */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = FHIRMockDataStorageProvider; + }; + 2F6025CF29BBEC610045459E /* FirebaseAuth */ = { + isa = XCSwiftPackageProductDependency; + package = 2F6025CE29BBEC610045459E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseAuth; + }; + 2FB2943F29CBA4AE00EE91A0 /* ImageSource */ = { + isa = XCSwiftPackageProductDependency; + package = 2FB2943E29CBA4AE00EE91A0 /* XCRemoteSwiftPackageReference "ImageSource" */; + productName = ImageSource; + }; + 2FED18F12999AAF400A51A28 /* Account */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = Account; + }; + 2FED18F32999AAF400A51A28 /* FirebaseAccount */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = FirebaseAccount; + }; + 2FED18F9299A0C7600A51A28 /* FHIRToFirestoreAdapter */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = FHIRToFirestoreAdapter; + }; + 2FED18FB299A0C7600A51A28 /* FirestoreDataStorage */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = FirestoreDataStorage; + }; + 2FED18FD299AE00500A51A28 /* FirestoreStoragePrefixUserIdAdapter */ = { + isa = XCSwiftPackageProductDependency; + package = 2F49B7742980407B00BCB272 /* XCRemoteSwiftPackageReference "CardinalKit" */; + productName = FirestoreStoragePrefixUserIdAdapter; + }; + 2FEE103C2998E580000822E1 /* XCTestExtensions */ = { + isa = XCSwiftPackageProductDependency; + package = 2FEE103B2998E580000822E1 /* XCRemoteSwiftPackageReference "XCTestExtensions" */; + productName = XCTestExtensions; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 653A2545283387FE005D4D48 /* Project object */; +} diff --git a/OwnYourData.xcodeproj/project.pbxproj.license b/OwnYourData.xcodeproj/project.pbxproj.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/OwnYourData.xcodeproj/project.pbxproj.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/OwnYourData.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/OwnYourData.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/OwnYourData.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/OwnYourData.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license b/OwnYourData.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/OwnYourData.xcodeproj/project.xcworkspace/contents.xcworkspacedata.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license b/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..522c885 --- /dev/null +++ b/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,184 @@ +{ + "pins" : [ + { + "identity" : "abseil-cpp-swiftpm", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/abseil-cpp-SwiftPM.git", + "state" : { + "revision" : "583de9bd60f66b40e78d08599cc92036c2e7e4e1", + "version" : "0.20220203.2" + } + }, + { + "identity" : "boringssl-swiftpm", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/boringssl-SwiftPM.git", + "state" : { + "revision" : "dd3eda2b05a3f459fc3073695ad1b28659066eab", + "version" : "0.9.1" + } + }, + { + "identity" : "cardinalkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/StanfordBDHG/CardinalKit", + "state" : { + "revision" : "6162a67a0b821c2be9358bec798d5d3e94cc5783", + "version" : "0.3.5" + } + }, + { + "identity" : "fhirmodels", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/FHIRModels", + "state" : { + "revision" : "e115442fb3c5d44ffb1dc9b4e039b77fd143ad96", + "version" : "0.4.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "60f9a33e7084482df67b48e16f315f4f7a6f5da9", + "version" : "10.6.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "04351180d4c757c6c16127cb57b685fff9ef260b", + "version" : "10.6.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "f6b558e3f801f2cac336b04f615ce111fa9ddaa0", + "version" : "9.2.1" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "0543562f85620b5b7c510c6bcbef75b562a5127b", + "version" : "7.11.0" + } + }, + { + "identity" : "grpc-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/grpc/grpc-ios.git", + "state" : { + "revision" : "8440b914756e0d26d4f4d054a1c1581daedfc5b6", + "version" : "1.44.3-grpc" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "96d7cc73a71ce950723aa3c50ce4fb275ae180b8", + "version" : "3.1.0" + } + }, + { + "identity" : "healthkitonfhir", + "kind" : "remoteSourceControl", + "location" : "https://github.com/StanfordBDHG/HealthKitOnFHIR", + "state" : { + "revision" : "d10f408766264183cd50bb117b99580255520aa3", + "version" : "0.2.3" + } + }, + { + "identity" : "imagesource", + "kind" : "remoteSourceControl", + "location" : "https://github.com/StanfordBDHG/ImageSource.git", + "state" : { + "revision" : "9f942f21a485f4d552cfcefffae2e4077c0e9635" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "0706abcc6b0bd9cedfbb015ba840e4a780b5159b", + "version" : "1.22.2" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "819d0a2173aff699fb8c364b6fb906f7cdb1a692", + "version" : "2.30909.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "ec957ccddbcc710ccc64c9dcbd4c7006fcf8b73a", + "version" : "2.2.0" + } + }, + { + "identity" : "researchkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/StanfordBDHG/ResearchKit.git", + "state" : { + "revision" : "52a9bd8bcf2112b2f70479cd192f8c5fa9850c31", + "version" : "2.2.8" + } + }, + { + "identity" : "researchkitonfhir", + "kind" : "remoteSourceControl", + "location" : "https://github.com/StanfordBDHG/ResearchKitOnFHIR", + "state" : { + "revision" : "1bc7a15760916ade4c5058fa798a871e80c2955c", + "version" : "0.1.6" + } + }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "0af9125c4eae12a4973fb66574c53a54962a9e1e", + "version" : "1.21.0" + } + }, + { + "identity" : "xctestextensions", + "kind" : "remoteSourceControl", + "location" : "https://github.com/StanfordBDHG/XCTestExtensions", + "state" : { + "revision" : "a96a1680557507a9746bbb0529043b9767c503db", + "version" : "0.3.0" + } + }, + { + "identity" : "xcthealthkit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/StanfordBDHG/XCTHealthKit", + "state" : { + "revision" : "19395bbd14a2554e4c9d3fe5cf38aa626c807269", + "version" : "0.3.3" + } + } + ], + "version" : 2 +} diff --git a/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license b/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/OwnYourData.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/OwnYourData.xcodeproj/xcshareddata/xcschemes/OwnYourData.xcscheme b/OwnYourData.xcodeproj/xcshareddata/xcschemes/OwnYourData.xcscheme new file mode 100644 index 0000000..4bfd529 --- /dev/null +++ b/OwnYourData.xcodeproj/xcshareddata/xcschemes/OwnYourData.xcscheme @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OwnYourData.xcodeproj/xcshareddata/xcschemes/OwnYourData.xcscheme.license b/OwnYourData.xcodeproj/xcshareddata/xcschemes/OwnYourData.xcscheme.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/OwnYourData.xcodeproj/xcshareddata/xcschemes/OwnYourData.xcscheme.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/AddDataView.swift b/TemplateApplication/AddDataView.swift index 9e5fa3f..3110fdd 100644 --- a/TemplateApplication/AddDataView.swift +++ b/TemplateApplication/AddDataView.swift @@ -6,28 +6,31 @@ // SPDX-License-Identifier: MIT // -import SwiftUI +import CardinalKit import FHIR import HealthKitDataSource -import TemplateSharedContext import HealthKitToFHIRAdapter -import CardinalKit +import ImageSource +import SwiftUI +import TemplateSharedContext import UIKit struct AddDataView: View { @Environment(\.openURL) var openURL - @State var capturedImage: UIImage? - @State var showingPicker: Bool = false + @State var capturedImage: ImageState = .empty + @State var showingPicker = false + var body: some View { GeometryReader { geometry in VStack { VStack { - Image("OwnYourData_Icon_White-1024") + Image("AppIcon") .resizable() - .foregroundColor(Color.accentColor) .scaledToFit() + .foregroundColor(Color.accentColor) + .accessibilityLabel(Text("The OwnYourData App Icon")) .frame(width: 240, height: 240) // Make it twice as large .accessibility(label: Text("profile image")) } @@ -41,7 +44,9 @@ struct AddDataView: View { .foregroundColor(Color.accentColor) .multilineTextAlignment(.center) Button(action: { - let url = URL(string: "https://apps.apple.com/us/app/apple-health/id123456789")! + guard let url = URL(string: "x-apple-health://") else { + fatalError("Could not create a Health App URL") + } openURL(url) }) { Text("Select Health System") @@ -66,7 +71,7 @@ struct AddDataView: View { .multilineTextAlignment(.center) Button(action: { self.showingPicker.toggle() - }){ + }) { Text("Go to Camera") .font(.headline) .fontWeight(.bold) @@ -80,7 +85,7 @@ struct AddDataView: View { } } }.sheet(isPresented: $showingPicker) { - CameraView(capturedImage: self.$capturedImage) + Camera(image: $capturedImage) } } } diff --git a/TemplateApplication/HealthRecordView.swift b/TemplateApplication/HealthRecordView.swift index 99d5d38..08c02a5 100644 --- a/TemplateApplication/HealthRecordView.swift +++ b/TemplateApplication/HealthRecordView.swift @@ -6,9 +6,20 @@ // SPDX-License-Identifier: MIT // -import SwiftUI import FirebaseAccount import FirebaseAuth +import SwiftUI + + +// Replace the following placeholder views with the actual implementation for each data element category +struct ConditionsView: View { var body: some View { Text("Conditions View") } } +struct MedicationRecordsView: View { var body: some View { Text("Medication Records View") } } +struct AllergiesView: View { var body: some View { Text("Allergies View") } } +struct ImmunizationsView: View { var body: some View { Text("Immunizations View") } } +struct ClinicalVitalsView: View { var body: some View { Text("Clinical Vitals View") } } +struct LabResultsView: View { var body: some View { Text("Lab Results View") } } +struct ProceduresView: View { var body: some View { Text("Procedures View") } } +struct OtherDocumentsGallery: View { var body: some View { Text("Other Documents Gallery") } } struct HealthRecordView: View { var body: some View { @@ -44,20 +55,9 @@ struct HealthRecordView: View { } } + struct HealthRecordView_Previews: PreviewProvider { static var previews: some View { HealthRecordView() } } - -// Replace the following placeholder views with the actual implementation for each data element category -struct ConditionsView: View { var body: some View { Text("Conditions View") } } -struct MedicationRecordsView: View { var body: some View { Text("Medication Records View") } } -struct AllergiesView: View { var body: some View { Text("Allergies View") } } -struct ImmunizationsView: View { var body: some View { Text("Immunizations View") } } -struct ClinicalVitalsView: View { var body: some View { Text("Clinical Vitals View") } } -struct LabResultsView: View { var body: some View { Text("Lab Results View") } } -struct ProceduresView: View { var body: some View { Text("Procedures View") } } -struct OtherDocumentsGallery: View { var body: some View { Text("Other Documents Gallery") } } - - diff --git a/TemplateApplication/HomeTabView.swift b/TemplateApplication/HomeTabView.swift index 92486f7..e2b894c 100644 --- a/TemplateApplication/HomeTabView.swift +++ b/TemplateApplication/HomeTabView.swift @@ -6,10 +6,10 @@ // SPDX-License-Identifier: MIT // -import SwiftUI import FirebaseAccount import FirebaseAuth import SafariServices +import SwiftUI import TemplateSharedContext struct HomeTabView: View { @@ -19,21 +19,22 @@ struct HomeTabView: View { GeometryReader { geometry in VStack { VStack { - Image("OwnYourData_Icon_White-1024") + Image("Logo") .resizable() - .foregroundColor(Color.accentColor) .scaledToFit() + .foregroundColor(Color.accentColor) + .accessibilityLabel(Text("The OwnYourData App Icon")) .frame(width: 240, height: 240) // Make it twice as large - .accessibility(label: Text("profile image")) } .frame(width: geometry.size.width, height: geometry.size.height / 2, alignment: .top) Spacer().frame(height: 0) // var body: some View { VStack { - Image("OwnYourData_icon_w") + Image("Logo") .resizable() .scaledToFit() + .accessibilityLabel(Text("The OwnYourData App Icon")) .padding() Text("Welcome,") @@ -80,7 +81,7 @@ struct HomeTabView: View { } } .padding(.top, -50) // Added negative padding to move the VStack closer - } + } .padding(.bottom, 100) .onAppear { getUserName() diff --git a/TemplateApplication/ProfileView.swift b/TemplateApplication/ProfileView.swift index a6d4c5a..6843f96 100644 --- a/TemplateApplication/ProfileView.swift +++ b/TemplateApplication/ProfileView.swift @@ -6,35 +6,18 @@ // SPDX-License-Identifier: MIT // -import SwiftUI import FirebaseAccount import FirebaseAuth import FirebaseFirestore +import SwiftUI + struct ProfileView: View { let user = Auth.auth().currentUser @State private var firstName = "" @State private var lastName = "" @State private var email = "" - - func fetchUserData() { - if let currentUser = user { - let db = Firestore.firestore() - let docRef = db.collection("users").document(currentUser.uid) - - docRef.getDocument { (document, error) in - if let document = document, document.exists { - let data = document.data() - self.firstName = data?["firstName"] as? String ?? "" - self.lastName = data?["lastName"] as? String ?? "" - self.email = currentUser.email ?? "" - } else { - print("Document does not exist") - } - } - } - } var body: some View { VStack { @@ -79,6 +62,24 @@ struct ProfileView: View { email = user?.email ?? "" } } + + + func fetchUserData() { + if let currentUser = user { + let docRef = Firestore.firestore().collection("users").document(currentUser.uid) + + docRef.getDocument { document, _ in + if let document = document, document.exists { + let data = document.data() + self.firstName = data?["firstName"] as? String ?? "" + self.lastName = data?["lastName"] as? String ?? "" + self.email = currentUser.email ?? "" + } else { + print("Document does not exist") + } + } + } + } } struct ProfileView_Previews: PreviewProvider { diff --git a/TemplateApplication/ShareView.swift b/TemplateApplication/ShareView.swift index 0274813..a4bed50 100644 --- a/TemplateApplication/ShareView.swift +++ b/TemplateApplication/ShareView.swift @@ -6,12 +6,12 @@ // SPDX-License-Identifier: MIT // -import SwiftUI +import CardinalKit import FHIR import HealthKitDataSource -import TemplateSharedContext import HealthKitToFHIRAdapter -import CardinalKit +import SwiftUI +import TemplateSharedContext import UIKit @@ -22,12 +22,12 @@ struct ShareView: View { GeometryReader { geometry in VStack { VStack { - Image("OwnYourData_Icon_White-1024") + Image("Logo") .resizable() - .foregroundColor(Color.accentColor) .scaledToFit() + .foregroundColor(Color.accentColor) + .accessibilityLabel(Text("The OwnYourData App Icon")) .frame(width: 240, height: 240) // Make it twice as large - .accessibility(label: Text("profile image")) } .frame(width: geometry.size.width, height: geometry.size.height / 2.5, alignment: .top) Spacer().frame(height: 0) @@ -39,7 +39,9 @@ struct ShareView: View { .foregroundColor(Color.accentColor) .multilineTextAlignment(.center) Button(action: { - let url = URL(string: "x-apple-health://")! + guard let url = URL(string: "x-apple-health://") else { + fatalError("Could not create a Health App URL") + } openURL(url) }) { Text("Open Health App") @@ -64,7 +66,9 @@ struct ShareView: View { .foregroundColor(Color.accentColor) .multilineTextAlignment(.center) Button(action: { - let url = URL(string: "x-apple-health://")! + guard let url = URL(string: "x-apple-health://") else { + fatalError("Could not create a Health App URL") + } openURL(url) }) { Text("Select Documents") @@ -79,11 +83,9 @@ struct ShareView: View { .padding(.trailing) } } - } - } - } } } } - + } + } diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/AppIcon.appiconset/OwnYourData_Icon_White-1024.png b/TemplateApplication/Supporting Files/Assets.xcassets/AppIcon.appiconset/AppIcon.png similarity index 100% rename from TemplateApplication/Supporting Files/Assets.xcassets/AppIcon.appiconset/OwnYourData_Icon_White-1024.png rename to TemplateApplication/Supporting Files/Assets.xcassets/AppIcon.appiconset/AppIcon.png diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json index 85ed105..cefcc87 100644 --- a/TemplateApplication/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/TemplateApplication/Supporting Files/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "OwnYourData_Icon_White-1024.png", + "filename" : "AppIcon.png", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_dark.colorset/Contents.json.license b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_dark.colorset/Contents.json.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_dark.colorset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_light.colorset/Contents.json.license b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_light.colorset/Contents.json.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_light.colorset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_orange.colorset/Contents.json.license b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_orange.colorset/Contents.json.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_orange.colorset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_red.colorset/Contents.json.license b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_red.colorset/Contents.json.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_red.colorset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_yellow.colorset/Contents.json.license b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_yellow.colorset/Contents.json.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/TemplateApplication/Supporting Files/Assets.xcassets/ButtonColor_yellow.colorset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/Contents.json index 08fe940..218d171 100644 --- a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/Contents.json +++ b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/Contents.json @@ -1,19 +1,8 @@ { "images" : [ { - "filename" : "OwnYourData_Icon_White-40.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "OwnYourData_Icon_White-40@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "OwnYourData_Icon_White-40@3x.png", - "idiom" : "universal", - "scale" : "3x" + "filename" : "OwnYourData.png", + "idiom" : "universal" } ], "info" : { diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/Contents.json.license b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/Contents.json.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/Contents.json.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/Logo_white.imageset/Logo_white.png b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData.png similarity index 100% rename from TemplateApplication/Supporting Files/Assets.xcassets/Logo_white.imageset/Logo_white.png rename to TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData.png diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData.png.license b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData.png.license new file mode 100644 index 0000000..51be8b0 --- /dev/null +++ b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData.png.license @@ -0,0 +1,6 @@ + +This source file is part of the Stanford CardinalKit Template Application project + +SPDX-FileCopyrightText: 2023 Stanford University + +SPDX-License-Identifier: MIT diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40.png b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40.png deleted file mode 100644 index e4c8447..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40@2x.png b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40@2x.png deleted file mode 100644 index fbd60f4..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40@2x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40@3x.png b/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40@3x.png deleted file mode 100644 index ebc36b8..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/Logo.imageset/OwnYourData_Icon_White-40@3x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/Logo_white.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/Logo_white.imageset/Contents.json deleted file mode 100644 index 898ff0a..0000000 --- a/TemplateApplication/Supporting Files/Assets.xcassets/Logo_white.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "Logo_white.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/Contents.json deleted file mode 100644 index b6d1a21..0000000 --- a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "OYD_Logo_no_border-1024.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "OYD_Logo_no_border-1024 1.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "OYD_Logo_no_border-1024 2.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024 1.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024 1.png deleted file mode 100644 index ab47d1f..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024 1.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024 2.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024 2.png deleted file mode 100644 index ab47d1f..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024 2.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024.png deleted file mode 100644 index ab47d1f..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-1024.imageset/OYD_Logo_no_border-1024.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/Contents.json deleted file mode 100644 index b8d1d3e..0000000 --- a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "OYD_Logo_no_border-20.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "OYD_Logo_no_border-20@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "OYD_Logo_no_border-20@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20.png deleted file mode 100644 index fbd7e47..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20@2x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20@2x.png deleted file mode 100644 index c0bb52e..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20@2x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20@3x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20@3x.png deleted file mode 100644 index 91d717b..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-20.imageset/OYD_Logo_no_border-20@3x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/Contents.json deleted file mode 100644 index ecba240..0000000 --- a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "OYD_Logo_no_border-29.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "OYD_Logo_no_border-29@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "OYD_Logo_no_border-29@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29.png deleted file mode 100644 index e991499..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29@2x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29@2x.png deleted file mode 100644 index ba6bf97..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29@2x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29@3x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29@3x.png deleted file mode 100644 index ff4819d..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-29.imageset/OYD_Logo_no_border-29@3x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/Contents.json deleted file mode 100644 index 23aa1b7..0000000 --- a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "filename" : "OYD_Logo_no_border-40.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "OYD_Logo_no_border-40@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "OYD_Logo_no_border-40@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40.png deleted file mode 100644 index c0bb52e..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40@2x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40@2x.png deleted file mode 100644 index 800132c..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40@2x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40@3x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40@3x.png deleted file mode 100644 index 65f830a..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-40.imageset/OYD_Logo_no_border-40@3x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/Contents.json deleted file mode 100644 index 42313d7..0000000 --- a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "OYD_Logo_no_border-60@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "OYD_Logo_no_border-60@3x.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/OYD_Logo_no_border-60@2x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/OYD_Logo_no_border-60@2x.png deleted file mode 100644 index 65f830a..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/OYD_Logo_no_border-60@2x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/OYD_Logo_no_border-60@3x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/OYD_Logo_no_border-60@3x.png deleted file mode 100644 index 60a82ee..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-60.imageset/OYD_Logo_no_border-60@3x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/Contents.json deleted file mode 100644 index d8d566e..0000000 --- a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/Contents.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "images" : [ - { - "filename" : "OYD_Logo_no_border-76.png", - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "OYD_Logo_no_border-76@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/OYD_Logo_no_border-76.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/OYD_Logo_no_border-76.png deleted file mode 100644 index e9026b3..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/OYD_Logo_no_border-76.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/OYD_Logo_no_border-76@2x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/OYD_Logo_no_border-76@2x.png deleted file mode 100644 index 78889d3..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-76.imageset/OYD_Logo_no_border-76@2x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-83.5.imageset/Contents.json b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-83.5.imageset/Contents.json deleted file mode 100644 index 04d6f59..0000000 --- a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-83.5.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "filename" : "OYD_Logo_no_border-83.5@2x.png", - "idiom" : "universal", - "scale" : "2x" - }, - { - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-83.5.imageset/OYD_Logo_no_border-83.5@2x.png b/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-83.5.imageset/OYD_Logo_no_border-83.5@2x.png deleted file mode 100644 index 87ed009..0000000 Binary files a/TemplateApplication/Supporting Files/Assets.xcassets/OwnYourData_Icon_White-83.5.imageset/OYD_Logo_no_border-83.5@2x.png and /dev/null differ diff --git a/TemplateApplication/Supporting Files/Info.plist b/TemplateApplication/Supporting Files/Info.plist index 47bb94e..efdb16c 100644 --- a/TemplateApplication/Supporting Files/Info.plist +++ b/TemplateApplication/Supporting Files/Info.plist @@ -11,5 +11,23 @@ UISceneConfigurations + NSHealthClinicalHealthRecordsShareUsageDescription + The OwnYourData app needs access to your health records to display them in the application. + NSHealthShareUsageDescription + The OwnYourData app needs access to your health data to display it in the application. + NSHealthUpdateUsageDescription + The OwnYourData app needs access to your health data to display it in the application. + NSLocationAlwaysAndWhenInUseUsageDescription + This message should never appear. Please adjust this when you start using location information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect. + NSSpeechRecognitionUsageDescription + This message should never appear. Please adjust this when you start using speecg information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect. + NSMotionUsageDescription + This message should never appear. Please adjust this when you start using motion information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect. + NSCameraUsageDescription + The OwnYourData app needs access to your camera to scan the documents. + NSMicrophoneUsageDescription + This message should never appear. Please adjust this when you start using microphone information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect. + NSLocationWhenInUseUsageDescription + This message should never appear. Please adjust this when you start using location information. We have to put this in here as ResearchKit has the possibility to use it and not putting it here returns an error on AppStore Connect. diff --git a/TemplateApplication/Supporting Files/TemplateApplication.entitlements b/TemplateApplication/Supporting Files/TemplateApplication.entitlements index dab226c..e3ba5ff 100644 --- a/TemplateApplication/Supporting Files/TemplateApplication.entitlements +++ b/TemplateApplication/Supporting Files/TemplateApplication.entitlements @@ -5,7 +5,9 @@ com.apple.developer.healthkit com.apple.developer.healthkit.access - + + health-records + com.apple.developer.healthkit.background-delivery diff --git a/TemplateApplicationModules/Sources/TemplateOnboardingFlow/AccountSetup/AccountSetup.swift b/TemplateApplicationModules/Sources/TemplateOnboardingFlow/AccountSetup/AccountSetup.swift index 21c5b0c..3d90aa4 100644 --- a/TemplateApplicationModules/Sources/TemplateOnboardingFlow/AccountSetup/AccountSetup.swift +++ b/TemplateApplicationModules/Sources/TemplateOnboardingFlow/AccountSetup/AccountSetup.swift @@ -39,7 +39,6 @@ struct AccountSetup: View { ) .onReceive(account.objectWillChange) { if account.signedIn { - if onboardingSteps.contains(where: { $0 == .signUp }) { guard let user = Auth.auth().currentUser else { return diff --git a/TemplateApplicationModules/Sources/TemplateOnboardingFlow/AccountSetup/IconView.swift b/TemplateApplicationModules/Sources/TemplateOnboardingFlow/AccountSetup/IconView.swift index 1582612..6ac65e7 100644 --- a/TemplateApplicationModules/Sources/TemplateOnboardingFlow/AccountSetup/IconView.swift +++ b/TemplateApplicationModules/Sources/TemplateOnboardingFlow/AccountSetup/IconView.swift @@ -15,7 +15,7 @@ struct IconView: View { var body: some View { - Image(uiImage: Bundle.module.image(withName: "OwnYourData_icon_w", fileExtension: "png")) + Image(uiImage: Bundle.module.image(withName: "AppIcon", fileExtension: "png")) .resizable() .scaledToFill() .accessibilityLabel(Text("App Icon")) diff --git a/TemplateApplicationModules/Sources/TemplateOnboardingFlow/Resources/AppIcon.png b/TemplateApplicationModules/Sources/TemplateOnboardingFlow/Resources/AppIcon.png index 7414dd9..d47c4b5 100644 Binary files a/TemplateApplicationModules/Sources/TemplateOnboardingFlow/Resources/AppIcon.png and b/TemplateApplicationModules/Sources/TemplateOnboardingFlow/Resources/AppIcon.png differ diff --git a/TemplateApplicationModules/Sources/TemplateOnboardingFlow/Resources/OwnYourData_icon_w.png b/TemplateApplicationModules/Sources/TemplateOnboardingFlow/Resources/OwnYourData_icon_w.png deleted file mode 100644 index d47c4b5..0000000 Binary files a/TemplateApplicationModules/Sources/TemplateOnboardingFlow/Resources/OwnYourData_icon_w.png and /dev/null differ diff --git a/TemplateApplicationModules/Sources/TemplateSharedContext/FeatureFlags.swift b/TemplateApplicationModules/Sources/TemplateSharedContext/FeatureFlags.swift index 68fe73c..dda245a 100644 --- a/TemplateApplicationModules/Sources/TemplateSharedContext/FeatureFlags.swift +++ b/TemplateApplicationModules/Sources/TemplateSharedContext/FeatureFlags.swift @@ -16,7 +16,7 @@ public enum FeatureFlags { public static let disableFirebase = CommandLine.arguments.contains("--disableFirebase") #if targetEnvironment(simulator) /// Defines if the application should connect to the local firebase emulator. Always set to true when using the iOS simulator. - public static let useFirebaseEmulator = true + public static let useFirebaseEmulator = false #else /// Defines if the application should connect to the local firebase emulator. Always set to true when using the iOS simulator. public static let useFirebaseEmulator = CommandLine.arguments.contains("--useFirebaseEmulator") diff --git a/TemplateApplicationTests/TemplateApplicationTests.swift b/TemplateApplicationTests/TemplateApplicationTests.swift index c444ec2..fe7e379 100644 --- a/TemplateApplicationTests/TemplateApplicationTests.swift +++ b/TemplateApplicationTests/TemplateApplicationTests.swift @@ -6,7 +6,6 @@ // SPDX-License-Identifier: MIT // -@testable import TemplateApplication import XCTest diff --git a/TemplateApplicationUITests/ContactsTests.swift b/TemplateApplicationUITests/ContactsTests.swift deleted file mode 100644 index e731aeb..0000000 --- a/TemplateApplicationUITests/ContactsTests.swift +++ /dev/null @@ -1,57 +0,0 @@ -// -// This source file is part of the Stanford CardinalKit Template Application project -// -// SPDX-FileCopyrightText: 2023 Stanford University -// -// SPDX-License-Identifier: MIT -// - -import XCTest - - -class ContactsTests: XCTestCase { - override func setUpWithError() throws { - try super.setUpWithError() - - continueAfterFailure = false - - let app = XCUIApplication() - app.launchArguments = ["--skipOnboarding"] - app.launch() - } - - - func testContacts() throws { - let app = XCUIApplication() - - XCTAssertTrue(app.tabBars["Tab Bar"].buttons["Contacts"].waitForExistence(timeout: 2)) - app.tabBars["Tab Bar"].buttons["Contacts"].tap() - - XCTAssertTrue(app.staticTexts["Leland Stanford"].waitForExistence(timeout: 2)) - - XCTAssertTrue(app.buttons["Call"].waitForExistence(timeout: 2)) - app.buttons["Call"].tap() - app.alerts["Call"].scrollViews.otherElements.buttons["Ok"].tap() - - XCTAssertTrue(app.buttons["Text"].waitForExistence(timeout: 2)) - app.buttons["Text"].tap() - app.alerts["Text"].scrollViews.otherElements.buttons["Ok"].tap() - - XCTAssertTrue(app.buttons["Email"].waitForExistence(timeout: 2)) - app.buttons["Email"].tap() - app.alerts["Email"].scrollViews.otherElements.buttons["Ok"].tap() - - XCTAssertTrue(app.buttons["Website"].waitForExistence(timeout: 2)) - app.buttons["Website"].tap() - - let safari = XCUIApplication(bundleIdentifier: "com.apple.mobilesafari") - XCTAssert(safari.wait(for: .runningForeground, timeout: 10)) - app.activate() - - XCTAssertTrue(app.buttons["Address, 450 Serra Mall\nStanford CA 94305\nUSA"].waitForExistence(timeout: 2)) - app.buttons["Address, 450 Serra Mall\nStanford CA 94305\nUSA"].tap() - - let maps = XCUIApplication(bundleIdentifier: "com.apple.Maps") - XCTAssert(maps.wait(for: .runningForeground, timeout: 10)) - } -} diff --git a/TemplateApplicationUITests/HealthKitUploadTests.swift b/TemplateApplicationUITests/HealthKitUploadTests.swift deleted file mode 100644 index bfb0d2a..0000000 --- a/TemplateApplicationUITests/HealthKitUploadTests.swift +++ /dev/null @@ -1,71 +0,0 @@ -// -// This source file is part of the Stanford CardinalKit Template Application project -// -// SPDX-FileCopyrightText: 2023 Stanford University -// -// SPDX-License-Identifier: MIT -// - -import XCTest -import XCTestExtensions -import XCTHealthKit - - -class HealthKitUploadTests: XCTestCase { - override func setUpWithError() throws { - try super.setUpWithError() - - try disablePasswordAutofill() - - continueAfterFailure = false - - let app = XCUIApplication() - app.launchArguments = ["--showOnboarding"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") - } - - - func testHealthKitMockUpload() throws { - let app = XCUIApplication() - - try app.conductOnboardingIfNeeded() - - try navigateToMockUpload() - - try assertObservationCellPresent(false) - - try exitAppAndOpenHealth(.steps) - - app.activate() - - sleep(5) - - try navigateToMockUpload() - try assertObservationCellPresent(true, pressIfPresent: true) - try assertObservationCellPresent(true, pressIfPresent: false) - } - - - private func navigateToMockUpload() throws { - let app = XCUIApplication() - - XCTAssertTrue(app.tabBars["Tab Bar"].buttons["Mock Upload"].waitForExistence(timeout: 2)) - app.tabBars["Tab Bar"].buttons["Mock Upload"].tap() - } - - private func assertObservationCellPresent(_ shouldBePresent: Bool, pressIfPresent: Bool = true) throws { - let app = XCUIApplication() - - let observationText = "/Observation/" - let predicate = NSPredicate(format: "label CONTAINS[c] %@", observationText) - - if shouldBePresent { - XCTAssertTrue(app.staticTexts.containing(predicate).firstMatch.waitForExistence(timeout: 2)) - if pressIfPresent { - app.staticTexts.containing(predicate).firstMatch.tap() - } - } else { - XCTAssertFalse(app.staticTexts.containing(predicate).firstMatch.waitForExistence(timeout: 2)) - } - } -} diff --git a/TemplateApplicationUITests/OnboardingTests.swift b/TemplateApplicationUITests/OnboardingTests.swift index aa6d067..c32c358 100644 --- a/TemplateApplicationUITests/OnboardingTests.swift +++ b/TemplateApplicationUITests/OnboardingTests.swift @@ -21,130 +21,13 @@ class OnboardingTests: XCTestCase { let app = XCUIApplication() app.launchArguments = ["--showOnboarding"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") + app.deleteAndLaunch(withSpringboardAppName: "OwnYourData") } func testOnboardingFlow() throws { let app = XCUIApplication() - try app.navigateOnboardingFlow(assertThatHealthKitConsentIsShown: true) - - let tabBar = app.tabBars["Tab Bar"] - XCTAssertTrue(tabBar.buttons["Schedule"].waitForExistence(timeout: 2)) - XCTAssertTrue(tabBar.buttons["Contacts"].waitForExistence(timeout: 2)) - XCTAssertTrue(tabBar.buttons["Mock Upload"].waitForExistence(timeout: 2)) - } -} - - -extension XCUIApplication { - func conductOnboardingIfNeeded() throws { - if self.staticTexts["CardinalKit\nTemplate Application"].waitForExistence(timeout: 5) { - try navigateOnboardingFlow(assertThatHealthKitConsentIsShown: false) - } - } - - func navigateOnboardingFlow(assertThatHealthKitConsentIsShown: Bool = true) throws { - try navigateOnboardingFlowWelcome() - try navigateOnboardingFlowInterestingModules() - if staticTexts["Consent Example"].waitForExistence(timeout: 5) { - try navigateOnboardingFlowConsent() - } - try navigateOnboardingAccount() - try navigateOnboardingFlowHealthKitAccess(assertThatHealthKitConsentIsShown: assertThatHealthKitConsentIsShown) - } - - private func navigateOnboardingFlowWelcome() throws { - XCTAssertTrue(staticTexts["CardinalKit\nTemplate Application"].waitForExistence(timeout: 2)) - - XCTAssertTrue(buttons["Learn More"].waitForExistence(timeout: 2)) - buttons["Learn More"].tap() - } - - private func navigateOnboardingFlowInterestingModules() throws { - XCTAssertTrue(staticTexts["Interesting Modules"].waitForExistence(timeout: 2)) - - for _ in 1..<4 { - XCTAssertTrue(buttons["Next"].waitForExistence(timeout: 2)) - buttons["Next"].tap() - } - - XCTAssertTrue(buttons["Next"].waitForExistence(timeout: 2)) - buttons["Next"].tap() - } - - private func navigateOnboardingFlowConsent() throws { - XCTAssertTrue(staticTexts["Consent Example"].waitForExistence(timeout: 2)) - - XCTAssertTrue(staticTexts["First Name"].waitForExistence(timeout: 2)) - try textFields["Enter your first name ..."].enter(value: "Leland") - textFields["Enter your first name ..."].typeText("\n") - - XCTAssertTrue(staticTexts["Last Name"].waitForExistence(timeout: 2)) - try textFields["Enter your last name ..."].enter(value: "Stanford") - textFields["Enter your last name ..."].typeText("\n") - - XCTAssertTrue(staticTexts["Leland Stanford"].waitForExistence(timeout: 2)) - staticTexts["Leland Stanford"].firstMatch.swipeUp() - - XCTAssertTrue(buttons["I Consent"].waitForExistence(timeout: 2)) - buttons["I Consent"].tap() - } - - private func navigateOnboardingAccount() throws { - XCTAssertTrue(staticTexts["Your Account"].waitForExistence(timeout: 2)) - - guard !buttons["Next"].waitForExistence(timeout: 5) else { - buttons["Next"].tap() - return - } - - XCTAssertTrue(buttons["Sign Up"].waitForExistence(timeout: 2)) - buttons["Sign Up"].tap() - - XCTAssertTrue(navigationBars.staticTexts["Sign Up"].waitForExistence(timeout: 2)) - XCTAssertTrue(images["App Icon"].waitForExistence(timeout: 2)) - XCTAssertTrue(buttons["Email and Password"].waitForExistence(timeout: 2)) - - buttons["Email and Password"].tap() - - try textFields["Enter your email ..."].enter(value: "leland@stanford.edu") - swipeUp() - - secureTextFields["Enter your password ..."].tap() - secureTextFields["Enter your password ..."].typeText("StanfordRocks") - swipeUp() - secureTextFields["Repeat your password ..."].tap() - secureTextFields["Repeat your password ..."].typeText("StanfordRocks") - swipeUp() - - try textFields["Enter your first name ..."].enter(value: "Leland") - staticTexts["Repeat\nPassword"].swipeUp() - - try textFields["Enter your last name ..."].enter(value: "Stanford") - staticTexts["Repeat\nPassword"].swipeUp() - - collectionViews.buttons["Sign Up"].tap() - - sleep(3) - - if staticTexts["HealthKit Access"].waitForExistence(timeout: 5) && navigationBars.buttons["Back"].waitForExistence(timeout: 5) { - navigationBars.buttons["Back"].tap() - - XCTAssertTrue(staticTexts["Leland Stanford"].waitForExistence(timeout: 2)) - XCTAssertTrue(staticTexts["leland@stanford.edu"].waitForExistence(timeout: 2)) - XCTAssertTrue(scrollViews.otherElements.buttons["Next"].waitForExistence(timeout: 2)) - scrollViews.otherElements.buttons["Next"].tap() - } - } - - private func navigateOnboardingFlowHealthKitAccess(assertThatHealthKitConsentIsShown: Bool = true) throws { - XCTAssertTrue(staticTexts["HealthKit Access"].waitForExistence(timeout: 2)) - - XCTAssertTrue(buttons["Grant Access"].waitForExistence(timeout: 2)) - buttons["Grant Access"].tap() - - try handleHealthKitAuthorization() + XCTAssertTrue(app.staticTexts["Access\nClinical Trials"].waitForExistence(timeout: 5)) } } diff --git a/TemplateApplicationUITests/SchedulerAndQuestionnaireTests.swift b/TemplateApplicationUITests/SchedulerAndQuestionnaireTests.swift deleted file mode 100644 index 93abd6b..0000000 --- a/TemplateApplicationUITests/SchedulerAndQuestionnaireTests.swift +++ /dev/null @@ -1,56 +0,0 @@ -// -// This source file is part of the Stanford CardinalKit Template Application project -// -// SPDX-FileCopyrightText: 2023 Stanford University -// -// SPDX-License-Identifier: MIT -// - -import XCTest -import XCTestExtensions - - -class SchedulerAndQuestionnaireTests: XCTestCase { - override func setUpWithError() throws { - try super.setUpWithError() - - continueAfterFailure = false - - let app = XCUIApplication() - app.launchArguments = ["--skipOnboarding"] - app.deleteAndLaunch(withSpringboardAppName: "TemplateApplication") - } - - - func testSchedulerAndQuestionnaire() throws { - let app = XCUIApplication() - - XCTAssertTrue(app.tabBars["Tab Bar"].buttons["Schedule"].waitForExistence(timeout: 2)) - app.tabBars["Tab Bar"].buttons["Schedule"].tap() - - XCTAssertTrue(app.staticTexts["Start Questionnaire"].waitForExistence(timeout: 2)) - app.staticTexts["Start Questionnaire"].tap() - - for _ in 0..<4 { - XCTAssertTrue(app.tables.staticTexts["None of the time"].waitForExistence(timeout: 2)) - app.tables.staticTexts["None of the time"].tap() - XCTAssertTrue(app.tables.buttons["Next"].waitForExistence(timeout: 2)) - app.tables.buttons["Next"].tap() - } - - XCTAssertTrue(app.textFields["Tap to answer"].waitForExistence(timeout: 2)) - try app.textFields["Tap to answer"].enter(value: "42") - app.toolbars["Toolbar"].buttons["Done"].tap() - - XCTAssertTrue(app.buttons["Next"].waitForExistence(timeout: 2)) - app.buttons["Next"].tap() - - XCTAssertTrue(app.tables.staticTexts["Phone call"].waitForExistence(timeout: 2)) - app.tables.staticTexts["Phone call"].tap() - XCTAssertTrue(app.tables.buttons["Done"].waitForExistence(timeout: 2)) - app.tables.buttons["Done"].tap() - - XCTAssertTrue(!app.staticTexts["Start Questionnaire"].waitForExistence(timeout: 2)) - XCTAssertTrue(app.images["Selected"].waitForExistence(timeout: 2)) - } -} diff --git a/fastlane/Appfile b/fastlane/Appfile index 3dd29de..d773fb3 100644 --- a/fastlane/Appfile +++ b/fastlane/Appfile @@ -9,5 +9,5 @@ # For more information about the Appfile, see: # https://docs.fastlane.tools/advanced/#appfile -app_identifier "edu.stanford.cardinalkittemplateapplication" # The bundle identifier of your app +app_identifier "edu.stanford.cs342.ownyourdata" # The bundle identifier of your app apple_id ENV["APPLE_ID"] # Your Apple email address \ No newline at end of file diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 1c8541a..456e980 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -46,7 +46,7 @@ platform :ios do signin increment_build_number({ build_number: latest_testflight_build_number + 1, - xcodeproj: "TemplateApplication.xcodeproj" + xcodeproj: "OwnYourData.xcodeproj" }) build commit = last_git_commit diff --git a/fastlane/Gymfile b/fastlane/Gymfile index 8251c71..b774aae 100644 --- a/fastlane/Gymfile +++ b/fastlane/Gymfile @@ -12,14 +12,14 @@ # In general, you can use the options available # fastlane gym --help -scheme("TemplateApplication") +scheme("OwnYourData") -project("TemplateApplication.xcodeproj") +project("OwnYourData.xcodeproj") export_options( { provisioningProfiles: { - "edu.stanford.cardinalkittemplateapplication" => "CardinalKit Template Application" + "edu.stanford.cs342.ownyourdata" => "CS342 OwnYourData" } } ) \ No newline at end of file diff --git a/fastlane/Scanfile b/fastlane/Scanfile index a789a91..03c1ef6 100644 --- a/fastlane/Scanfile +++ b/fastlane/Scanfile @@ -12,7 +12,7 @@ # In general, you can use the options available # fastlane scan --help -project("TemplateApplication.xcodeproj") -scheme("TemplateApplication") +project("OwnYourData.xcodeproj") +scheme("OwnYourData") devices(["iPhone 14 Pro"]) skip_build(true)