From 436c12bf624efcbccd694bf577c3d0e2c4591d32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hochst=C3=B6ger=20Matthias?= <116495532+mhochsto@users.noreply.github.com> Date: Mon, 29 Jul 2024 13:31:58 +0200 Subject: [PATCH 1/4] refactor: added interfaces and restructured app accordingly --- .../project.pbxproj | 98 +++--- .../UserInterfaceState.xcuserstate | Bin 10304 -> 68124 bytes example/src/App.tsx | 2 +- example/src/BleScreenComponents.tsx | 59 ++-- ios/ble/AbrevvaBle.swift | 6 +- ios/nfc/AbrevvaNfc.swift | 30 +- src/index.tsx | 328 ++++++++++++------ src/interfaces.tsx | 69 +++- 8 files changed, 403 insertions(+), 189 deletions(-) diff --git a/example/ios/ExampleAppExample.xcodeproj/project.pbxproj b/example/ios/ExampleAppExample.xcodeproj/project.pbxproj index 7bc7e59..07d8ebd 100644 --- a/example/ios/ExampleAppExample.xcodeproj/project.pbxproj +++ b/example/ios/ExampleAppExample.xcodeproj/project.pbxproj @@ -13,8 +13,8 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 7C2CCBD275D987DDA9C659B6 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 61DF2990903C4888EBB0D63C /* PrivacyInfo.xcprivacy */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - 8687B759D7148E93A7141AE2 /* Pods_ExampleAppExample_ExampleAppExampleTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 40417D6C0177F7DDDB680F61 /* Pods_ExampleAppExample_ExampleAppExampleTests.framework */; }; - C35B25D92894CFFC7F105772 /* Pods_ExampleAppExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AF333FDF0DC0B69B958057A /* Pods_ExampleAppExample.framework */; }; + C31ABF8F57C71FA25518C699 /* Pods_ExampleAppExample_ExampleAppExampleTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 43FFFCB0400B47BFEE01056C /* Pods_ExampleAppExample_ExampleAppExampleTests.framework */; }; + EF82AAB8D7CDA185B168B4CE /* Pods_ExampleAppExample.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 75262DEC733135018D6B2C7C /* Pods_ExampleAppExample.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -31,7 +31,8 @@ 00E356EE1AD99517003FC87E /* ExampleAppExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleAppExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* ExampleAppExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExampleAppExampleTests.m; sourceTree = ""; }; - 04E7B78608C671A705D5C68F /* Pods-ExampleAppExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleAppExample.release.xcconfig"; path = "Target Support Files/Pods-ExampleAppExample/Pods-ExampleAppExample.release.xcconfig"; sourceTree = ""; }; + 05868A8BF1FC288BEBB212D0 /* Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig"; path = "Target Support Files/Pods-ExampleAppExample-ExampleAppExampleTests/Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig"; sourceTree = ""; }; + 125DBE2C52B81A08A4D3D09B /* Pods-ExampleAppExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleAppExample.debug.xcconfig"; path = "Target Support Files/Pods-ExampleAppExample/Pods-ExampleAppExample.debug.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* ExampleAppExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ExampleAppExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = ExampleAppExample/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = ExampleAppExample/AppDelegate.mm; sourceTree = ""; }; @@ -39,13 +40,12 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = ExampleAppExample/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ExampleAppExample/main.m; sourceTree = ""; }; 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = ExampleAppExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 2AC822BC56870058C79802CC /* Pods-ExampleAppExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleAppExample.debug.xcconfig"; path = "Target Support Files/Pods-ExampleAppExample/Pods-ExampleAppExample.debug.xcconfig"; sourceTree = ""; }; - 3AF333FDF0DC0B69B958057A /* Pods_ExampleAppExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ExampleAppExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 40417D6C0177F7DDDB680F61 /* Pods_ExampleAppExample_ExampleAppExampleTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ExampleAppExample_ExampleAppExampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 17EB8284C14F4E99984AC2F2 /* Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-ExampleAppExample-ExampleAppExampleTests/Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig"; sourceTree = ""; }; + 43FFFCB0400B47BFEE01056C /* Pods_ExampleAppExample_ExampleAppExampleTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ExampleAppExample_ExampleAppExampleTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 61DF2990903C4888EBB0D63C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = ExampleAppExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 75262DEC733135018D6B2C7C /* Pods_ExampleAppExample.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ExampleAppExample.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = ExampleAppExample/LaunchScreen.storyboard; sourceTree = ""; }; - E10DE97995006988255D071C /* Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig"; path = "Target Support Files/Pods-ExampleAppExample-ExampleAppExampleTests/Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig"; sourceTree = ""; }; - E61DE6C30649A291134AF714 /* Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-ExampleAppExample-ExampleAppExampleTests/Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig"; sourceTree = ""; }; + EC04F70477194A5A6AC4C19B /* Pods-ExampleAppExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleAppExample.release.xcconfig"; path = "Target Support Files/Pods-ExampleAppExample/Pods-ExampleAppExample.release.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -54,7 +54,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8687B759D7148E93A7141AE2 /* Pods_ExampleAppExample_ExampleAppExampleTests.framework in Frameworks */, + C31ABF8F57C71FA25518C699 /* Pods_ExampleAppExample_ExampleAppExampleTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -62,7 +62,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C35B25D92894CFFC7F105772 /* Pods_ExampleAppExample.framework in Frameworks */, + EF82AAB8D7CDA185B168B4CE /* Pods_ExampleAppExample.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -105,8 +105,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 3AF333FDF0DC0B69B958057A /* Pods_ExampleAppExample.framework */, - 40417D6C0177F7DDDB680F61 /* Pods_ExampleAppExample_ExampleAppExampleTests.framework */, + 75262DEC733135018D6B2C7C /* Pods_ExampleAppExample.framework */, + 43FFFCB0400B47BFEE01056C /* Pods_ExampleAppExample_ExampleAppExampleTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -145,10 +145,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 2AC822BC56870058C79802CC /* Pods-ExampleAppExample.debug.xcconfig */, - 04E7B78608C671A705D5C68F /* Pods-ExampleAppExample.release.xcconfig */, - E61DE6C30649A291134AF714 /* Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig */, - E10DE97995006988255D071C /* Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig */, + 125DBE2C52B81A08A4D3D09B /* Pods-ExampleAppExample.debug.xcconfig */, + EC04F70477194A5A6AC4C19B /* Pods-ExampleAppExample.release.xcconfig */, + 17EB8284C14F4E99984AC2F2 /* Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig */, + 05868A8BF1FC288BEBB212D0 /* Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -160,11 +160,11 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExampleAppExampleTests" */; buildPhases = ( - 1AD0356DF8B35650ABED1A07 /* [CP] Check Pods Manifest.lock */, + DB3AFB7B250174089CEA8555 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - 9A917FE31D3C5CE529401049 /* [CP] Embed Pods Frameworks */, + CD69EC139D5FC9C37AA3D2FC /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -180,12 +180,12 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "ExampleAppExample" */; buildPhases = ( - 7F5EB9FE8462B243FF7FFE7E /* [CP] Check Pods Manifest.lock */, + 702D2827E8C928554D0EAA0F /* [CP] Check Pods Manifest.lock */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 51A1B50F12911CCD135E1235 /* [CP] Embed Pods Frameworks */, + 05336DA818B8D9AF17EF01E7 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -269,29 +269,7 @@ shellPath = /bin/sh; shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 1AD0356DF8B35650ABED1A07 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-ExampleAppExample-ExampleAppExampleTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 51A1B50F12911CCD135E1235 /* [CP] Embed Pods Frameworks */ = { + 05336DA818B8D9AF17EF01E7 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -308,7 +286,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExampleAppExample/Pods-ExampleAppExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 7F5EB9FE8462B243FF7FFE7E /* [CP] Check Pods Manifest.lock */ = { + 702D2827E8C928554D0EAA0F /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -330,7 +308,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 9A917FE31D3C5CE529401049 /* [CP] Embed Pods Frameworks */ = { + CD69EC139D5FC9C37AA3D2FC /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -347,6 +325,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ExampleAppExample-ExampleAppExampleTests/Pods-ExampleAppExample-ExampleAppExampleTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + DB3AFB7B250174089CEA8555 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-ExampleAppExample-ExampleAppExampleTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -380,7 +380,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E61DE6C30649A291134AF714 /* Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig */; + baseConfigurationReference = 17EB8284C14F4E99984AC2F2 /* Pods-ExampleAppExample-ExampleAppExampleTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -407,7 +407,7 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E10DE97995006988255D071C /* Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig */; + baseConfigurationReference = 05868A8BF1FC288BEBB212D0 /* Pods-ExampleAppExample-ExampleAppExampleTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; @@ -431,7 +431,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2AC822BC56870058C79802CC /* Pods-ExampleAppExample.debug.xcconfig */; + baseConfigurationReference = 125DBE2C52B81A08A4D3D09B /* Pods-ExampleAppExample.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -459,7 +459,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 04E7B78608C671A705D5C68F /* Pods-ExampleAppExample.release.xcconfig */; + baseConfigurationReference = EC04F70477194A5A6AC4C19B /* Pods-ExampleAppExample.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; diff --git a/example/ios/ExampleAppExample.xcworkspace/xcuserdata/matthias.xcuserdatad/UserInterfaceState.xcuserstate b/example/ios/ExampleAppExample.xcworkspace/xcuserdata/matthias.xcuserdatad/UserInterfaceState.xcuserstate index 547c60b3c1f5006da0aaadd2c1998401cf8cab7f..6e713f12493c1a44d6c9bba678576c06fdcae3e4 100644 GIT binary patch literal 68124 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 delta 5268 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 {