Changed username and password to secure hashes so that the plaintext is no longer hard-coded in
This commit is contained in:
parent
acc9f86315
commit
a0b834a505
16 changed files with 511 additions and 44 deletions
|
|
@ -7,6 +7,10 @@
|
|||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
6A0FD2502875F944006DF79D /* PacesUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A0FD24F2875F944006DF79D /* PacesUITests.swift */; };
|
||||
6A0FD2522875F944006DF79D /* PacesUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A0FD2512875F944006DF79D /* PacesUITestsLaunchTests.swift */; };
|
||||
6A0FD25F2875FA14006DF79D /* PacesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A0FD25E2875FA14006DF79D /* PacesTests.swift */; };
|
||||
6A5CEC52287691BE003D876C /* ChangeLogView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A5CEC51287691BE003D876C /* ChangeLogView.swift */; };
|
||||
850062C92802328F0095F121 /* TabViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850062C82802328F0095F121 /* TabViewData.swift */; };
|
||||
8502250E27FA5D0800FE8E95 /* ChangeLogData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */; };
|
||||
850F8014284A7F6A0094580D /* DocsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 850F8013284A7F6A0094580D /* DocsView.swift */; };
|
||||
|
|
@ -24,11 +28,34 @@
|
|||
85AAA0DA27FA2DDA00F4B9A1 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */; };
|
||||
85AAA0DD27FA2DDA00F4B9A1 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 85AAA0DC27FA2DDA00F4B9A1 /* Preview Assets.xcassets */; };
|
||||
85AAA0E627FA2EB100F4B9A1 /* HelpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0E527FA2EB100F4B9A1 /* HelpView.swift */; };
|
||||
85AAA0E827FA2F1600F4B9A1 /* ChangeLogView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85AAA0E727FA2F1600F4B9A1 /* ChangeLogView.swift */; };
|
||||
85AAA0EB27FA2F7000F4B9A1 /* RichTextView in Frameworks */ = {isa = PBXBuildFile; productRef = 85AAA0EA27FA2F7000F4B9A1 /* RichTextView */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
6A0FD2532875F944006DF79D /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 85AAA0CA27FA2DD600F4B9A1 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 85AAA0D127FA2DD600F4B9A1;
|
||||
remoteInfo = Paces;
|
||||
};
|
||||
6A0FD2602875FA14006DF79D /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 85AAA0CA27FA2DD600F4B9A1 /* Project object */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = 85AAA0D127FA2DD600F4B9A1;
|
||||
remoteInfo = Paces;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
6A0FD24D2875F944006DF79D /* PacesUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PacesUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
6A0FD24F2875F944006DF79D /* PacesUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacesUITests.swift; sourceTree = "<group>"; };
|
||||
6A0FD2512875F944006DF79D /* PacesUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacesUITestsLaunchTests.swift; sourceTree = "<group>"; };
|
||||
6A0FD25C2875FA14006DF79D /* PacesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PacesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
6A0FD25E2875FA14006DF79D /* PacesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PacesTests.swift; sourceTree = "<group>"; };
|
||||
6A5CEC51287691BE003D876C /* ChangeLogView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeLogView.swift; sourceTree = "<group>"; };
|
||||
6AB17201286EB414005DED42 /* Splits.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Splits.entitlements; sourceTree = "<group>"; };
|
||||
850062C82802328F0095F121 /* TabViewData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabViewData.swift; sourceTree = "<group>"; };
|
||||
8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeLogData.swift; sourceTree = "<group>"; };
|
||||
850F8013284A7F6A0094580D /* DocsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocsView.swift; sourceTree = "<group>"; };
|
||||
|
|
@ -41,16 +68,29 @@
|
|||
850F8025285437500094580D /* isaac.greene.clouds.heic */ = {isa = PBXFileReference; lastKnownFileType = file; name = isaac.greene.clouds.heic; path = Assets.xcassets/isaac.greene.clouds.heic; sourceTree = "<group>"; };
|
||||
850F8026285437500094580D /* jake.zimmerman.group.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = jake.zimmerman.group.jpg; path = Assets.xcassets/jake.zimmerman.group.jpg; sourceTree = "<group>"; };
|
||||
859298C828592F1F00D9D6CB /* Documentation.docc */ = {isa = PBXFileReference; lastKnownFileType = folder.documentationcatalog; path = Documentation.docc; sourceTree = "<group>"; };
|
||||
85AAA0D227FA2DD600F4B9A1 /* Splits.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Splits.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
85AAA0D227FA2DD600F4B9A1 /* Paces.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Paces.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplitsApp.swift; sourceTree = "<group>"; };
|
||||
85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
|
||||
85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||
85AAA0DC27FA2DDA00F4B9A1 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
|
||||
85AAA0E527FA2EB100F4B9A1 /* HelpView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HelpView.swift; sourceTree = "<group>"; };
|
||||
85AAA0E727FA2F1600F4B9A1 /* ChangeLogView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeLogView.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
6A0FD24A2875F944006DF79D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
6A0FD2592875FA14006DF79D /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
85AAA0CF27FA2DD600F4B9A1 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
@ -62,10 +102,29 @@
|
|||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
6A0FD24E2875F944006DF79D /* PacesUITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6A0FD24F2875F944006DF79D /* PacesUITests.swift */,
|
||||
6A0FD2512875F944006DF79D /* PacesUITestsLaunchTests.swift */,
|
||||
);
|
||||
path = PacesUITests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
6A0FD25D2875FA14006DF79D /* PacesTests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6A0FD25E2875FA14006DF79D /* PacesTests.swift */,
|
||||
);
|
||||
path = PacesTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
85AAA0C927FA2DD600F4B9A1 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
85AAA0D427FA2DD600F4B9A1 /* Splits */,
|
||||
6A0FD24E2875F944006DF79D /* PacesUITests */,
|
||||
6A0FD25D2875FA14006DF79D /* PacesTests */,
|
||||
85AAA0D327FA2DD600F4B9A1 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -73,7 +132,9 @@
|
|||
85AAA0D327FA2DD600F4B9A1 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
85AAA0D227FA2DD600F4B9A1 /* Splits.app */,
|
||||
85AAA0D227FA2DD600F4B9A1 /* Paces.app */,
|
||||
6A0FD24D2875F944006DF79D /* PacesUITests.xctest */,
|
||||
6A0FD25C2875FA14006DF79D /* PacesTests.xctest */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -81,8 +142,10 @@
|
|||
85AAA0D427FA2DD600F4B9A1 /* Splits */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6AB17201286EB414005DED42 /* Splits.entitlements */,
|
||||
85AAA0D527FA2DD600F4B9A1 /* SplitsApp.swift */,
|
||||
859298C828592F1F00D9D6CB /* Documentation.docc */,
|
||||
6A5CEC51287691BE003D876C /* ChangeLogView.swift */,
|
||||
8502250D27FA5D0800FE8E95 /* ChangeLogData.swift */,
|
||||
85AAA0D727FA2DD600F4B9A1 /* ContentView.swift */,
|
||||
850062C82802328F0095F121 /* TabViewData.swift */,
|
||||
|
|
@ -90,7 +153,6 @@
|
|||
850F8013284A7F6A0094580D /* DocsView.swift */,
|
||||
850F80212853F7E30094580D /* SecretView.swift */,
|
||||
850F8015284A815C0094580D /* KnownIssues.swift */,
|
||||
85AAA0E727FA2F1600F4B9A1 /* ChangeLogView.swift */,
|
||||
85AAA0E527FA2EB100F4B9A1 /* HelpView.swift */,
|
||||
850F801F2853F7790094580D /* LicenseView.swift */,
|
||||
85AAA0D927FA2DDA00F4B9A1 /* Assets.xcassets */,
|
||||
|
|
@ -114,9 +176,45 @@
|
|||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
85AAA0D127FA2DD600F4B9A1 /* Splits */ = {
|
||||
6A0FD24C2875F944006DF79D /* PacesUITests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 85AAA0E027FA2DDA00F4B9A1 /* Build configuration list for PBXNativeTarget "Splits" */;
|
||||
buildConfigurationList = 6A0FD2572875F944006DF79D /* Build configuration list for PBXNativeTarget "PacesUITests" */;
|
||||
buildPhases = (
|
||||
6A0FD2492875F944006DF79D /* Sources */,
|
||||
6A0FD24A2875F944006DF79D /* Frameworks */,
|
||||
6A0FD24B2875F944006DF79D /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
6A0FD2542875F944006DF79D /* PBXTargetDependency */,
|
||||
);
|
||||
name = PacesUITests;
|
||||
productName = PacesUITests;
|
||||
productReference = 6A0FD24D2875F944006DF79D /* PacesUITests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.ui-testing";
|
||||
};
|
||||
6A0FD25B2875FA14006DF79D /* PacesTests */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 6A0FD2622875FA14006DF79D /* Build configuration list for PBXNativeTarget "PacesTests" */;
|
||||
buildPhases = (
|
||||
6A0FD2582875FA14006DF79D /* Sources */,
|
||||
6A0FD2592875FA14006DF79D /* Frameworks */,
|
||||
6A0FD25A2875FA14006DF79D /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
6A0FD2612875FA14006DF79D /* PBXTargetDependency */,
|
||||
);
|
||||
name = PacesTests;
|
||||
productName = PacesTests;
|
||||
productReference = 6A0FD25C2875FA14006DF79D /* PacesTests.xctest */;
|
||||
productType = "com.apple.product-type.bundle.unit-test";
|
||||
};
|
||||
85AAA0D127FA2DD600F4B9A1 /* Paces */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 85AAA0E027FA2DDA00F4B9A1 /* Build configuration list for PBXNativeTarget "Paces" */;
|
||||
buildPhases = (
|
||||
85AAA0CE27FA2DD600F4B9A1 /* Sources */,
|
||||
85AAA0CF27FA2DD600F4B9A1 /* Frameworks */,
|
||||
|
|
@ -126,12 +224,12 @@
|
|||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = Splits;
|
||||
name = Paces;
|
||||
packageProductDependencies = (
|
||||
85AAA0EA27FA2F7000F4B9A1 /* RichTextView */,
|
||||
);
|
||||
productName = Splits;
|
||||
productReference = 85AAA0D227FA2DD600F4B9A1 /* Splits.app */;
|
||||
productReference = 85AAA0D227FA2DD600F4B9A1 /* Paces.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
|
@ -141,15 +239,23 @@
|
|||
isa = PBXProject;
|
||||
attributes = {
|
||||
BuildIndependentTargetsInParallel = 1;
|
||||
LastSwiftUpdateCheck = 1330;
|
||||
LastSwiftUpdateCheck = 1340;
|
||||
LastUpgradeCheck = 1330;
|
||||
TargetAttributes = {
|
||||
6A0FD24C2875F944006DF79D = {
|
||||
CreatedOnToolsVersion = 13.4.1;
|
||||
TestTargetID = 85AAA0D127FA2DD600F4B9A1;
|
||||
};
|
||||
6A0FD25B2875FA14006DF79D = {
|
||||
CreatedOnToolsVersion = 13.4.1;
|
||||
TestTargetID = 85AAA0D127FA2DD600F4B9A1;
|
||||
};
|
||||
85AAA0D127FA2DD600F4B9A1 = {
|
||||
CreatedOnToolsVersion = 13.3;
|
||||
};
|
||||
};
|
||||
};
|
||||
buildConfigurationList = 85AAA0CD27FA2DD600F4B9A1 /* Build configuration list for PBXProject "Splits" */;
|
||||
buildConfigurationList = 85AAA0CD27FA2DD600F4B9A1 /* Build configuration list for PBXProject "Paces" */;
|
||||
compatibilityVersion = "Xcode 13.0";
|
||||
developmentRegion = en;
|
||||
hasScannedForEncodings = 0;
|
||||
|
|
@ -160,17 +266,35 @@
|
|||
mainGroup = 85AAA0C927FA2DD600F4B9A1;
|
||||
packageReferences = (
|
||||
85AAA0E927FA2F7000F4B9A1 /* XCRemoteSwiftPackageReference "RichTextView" */,
|
||||
6AB17202286EB5A5005DED42 /* XCRemoteSwiftPackageReference "RichTextView" */,
|
||||
6AB17203286EB5DD005DED42 /* XCRemoteSwiftPackageReference "RichTextView" */,
|
||||
);
|
||||
productRefGroup = 85AAA0D327FA2DD600F4B9A1 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
85AAA0D127FA2DD600F4B9A1 /* Splits */,
|
||||
85AAA0D127FA2DD600F4B9A1 /* Paces */,
|
||||
6A0FD24C2875F944006DF79D /* PacesUITests */,
|
||||
6A0FD25B2875FA14006DF79D /* PacesTests */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
6A0FD24B2875F944006DF79D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
6A0FD25A2875FA14006DF79D /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
85AAA0D027FA2DD600F4B9A1 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
@ -187,11 +311,29 @@
|
|||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
6A0FD2492875F944006DF79D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6A0FD2502875F944006DF79D /* PacesUITests.swift in Sources */,
|
||||
6A0FD2522875F944006DF79D /* PacesUITestsLaunchTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
6A0FD2582875FA14006DF79D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
6A0FD25F2875FA14006DF79D /* PacesTests.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
85AAA0CE27FA2DD600F4B9A1 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
850F80222853F7E30094580D /* SecretView.swift in Sources */,
|
||||
6A5CEC52287691BE003D876C /* ChangeLogView.swift in Sources */,
|
||||
85AAA0D827FA2DD600F4B9A1 /* ContentView.swift in Sources */,
|
||||
85AAA0D627FA2DD600F4B9A1 /* SplitsApp.swift in Sources */,
|
||||
850062C92802328F0095F121 /* TabViewData.swift in Sources */,
|
||||
|
|
@ -199,7 +341,6 @@
|
|||
850F8014284A7F6A0094580D /* DocsView.swift in Sources */,
|
||||
850F8016284A815C0094580D /* KnownIssues.swift in Sources */,
|
||||
859298C928592F1F00D9D6CB /* Documentation.docc in Sources */,
|
||||
85AAA0E827FA2F1600F4B9A1 /* ChangeLogView.swift in Sources */,
|
||||
85AAA0E627FA2EB100F4B9A1 /* HelpView.swift in Sources */,
|
||||
850F80202853F7790094580D /* LicenseView.swift in Sources */,
|
||||
850F8018284A83400094580D /* FeaturesView.swift in Sources */,
|
||||
|
|
@ -208,7 +349,90 @@
|
|||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
6A0FD2542875F944006DF79D /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 85AAA0D127FA2DD600F4B9A1 /* Paces */;
|
||||
targetProxy = 6A0FD2532875F944006DF79D /* PBXContainerItemProxy */;
|
||||
};
|
||||
6A0FD2612875FA14006DF79D /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
target = 85AAA0D127FA2DD600F4B9A1 /* Paces */;
|
||||
targetProxy = 6A0FD2602875FA14006DF79D /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
6A0FD2552875F944006DF79D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = D6M5W5BC5A;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = Brandlar.PacesUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_TARGET_NAME = Paces;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
6A0FD2562875F944006DF79D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = D6M5W5BC5A;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = Brandlar.PacesUITests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_TARGET_NAME = Paces;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
6A0FD2632875FA14006DF79D /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = D6M5W5BC5A;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = Brandlar.PacesTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Paces.app/Paces";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
6A0FD2642875FA14006DF79D /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
BUNDLE_LOADER = "$(TEST_HOST)";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_TEAM = D6M5W5BC5A;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = Brandlar.PacesTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_EMIT_LOC_STRINGS = NO;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Paces.app/Paces";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
85AAA0DE27FA2DDA00F4B9A1 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
|
|
@ -332,11 +556,12 @@
|
|||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_ENTITLEMENTS = Splits/Splits.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Splits/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = UQJ7U8R2CV;
|
||||
DEVELOPMENT_TEAM = D6M5W5BC5A;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = Splits/Info.plist;
|
||||
|
|
@ -346,10 +571,10 @@
|
|||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
INFOPLIST_KEY_UIRequiresFullScreen = NO;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeRight UIInterfaceOrientationLandscapeLeft";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.5;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -359,6 +584,8 @@
|
|||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
RUN_DOCUMENTATION_COMPILER = YES;
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
|
|
@ -370,11 +597,12 @@
|
|||
buildSettings = {
|
||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
|
||||
CODE_SIGN_ENTITLEMENTS = Splits/Splits.entitlements;
|
||||
CODE_SIGN_IDENTITY = "Apple Development";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Splits/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = UQJ7U8R2CV;
|
||||
DEVELOPMENT_TEAM = D6M5W5BC5A;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
INFOPLIST_FILE = Splits/Info.plist;
|
||||
|
|
@ -384,10 +612,10 @@
|
|||
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
|
||||
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
||||
INFOPLIST_KEY_UIRequiresFullScreen = NO;
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeRight UIInterfaceOrientationLandscapeLeft";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
|
||||
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.5;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 15.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
|
|
@ -397,6 +625,8 @@
|
|||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "";
|
||||
RUN_DOCUMENTATION_COMPILER = YES;
|
||||
SUPPORTS_MACCATALYST = NO;
|
||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = YES;
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
|
|
@ -406,7 +636,25 @@
|
|||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
85AAA0CD27FA2DD600F4B9A1 /* Build configuration list for PBXProject "Splits" */ = {
|
||||
6A0FD2572875F944006DF79D /* Build configuration list for PBXNativeTarget "PacesUITests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
6A0FD2552875F944006DF79D /* Debug */,
|
||||
6A0FD2562875F944006DF79D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
6A0FD2622875FA14006DF79D /* Build configuration list for PBXNativeTarget "PacesTests" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
6A0FD2632875FA14006DF79D /* Debug */,
|
||||
6A0FD2642875FA14006DF79D /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
85AAA0CD27FA2DD600F4B9A1 /* Build configuration list for PBXProject "Paces" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
85AAA0DE27FA2DDA00F4B9A1 /* Debug */,
|
||||
|
|
@ -415,7 +663,7 @@
|
|||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
85AAA0E027FA2DDA00F4B9A1 /* Build configuration list for PBXNativeTarget "Splits" */ = {
|
||||
85AAA0E027FA2DDA00F4B9A1 /* Build configuration list for PBXNativeTarget "Paces" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
85AAA0E127FA2DDA00F4B9A1 /* Debug */,
|
||||
|
|
@ -427,6 +675,22 @@
|
|||
/* End XCConfigurationList section */
|
||||
|
||||
/* Begin XCRemoteSwiftPackageReference section */
|
||||
6AB17202286EB5A5005DED42 /* XCRemoteSwiftPackageReference "RichTextView" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/tophat/RichTextView";
|
||||
requirement = {
|
||||
kind = upToNextMajorVersion;
|
||||
minimumVersion = 3.0.0;
|
||||
};
|
||||
};
|
||||
6AB17203286EB5DD005DED42 /* XCRemoteSwiftPackageReference "RichTextView" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/tophat/RichTextView";
|
||||
requirement = {
|
||||
branch = master;
|
||||
kind = branch;
|
||||
};
|
||||
};
|
||||
85AAA0E927FA2F7000F4B9A1 /* XCRemoteSwiftPackageReference "RichTextView" */ = {
|
||||
isa = XCRemoteSwiftPackageReference;
|
||||
repositoryURL = "https://github.com/tophat/RichTextView.git";
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Bucket
|
||||
uuid = "F6072BD7-2ADA-480D-8857-F3DEF54EA1A4"
|
||||
type = "1"
|
||||
version = "2.0">
|
||||
</Bucket>
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>SchemeUserState</key>
|
||||
<dict>
|
||||
<key>Paces.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>SnapKitPlayground (Playground) 1.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>5</integer>
|
||||
</dict>
|
||||
<key>SnapKitPlayground (Playground) 2.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>6</integer>
|
||||
</dict>
|
||||
<key>SnapKitPlayground (Playground).xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>4</integer>
|
||||
</dict>
|
||||
<key>Splits.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>SwiftRichString (Playground) 1.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>2</integer>
|
||||
</dict>
|
||||
<key>SwiftRichString (Playground) 2.xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>SwiftRichString (Playground).xcscheme</key>
|
||||
<dict>
|
||||
<key>isShown</key>
|
||||
<false/>
|
||||
<key>orderHint</key>
|
||||
<integer>1</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
35
PacesTests/PacesTests.swift
Normal file
35
PacesTests/PacesTests.swift
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
//
|
||||
// PacesTests.swift
|
||||
// PacesTests
|
||||
//
|
||||
// Created by Isaac Greene on 7/6/22.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class PacesTests: XCTestCase {
|
||||
|
||||
override func setUpWithError() throws {
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
override func tearDownWithError() throws {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
func testExample() throws {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
// Any test you write for XCTest can be annotated as throws and async.
|
||||
// Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
|
||||
// Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
|
||||
}
|
||||
|
||||
func testPerformanceExample() throws {
|
||||
// This is an example of a performance test case.
|
||||
measure {
|
||||
// Put the code you want to measure the time of here.
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
41
PacesUITests/PacesUITests.swift
Normal file
41
PacesUITests/PacesUITests.swift
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
//
|
||||
// PacesUITests.swift
|
||||
// PacesUITests
|
||||
//
|
||||
// Created by Isaac Greene on 7/6/22.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class PacesUITests: XCTestCase {
|
||||
|
||||
override func setUpWithError() throws {
|
||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
||||
|
||||
// In UI tests it is usually best to stop immediately when a failure occurs.
|
||||
continueAfterFailure = false
|
||||
|
||||
// In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
|
||||
}
|
||||
|
||||
override func tearDownWithError() throws {
|
||||
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
||||
}
|
||||
|
||||
func testExample() throws {
|
||||
// UI tests must launch the application that they test.
|
||||
let app = XCUIApplication()
|
||||
app.launch()
|
||||
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
||||
}
|
||||
|
||||
func testLaunchPerformance() throws {
|
||||
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
|
||||
// This measures how long it takes to launch your application.
|
||||
measure(metrics: [XCTApplicationLaunchMetric()]) {
|
||||
XCUIApplication().launch()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
32
PacesUITests/PacesUITestsLaunchTests.swift
Normal file
32
PacesUITests/PacesUITestsLaunchTests.swift
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
//
|
||||
// PacesUITestsLaunchTests.swift
|
||||
// PacesUITests
|
||||
//
|
||||
// Created by Isaac Greene on 7/6/22.
|
||||
//
|
||||
|
||||
import XCTest
|
||||
|
||||
class PacesUITestsLaunchTests: XCTestCase {
|
||||
|
||||
override class var runsForEachTargetApplicationUIConfiguration: Bool {
|
||||
true
|
||||
}
|
||||
|
||||
override func setUpWithError() throws {
|
||||
continueAfterFailure = false
|
||||
}
|
||||
|
||||
func testLaunch() throws {
|
||||
let app = XCUIApplication()
|
||||
app.launch()
|
||||
|
||||
// Insert steps here to perform after app launch but before taking a screenshot,
|
||||
// such as logging into a test account or navigating somewhere in the app
|
||||
|
||||
let attachment = XCTAttachment(screenshot: app.screenshot())
|
||||
attachment.name = "Launch Screen"
|
||||
attachment.lifetime = .keepAlways
|
||||
add(attachment)
|
||||
}
|
||||
}
|
||||
|
|
@ -7,10 +7,29 @@
|
|||
|
||||
import SwiftUI
|
||||
|
||||
struct July2022: View {
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
//2022-07-06
|
||||
HStack {
|
||||
VStack (alignment: .leading) {
|
||||
Text("2022-07-06")
|
||||
.font(.title2)
|
||||
Text("Version Prerelease Build LVSXT10a.4\n")
|
||||
.font(.footnote)
|
||||
Text("\u{2022} Stored the logins as cryptographically-secure hashes\n\u{2022} Fixed a few small formatting issues")
|
||||
}
|
||||
Spacer()
|
||||
}
|
||||
.padding(30)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct June2022: View {
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
//2022-06-16
|
||||
//2022-06-17
|
||||
HStack {
|
||||
VStack (alignment: .leading) {
|
||||
Text("2022-06-17")
|
||||
|
|
@ -127,6 +146,7 @@ struct June2022: View {
|
|||
.font(.footnote)
|
||||
Text("\u{2022} Started work on converting the pace to a more understandable format")
|
||||
}
|
||||
Spacer()
|
||||
}
|
||||
.padding(30)
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ struct ChangeLog: View {
|
|||
var body: some View {
|
||||
List {
|
||||
Section(header: Text("2022")) {
|
||||
NavigationLink("July", destination: July2022())
|
||||
NavigationLink("June", destination: June2022())
|
||||
NavigationLink("May", destination: May2022())
|
||||
NavigationLink("April", destination: April2022())
|
||||
|
|
|
|||
|
|
@ -243,7 +243,7 @@ struct PaceResults: View {
|
|||
Text("\(hoursFormatted):\(leadingZeros)")
|
||||
.padding()
|
||||
.frame(minWidth: 100)
|
||||
VStack (alignment: .leading) {
|
||||
VStack (alignment: .trailing) {
|
||||
Text("\(roundString(Double(removeLeadingZeros(distance: &distance)) ?? 0))\(selectedSystem)")
|
||||
Text("\(convertedDistanceString)\(notSelectedSystem)")
|
||||
}
|
||||
|
|
@ -255,7 +255,7 @@ struct PaceResults: View {
|
|||
Text("\(paceFormattedOpposite)/\(notSelectedSystem)")
|
||||
}
|
||||
.frame(minWidth: 100)
|
||||
VStack(alignment: .leading) {
|
||||
VStack(alignment: .trailing) {
|
||||
Text("\(pacePerHour) \(selectedSystem)/hr")
|
||||
Text("\(pacePerHourOpposite) \(notSelectedSystem)/hr")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,17 +7,13 @@
|
|||
|
||||
import SwiftUI
|
||||
import LocalAuthentication
|
||||
// this file will have some comments.
|
||||
// Most of this code is considered simple enough
|
||||
// to be human-readable without aid, as long as
|
||||
// the reader has a basic understanding of
|
||||
// Swift and/or SwiftUI.
|
||||
import CryptoKit
|
||||
|
||||
/// The system username for the app
|
||||
/// The system username SHA256 hash for the app
|
||||
/// - Note: This is not a secure way to do it
|
||||
/// or in any way good practice
|
||||
/// but this is mainly to test out `SecureField`
|
||||
let username = "admin"
|
||||
let username = "c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec".utf8
|
||||
|
||||
/// The system password associated with ``username``
|
||||
///
|
||||
|
|
@ -26,7 +22,7 @@ let username = "admin"
|
|||
/// It would be more secure though.
|
||||
/// - Note: Just as with `username` you should not define
|
||||
/// these unencrypted like they are right now.
|
||||
let password = "123"
|
||||
let password = "3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2".utf8
|
||||
|
||||
/// Holds the views and login for the Docs tab in-app
|
||||
///
|
||||
|
|
@ -38,6 +34,13 @@ struct DocsView: View {
|
|||
case password
|
||||
}
|
||||
|
||||
func hashSHA512(login: String) -> String {
|
||||
let loginAsData = Data(login.utf8)
|
||||
let loginHashHex = SHA512.hash(data: loginAsData)
|
||||
let loginHash = loginHashHex.compactMap { String(format: "%02x", $0) }.joined()
|
||||
return String(loginHash)
|
||||
}
|
||||
|
||||
@State private var pass: String = ""
|
||||
@State private var user: String = ""
|
||||
@State private var isUnlocked = false
|
||||
|
|
@ -62,8 +65,8 @@ struct DocsView: View {
|
|||
}
|
||||
Section(header: Text("App Information")) {
|
||||
NavigationLink("Software License", destination: LicenseView())
|
||||
Text("Version: Release Candidate 4")
|
||||
Text("Release date: 2022-06-17")
|
||||
Text("Version: Prerelease Build LVSXT10a.4")
|
||||
Text("Release date: 2022-07-06")
|
||||
Text("Start date: 2022-03-25")
|
||||
Link("Built with SwiftUI \(Image(systemName: "swift"))", destination: URL(string: "https://developer.apple.com/xcode/swiftui")!)
|
||||
}
|
||||
|
|
@ -120,7 +123,7 @@ struct DocsView: View {
|
|||
///
|
||||
/// - Returns: `true` if `user` equals `username` *and* `pass` equals `password`, `false` if one or both checks return false.
|
||||
func checkPassword() -> Bool {
|
||||
if (pass == password && user == username) {
|
||||
if (hashSHA512(login: pass) == String(password) && hashSHA512(login: user) == String(username)) {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
|
|
|
|||
|
|
@ -6,11 +6,6 @@
|
|||
//
|
||||
|
||||
import SwiftUI
|
||||
// this file will not have comments.
|
||||
// this code is considered simple enough to be
|
||||
// human-readable without aid, as long as
|
||||
// the reader has a basic understanding of
|
||||
// Swift and/or SwiftUI.
|
||||
|
||||
struct SecretView: View {
|
||||
var body: some View {
|
||||
|
|
@ -37,7 +32,6 @@ Email: jzimmerman@lakeviewspartans.org
|
|||
}
|
||||
.frame(minWidth: 350, minHeight: 175)
|
||||
.border(.primary)
|
||||
|
||||
VStack {
|
||||
Image("caleb.bost.duo")
|
||||
.resizable()
|
||||
|
|
|
|||
10
Splits/Splits.entitlements
Normal file
10
Splits/Splits.entitlements
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.app-sandbox</key>
|
||||
<true/>
|
||||
<key>com.apple.security.network.client</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
Loading…
Add table
Add a link
Reference in a new issue