diff --git a/.github/workflows/deploy_appstore.yml b/.github/workflows/deploy_appstore.yml index 9616159d37..96f383c5d8 100644 --- a/.github/workflows/deploy_appstore.yml +++ b/.github/workflows/deploy_appstore.yml @@ -1,4 +1,4 @@ -name: Deploy Unstoppable to TestFlight +name: Deploy to TestFlight on: push: diff --git a/.github/workflows/deploy_dev.yml b/.github/workflows/deploy_dev.yml index 1dc85cd9c2..6fb12c10c1 100644 --- a/.github/workflows/deploy_dev.yml +++ b/.github/workflows/deploy_dev.yml @@ -1,11 +1,8 @@ -name: Deploy Unstoppable to Firebase +name: Deploy to Firebase on: push: branches: [ version/* ] - paths: - - 'Unstoppable/**' - - 'packages/**' workflow_dispatch: jobs: diff --git a/.github/workflows/deploy_stable_appstore.yml b/.github/workflows/deploy_stable_appstore.yml deleted file mode 100644 index 359d138263..0000000000 --- a/.github/workflows/deploy_stable_appstore.yml +++ /dev/null @@ -1,83 +0,0 @@ -name: Deploy Stable to TestFlight - -on: - push: - branches: [ master ] - workflow_dispatch: - -jobs: - build_and_deploy: - name: Build and Deploy to TestFlight - runs-on: macos-26 - - steps: - - name: Setup Xcode to 26.4 - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '26.4' - - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Ruby v3 - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.3.9 - bundler-cache: true - - - name: Setup Rust and Cargo - uses: dtolnay/rust-toolchain@stable - - - name: Install Lipo via Cargo - run: cargo install cargo-lipo - - - name: Add iOS targets to Rust - run: rustup target add aarch64-apple-ios x86_64-apple-ios - - - name: Run Fastlane (build, upload to TestFlight) - uses: maierj/fastlane-action@v3.1.0 - with: - lane: release_stable - env: - FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 - BUILD_NUMBER: ${{ github.run_number }} - APP_ID: ${{ secrets.APP_ID }} - GIT_AUTHORIZATION: ${{ secrets.GIT_AUTHORIZATION }} - TEMP_KEYCHAIN_USER: ${{ secrets.TEMP_KEYCHAIN_USER }} - TEMP_KEYCHAIN_PASSWORD: ${{ secrets.TEMP_KEYCHAIN_PASSWORD }} - APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }} - APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} - APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }} - MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} - - XCCONFIG_ARBISCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_ARBISCAN_API_KEYS }} - XCCONFIG_BASESCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_BASESCAN_API_KEYS }} - XCCONFIG_BSCSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_BSCSCAN_API_KEYS }} - XCCONFIG_CHAINALYSIS_API_KEY: ${{ secrets.XCCONFIG_PROD_CHAINALYSIS_API_KEY }} - XCCONFIG_DEFIYIELD_API_KEY: ${{ secrets.XCCONFIG_PROD_DEFIYIELD_API_KEY }} - XCCONFIG_ERA_ZKSYNC_API_KEYS: ${{ secrets.XCCONFIG_PROD_ERA_ZKSYNC_API_KEYS }} - XCCONFIG_ETHERSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_ETHERSCAN_API_KEYS }} - XCCONFIG_FTMSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_FTMSCAN_API_KEYS }} - XCCONFIG_GNOSISSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_GNOSISSCAN_API_KEYS }} - XCCONFIG_HASHDIT_API_KEY: ${{ secrets.XCCONFIG_PROD_HASHDIT_API_KEY }} - XCCONFIG_HS_PROVIDER_API_KEY: ${{ secrets.XCCONFIG_PROD_HS_PROVIDER_API_KEY }} - XCCONFIG_JUPITER_API_KEY: ${{ secrets.XCCONFIG_PROD_JUPITER_API_KEY }} - XCCONFIG_MERKLE_API_PATH: ${{ secrets.XCCONFIG_PROD_MERKLE_API_PATH }} - XCCONFIG_ONE_INCH_API_KEY: ${{ secrets.XCCONFIG_PROD_ONE_INCH_API_KEY }} - XCCONFIG_OPEN_SEA_API_KEY: ${{ secrets.XCCONFIG_PROD_OPEN_SEA_API_KEY }} - XCCONFIG_OPTIMISM_ETHERSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_OPTIMISM_ETHERSCAN_API_KEYS }} - XCCONFIG_POLYGONSCAN_API_KEYS: ${{ secrets.XCCONFIG_PROD_POLYGONSCAN_API_KEYS }} - XCCONFIG_SNOWTRACE_API_KEYS: ${{ secrets.XCCONFIG_PROD_SNOWTRACE_API_KEYS }} - XCCONFIG_SOLANA_ALCHEMY_API_KEYS: ${{ secrets.XCCONFIG_PROD_SOLANA_ALCHEMY_API_KEYS }} - XCCONFIG_TRONGRID_API_KEYS: ${{ secrets.XCCONFIG_PROD_TRONGRID_API_KEYS }} - XCCONFIG_TWITTER_BEARER_TOKEN: ${{ secrets.XCCONFIG_PROD_TWITTER_BEARER_TOKEN }} - XCCONFIG_UNSTOPPABLE_DOMAINS_API_KEY: ${{ secrets.XCCONFIG_PROD_UNSTOPPABLE_DOMAINS_API_KEY }} - XCCONFIG_USWAP_API_KEY: ${{ secrets.XCCONFIG_PROD_USWAP_API_KEY }} - XCCONFIG_WALLET_CONNECT_V2_PROJECT_KEY: ${{ secrets.XCCONFIG_PROD_WALLET_CONNECT_V2_PROJECT_KEY }} - - XCCONFIG_MAYA_AFFILIATE: ${{ secrets.XCCONFIG_PROD_MAYA_AFFILIATE }} - XCCONFIG_MAYA_AFFILIATE_BPS: ${{ secrets.XCCONFIG_PROD_MAYA_AFFILIATE_BPS }} - XCCONFIG_ONE_INCH_COMMISSION: ${{ secrets.XCCONFIG_PROD_ONE_INCH_COMMISSION }} - XCCONFIG_ONE_INCH_COMMISSION_ADDRESS: ${{ secrets.XCCONFIG_PROD_ONE_INCH_COMMISSION_ADDRESS }} - XCCONFIG_THORCHAIN_AFFILIATE: ${{ secrets.XCCONFIG_PROD_THORCHAIN_AFFILIATE }} - XCCONFIG_THORCHAIN_AFFILIATE_BPS: ${{ secrets.XCCONFIG_PROD_THORCHAIN_AFFILIATE_BPS }} diff --git a/.github/workflows/deploy_stable_dev.yml b/.github/workflows/deploy_stable_dev.yml deleted file mode 100644 index 2f0184d959..0000000000 --- a/.github/workflows/deploy_stable_dev.yml +++ /dev/null @@ -1,95 +0,0 @@ -name: Deploy Stable to Firebase - -on: - push: - branches: [ version/* ] - paths: - - 'Stable/**' - - 'packages/**' - workflow_dispatch: - -jobs: - build_and_deploy: - name: Build and Deploy to Firebase - runs-on: macos-26 - - steps: - - name: Setup Xcode to 26.4 - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: '26.4' - - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Setup Ruby v3 - uses: ruby/setup-ruby@v1 - with: - ruby-version: 3.3.9 - bundler-cache: true - - - name: Setup Rust and Cargo - uses: dtolnay/rust-toolchain@stable - - - name: Install Lipo via Cargo - run: cargo install cargo-lipo - - - name: Add iOS targets to Rust - run: rustup target add aarch64-apple-ios x86_64-apple-ios - - - name: Run Fastlane (build, upload to AppCenter) - uses: maierj/fastlane-action@v3.1.0 - with: - lane: dev_stable - env: - FASTLANE_XCODEBUILD_SETTINGS_TIMEOUT: 120 - BUILD_NUMBER: ${{ github.run_number }} - APP_ID: ${{ secrets.APP_ID }} - GIT_AUTHORIZATION: ${{ secrets.GIT_AUTHORIZATION }} - TEMP_KEYCHAIN_USER: ${{ secrets.TEMP_KEYCHAIN_USER }} - TEMP_KEYCHAIN_PASSWORD: ${{ secrets.TEMP_KEYCHAIN_PASSWORD }} - APPLE_ISSUER_ID: ${{ secrets.APPLE_ISSUER_ID }} - APPLE_KEY_ID: ${{ secrets.APPLE_KEY_ID }} - APPLE_KEY_CONTENT: ${{ secrets.APPLE_KEY_CONTENT }} - MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} - FIREBASE_CREDENTIALS: ${{ secrets.FIREBASE_CREDENTIALS }} - - XCCONFIG_ARBISCAN_API_KEYS: ${{ secrets.XCCONFIG_DEV_ARBISCAN_API_KEYS }} - XCCONFIG_BASESCAN_API_KEYS: ${{ secrets.XCCONFIG_DEV_BASESCAN_API_KEYS }} - XCCONFIG_BSCSCAN_API_KEYS: ${{ secrets.XCCONFIG_DEV_BSCSCAN_API_KEYS }} - XCCONFIG_CHAINALYSIS_API_KEY: ${{ secrets.XCCONFIG_DEV_CHAINALYSIS_API_KEY }} - XCCONFIG_DEFIYIELD_API_KEY: ${{ secrets.XCCONFIG_DEV_DEFIYIELD_API_KEY }} - XCCONFIG_ERA_ZKSYNC_API_KEYS: ${{ secrets.XCCONFIG_DEV_ERA_ZKSYNC_API_KEYS }} - XCCONFIG_ETHERSCAN_API_KEYS: ${{ secrets.XCCONFIG_DEV_ETHERSCAN_API_KEYS }} - XCCONFIG_FTMSCAN_API_KEYS: ${{ secrets.XCCONFIG_DEV_FTMSCAN_API_KEYS }} - XCCONFIG_GNOSISSCAN_API_KEYS: ${{ secrets.XCCONFIG_DEV_GNOSISSCAN_API_KEYS }} - XCCONFIG_HASHDIT_API_KEY: ${{ secrets.XCCONFIG_DEV_HASHDIT_API_KEY }} - XCCONFIG_HS_PROVIDER_API_KEY: ${{ secrets.XCCONFIG_DEV_HS_PROVIDER_API_KEY }} - XCCONFIG_JUPITER_API_KEY: ${{ secrets.XCCONFIG_DEV_JUPITER_API_KEY }} - XCCONFIG_MERKLE_API_PATH: ${{ secrets.XCCONFIG_DEV_MERKLE_API_PATH }} - XCCONFIG_ONE_INCH_API_KEY: ${{ secrets.XCCONFIG_DEV_ONE_INCH_API_KEY }} - XCCONFIG_OPEN_SEA_API_KEY: ${{ secrets.XCCONFIG_DEV_OPEN_SEA_API_KEY }} - XCCONFIG_OPTIMISM_ETHERSCAN_API_KEYS: ${{ secrets.XCCONFIG_DEV_OPTIMISM_ETHERSCAN_API_KEYS }} - XCCONFIG_POLYGONSCAN_API_KEYS: ${{ secrets.XCCONFIG_DEV_POLYGONSCAN_API_KEYS }} - XCCONFIG_SNOWTRACE_API_KEYS: ${{ secrets.XCCONFIG_DEV_SNOWTRACE_API_KEYS }} - XCCONFIG_SOLANA_ALCHEMY_API_KEYS: ${{ secrets.XCCONFIG_DEV_SOLANA_ALCHEMY_API_KEYS }} - XCCONFIG_TRONGRID_API_KEYS: ${{ secrets.XCCONFIG_DEV_TRONGRID_API_KEYS }} - XCCONFIG_TWITTER_BEARER_TOKEN: ${{ secrets.XCCONFIG_DEV_TWITTER_BEARER_TOKEN }} - XCCONFIG_UNSTOPPABLE_DOMAINS_API_KEY: ${{ secrets.XCCONFIG_DEV_UNSTOPPABLE_DOMAINS_API_KEY }} - XCCONFIG_USWAP_API_KEY: ${{ secrets.XCCONFIG_DEV_USWAP_API_KEY }} - XCCONFIG_WALLET_CONNECT_V2_PROJECT_KEY: ${{ secrets.XCCONFIG_DEV_WALLET_CONNECT_V2_PROJECT_KEY }} - - XCCONFIG_MAYA_AFFILIATE: ${{ secrets.XCCONFIG_DEV_MAYA_AFFILIATE }} - XCCONFIG_MAYA_AFFILIATE_BPS: ${{ secrets.XCCONFIG_DEV_MAYA_AFFILIATE_BPS }} - XCCONFIG_ONE_INCH_COMMISSION: ${{ secrets.XCCONFIG_DEV_ONE_INCH_COMMISSION }} - XCCONFIG_ONE_INCH_COMMISSION_ADDRESS: ${{ secrets.XCCONFIG_DEV_ONE_INCH_COMMISSION_ADDRESS }} - XCCONFIG_THORCHAIN_AFFILIATE: ${{ secrets.XCCONFIG_DEV_THORCHAIN_AFFILIATE }} - XCCONFIG_THORCHAIN_AFFILIATE_BPS: ${{ secrets.XCCONFIG_DEV_THORCHAIN_AFFILIATE_BPS }} - - - name: Upload dSYM files - uses: actions/upload-artifact@v4 - if: success() - with: - name: dsym-files-build-${{ github.run_number }} - path: "**/*.dSYM.zip" - retention-days: 90 diff --git a/.github/workflows/notify_telegram.yml b/.github/workflows/notify_telegram.yml index a97fd211b4..84de84e1ce 100644 --- a/.github/workflows/notify_telegram.yml +++ b/.github/workflows/notify_telegram.yml @@ -6,7 +6,6 @@ on: jobs: notify: - if: ${{ !startsWith(github.head_ref, 'l10n_version/') }} runs-on: ubuntu-latest steps: diff --git a/Stable/AppTests/AppTests.swift b/Stable/AppTests/AppTests.swift deleted file mode 100644 index 8a14eb9c7f..0000000000 --- a/Stable/AppTests/AppTests.swift +++ /dev/null @@ -1,7 +0,0 @@ -import Testing - -struct AppTests { - @Test func example() async throws { - // Write your test here and use APIs like `#expect(...)` to check expected conditions. - } -} diff --git a/Stable/Stable.xcodeproj/project.pbxproj b/Stable/Stable.xcodeproj/project.pbxproj deleted file mode 100644 index 361755ca33..0000000000 --- a/Stable/Stable.xcodeproj/project.pbxproj +++ /dev/null @@ -1,785 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 77; - objects = { - -/* Begin PBXBuildFile section */ - D3424CD02FB344D300A92B6A /* UserInterface in Frameworks */ = {isa = PBXBuildFile; productRef = D3424CCF2FB344D300A92B6A /* UserInterface */; }; - D3424CD52FB3557C00A92B6A /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = D3424CD42FB3557C00A92B6A /* Kingfisher */; }; - D35E0F6A2FB1D3B500E9E863 /* WalletCore in Frameworks */ = {isa = PBXBuildFile; productRef = D35E0F692FB1D3B500E9E863 /* WalletCore */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - D35E0F732FB1D4AA00E9E863 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D35E0F4C2FB1D02C00E9E863 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D35E0F532FB1D02C00E9E863; - remoteInfo = App; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - D35E0F542FB1D02C00E9E863 /* Stable D.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Stable D.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - D35E0F6F2FB1D4AA00E9E863 /* AppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - D3425E6C2FB4820600A92B6A /* Exceptions for "Stable" folder in "App" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - Supporting/Info.plist, - ); - target = D35E0F532FB1D02C00E9E863 /* App */; - }; -/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ - -/* Begin PBXFileSystemSynchronizedRootGroup section */ - D35E0F562FB1D02C00E9E863 /* Stable */ = { - isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - D3425E6C2FB4820600A92B6A /* Exceptions for "Stable" folder in "App" target */, - ); - path = Stable; - sourceTree = ""; - }; - D35E0F702FB1D4AA00E9E863 /* AppTests */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = AppTests; - sourceTree = ""; - }; -/* End PBXFileSystemSynchronizedRootGroup section */ - -/* Begin PBXFrameworksBuildPhase section */ - D35E0F512FB1D02C00E9E863 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D3424CD52FB3557C00A92B6A /* Kingfisher in Frameworks */, - D35E0F6A2FB1D3B500E9E863 /* WalletCore in Frameworks */, - D3424CD02FB344D300A92B6A /* UserInterface in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D35E0F6C2FB1D4AA00E9E863 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - D35E0F4B2FB1D02C00E9E863 = { - isa = PBXGroup; - children = ( - D35E0F562FB1D02C00E9E863 /* Stable */, - D35E0F702FB1D4AA00E9E863 /* AppTests */, - D35E0F682FB1D3B500E9E863 /* Frameworks */, - D35E0F552FB1D02C00E9E863 /* Products */, - ); - sourceTree = ""; - }; - D35E0F552FB1D02C00E9E863 /* Products */ = { - isa = PBXGroup; - children = ( - D35E0F542FB1D02C00E9E863 /* Stable D.app */, - D35E0F6F2FB1D4AA00E9E863 /* AppTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - D35E0F682FB1D3B500E9E863 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - D35E0F532FB1D02C00E9E863 /* App */ = { - isa = PBXNativeTarget; - buildConfigurationList = D35E0F5F2FB1D02E00E9E863 /* Build configuration list for PBXNativeTarget "App" */; - buildPhases = ( - D35E0F502FB1D02C00E9E863 /* Sources */, - D35E0F512FB1D02C00E9E863 /* Frameworks */, - D35E0F522FB1D02C00E9E863 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - fileSystemSynchronizedGroups = ( - D35E0F562FB1D02C00E9E863 /* Stable */, - ); - name = App; - packageProductDependencies = ( - D35E0F692FB1D3B500E9E863 /* WalletCore */, - D3424CCF2FB344D300A92B6A /* UserInterface */, - D3424CD42FB3557C00A92B6A /* Kingfisher */, - ); - productName = Stable; - productReference = D35E0F542FB1D02C00E9E863 /* Stable D.app */; - productType = "com.apple.product-type.application"; - }; - D35E0F6E2FB1D4AA00E9E863 /* AppTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = D35E0F752FB1D4AA00E9E863 /* Build configuration list for PBXNativeTarget "AppTests" */; - buildPhases = ( - D35E0F6B2FB1D4AA00E9E863 /* Sources */, - D35E0F6C2FB1D4AA00E9E863 /* Frameworks */, - D35E0F6D2FB1D4AA00E9E863 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - D35E0F742FB1D4AA00E9E863 /* PBXTargetDependency */, - ); - fileSystemSynchronizedGroups = ( - D35E0F702FB1D4AA00E9E863 /* AppTests */, - ); - name = AppTests; - packageProductDependencies = ( - ); - productName = AppTests; - productReference = D35E0F6F2FB1D4AA00E9E863 /* AppTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - D35E0F4C2FB1D02C00E9E863 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 2620; - LastUpgradeCheck = 2620; - TargetAttributes = { - D35E0F532FB1D02C00E9E863 = { - CreatedOnToolsVersion = 26.2; - }; - D35E0F6E2FB1D4AA00E9E863 = { - CreatedOnToolsVersion = 26.2; - TestTargetID = D35E0F532FB1D02C00E9E863; - }; - }; - }; - buildConfigurationList = D35E0F4F2FB1D02C00E9E863 /* Build configuration list for PBXProject "Stable" */; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = D35E0F4B2FB1D02C00E9E863; - minimizedProjectReferenceProxies = 1; - packageReferences = ( - D3424CD32FB3557C00A92B6A /* XCRemoteSwiftPackageReference "Kingfisher" */, - ); - preferredProjectObjectVersion = 77; - productRefGroup = D35E0F552FB1D02C00E9E863 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - D35E0F532FB1D02C00E9E863 /* App */, - D35E0F6E2FB1D4AA00E9E863 /* AppTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - D35E0F522FB1D02C00E9E863 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D35E0F6D2FB1D4AA00E9E863 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - D35E0F502FB1D02C00E9E863 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D35E0F6B2FB1D4AA00E9E863 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - D35E0F742FB1D4AA00E9E863 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = D35E0F532FB1D02C00E9E863 /* App */; - targetProxy = D35E0F732FB1D4AA00E9E863 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - D35E0F5D2FB1D02E00E9E863 /* Debug-Dev */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - 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; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = HC4MCAXJ66; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - 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 = 18.0; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Debug-Dev"; - }; - D35E0F5E2FB1D02E00E9E863 /* Release-Dev */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - 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; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = HC4MCAXJ66; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - 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 = 18.0; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_EMIT_LOC_STRINGS = YES; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Release-Dev"; - }; - D35E0F602FB1D02E00E9E863 /* Debug-Dev */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-Dev"; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CURRENT_PROJECT_VERSION = 1; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Stable/Supporting/Info.plist; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.horizontalsystems.stable.dev; - PRODUCT_NAME = "Stable D"; - PROVISIONING_PROFILE_SPECIFIER = "match Development io.horizontalsystems.stable.dev"; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - }; - name = "Debug-Dev"; - }; - D35E0F612FB1D02E00E9E863 /* Release-Dev */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-Dev"; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_IDENTITY = "Apple Distribution"; - CURRENT_PROJECT_VERSION = 1; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Stable/Supporting/Info.plist; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.horizontalsystems.stable.dev; - PRODUCT_NAME = "Stable D"; - PROVISIONING_PROFILE_SPECIFIER = "match AdHoc io.horizontalsystems.stable.dev"; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - }; - name = "Release-Dev"; - }; - D35E0F762FB1D4AA00E9E863 /* Debug-Dev */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = HC4MCAXJ66; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.horizontalsystems.AppTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/App"; - }; - name = "Debug-Dev"; - }; - D35E0F772FB1D4AA00E9E863 /* Release-Dev */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = HC4MCAXJ66; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.horizontalsystems.AppTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/App"; - }; - name = "Release-Dev"; - }; - D35E0F782FB1D50A00E9E863 /* Debug-Prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - 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; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = HC4MCAXJ66; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - 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 = 18.0; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Debug-Prod"; - }; - D35E0F792FB1D50A00E9E863 /* Debug-Prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CURRENT_PROJECT_VERSION = 1; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Stable/Supporting/Info.plist; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.horizontalsystems.stable; - PRODUCT_NAME = Stable; - PROVISIONING_PROFILE_SPECIFIER = "match Development io.horizontalsystems.stable"; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - }; - name = "Debug-Prod"; - }; - D35E0F7A2FB1D50A00E9E863 /* Debug-Prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = HC4MCAXJ66; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.horizontalsystems.AppTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/App"; - }; - name = "Debug-Prod"; - }; - D35E0F7B2FB1D51200E9E863 /* Release-Prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - 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; - CODE_SIGN_STYLE = Manual; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = HC4MCAXJ66; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - 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 = 18.0; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_EMIT_LOC_STRINGS = YES; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = "Release-Prod"; - }; - D35E0F7C2FB1D51200E9E863 /* Release-Prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_IDENTITY = "Apple Distribution"; - CURRENT_PROJECT_VERSION = 1; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Stable/Supporting/Info.plist; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.horizontalsystems.stable; - PRODUCT_NAME = Stable; - PROVISIONING_PROFILE_SPECIFIER = "match AppStore io.horizontalsystems.stable"; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SUPPORTS_MACCATALYST = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - }; - name = "Release-Prod"; - }; - D35E0F7D2FB1D51200E9E863 /* Release-Prod */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = HC4MCAXJ66; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = io.horizontalsystems.AppTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRING_CATALOG_GENERATE_SYMBOLS = NO; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SUPPORTS_MACCATALYST = NO; - SWIFT_APPROACHABLE_CONCURRENCY = YES; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = 1; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/App.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/App"; - }; - name = "Release-Prod"; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - D35E0F4F2FB1D02C00E9E863 /* Build configuration list for PBXProject "Stable" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D35E0F5D2FB1D02E00E9E863 /* Debug-Dev */, - D35E0F782FB1D50A00E9E863 /* Debug-Prod */, - D35E0F5E2FB1D02E00E9E863 /* Release-Dev */, - D35E0F7B2FB1D51200E9E863 /* Release-Prod */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug-Dev"; - }; - D35E0F5F2FB1D02E00E9E863 /* Build configuration list for PBXNativeTarget "App" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D35E0F602FB1D02E00E9E863 /* Debug-Dev */, - D35E0F792FB1D50A00E9E863 /* Debug-Prod */, - D35E0F612FB1D02E00E9E863 /* Release-Dev */, - D35E0F7C2FB1D51200E9E863 /* Release-Prod */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug-Dev"; - }; - D35E0F752FB1D4AA00E9E863 /* Build configuration list for PBXNativeTarget "AppTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D35E0F762FB1D4AA00E9E863 /* Debug-Dev */, - D35E0F7A2FB1D50A00E9E863 /* Debug-Prod */, - D35E0F772FB1D4AA00E9E863 /* Release-Dev */, - D35E0F7D2FB1D51200E9E863 /* Release-Prod */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = "Debug-Dev"; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - D3424CD32FB3557C00A92B6A /* XCRemoteSwiftPackageReference "Kingfisher" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/onevcat/Kingfisher.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 8.9.0; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - D3424CCF2FB344D300A92B6A /* UserInterface */ = { - isa = XCSwiftPackageProductDependency; - productName = UserInterface; - }; - D3424CD42FB3557C00A92B6A /* Kingfisher */ = { - isa = XCSwiftPackageProductDependency; - package = D3424CD32FB3557C00A92B6A /* XCRemoteSwiftPackageReference "Kingfisher" */; - productName = Kingfisher; - }; - D35E0F692FB1D3B500E9E863 /* WalletCore */ = { - isa = XCSwiftPackageProductDependency; - productName = WalletCore; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = D35E0F4C2FB1D02C00E9E863 /* Project object */; -} diff --git a/Stable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Dev.xcscheme b/Stable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Dev.xcscheme deleted file mode 100644 index 5c593de275..0000000000 --- a/Stable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Dev.xcscheme +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Stable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Prod.xcscheme b/Stable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Prod.xcscheme deleted file mode 100644 index c77e2b61cc..0000000000 --- a/Stable/Stable.xcodeproj/xcshareddata/xcschemes/Stable-Prod.xcscheme +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Stable/Stable/App/AppConfig.swift b/Stable/Stable/App/AppConfig.swift deleted file mode 100644 index ee256e3c77..0000000000 --- a/Stable/Stable/App/AppConfig.swift +++ /dev/null @@ -1,218 +0,0 @@ -import Foundation -import MarketKit -import UIKit - -enum AppConfig { - static let label = "io.horizontalsystems.unstoppable" - static let backupSalt = "unstoppable" - - static let companyName = "Horizontal Systems" - static let reportEmail = "support.unstoppable@protonmail.com" - static let companyWebPageLink = "https://horizontalsystems.io" - static let appWebPageLink = "https://unstoppable.money" - static let analyticsLink = "https://unstoppable.money/analytics" - static let privacyPolicyLink = "https://unstoppable.money/privacy-policy" - static let appleTermsOfServiceLink = "https://www.apple.com/legal/internet-services/itunes/dev/stdeula" - static let nymVpnLink = "https://nymtechnologies.pxf.io/N9vnr1" - static let appGitHubAccount = "horizontalsystems" - static let appGitHubRepository = "unstoppable-wallet-ios" - static let appTwitterAccount = "unstoppablebyhs" - static let appTelegramAccount = "unstoppable_announcements" - static let appTelegramSupportSlug = "-uTI4HwKZWNi" - static let appTokenTelegramAccount = "BeUnstoppable_bot" - static let mempoolSpaceUrl = "https://mempool.space" - - static var appVersion: String { - Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String - } - - static var appBuild: String { - Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String - } - - static var appId: String? { - UIDevice.current.identifierForVendor?.uuidString - } - - static var appName: String { - (Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as? String) ?? "" - } - - // static var showBuildNumber: Bool { - // AppEnvironment.config.showBuildNumber - // } - - // static var showTestSwitchers: Bool { - // AppEnvironment.config.showTestSwitchers - // } - - // static var marketApiUrl: String { - // AppEnvironment.config.marketApiUrl - // } - - // static var swapApiUrl: String { - // AppEnvironment.config.swapApiUrl - // } - - static var etherscanKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "EtherscanApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var arbiscanKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "ArbiscanApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var gnosisscanKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "GnosisscanApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var ftmscanKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "FtmscanApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var optimismEtherscanKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "OptimismEtherscanApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var basescanKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "BasescanApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var eraZkSyncKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "EraZkSyncApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var bscscanKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "BscscanApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var polygonscanKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "PolygonscanApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var snowtraceKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "SnowtraceApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var twitterBearerToken: String? { - (Bundle.main.object(forInfoDictionaryKey: "TwitterBearerToken") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var hsProviderApiKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "HsProviderApiKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var tronGridApiKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "TronGridApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var solanaAlchemyApiKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "SolanaAlchemyApiKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var solanaAlchemyApiKeys: [String] { - ((Bundle.main.object(forInfoDictionaryKey: "SolanaAlchemyApiKeys") as? String) ?? "").components(separatedBy: ",") - } - - static var walletConnectV2ProjectKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "WallectConnectV2ProjectKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var unstoppableDomainsApiKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "UnstoppableDomainsApiKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var oneInchApiKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "OneInchApiKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var pimlicoApiKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "PimlicoApiKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var pimlicoSponsorshipPolicyId: String? { - (Bundle.main.object(forInfoDictionaryKey: "PimlicoSponsorshipPolicyId") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var gasFreeApiKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "GasFreeApiKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var gasFreeApiSecret: String? { - (Bundle.main.object(forInfoDictionaryKey: "GasFreeApiSecret") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var oneInchCommissionAddress: String? { - (Bundle.main.object(forInfoDictionaryKey: "OneInchCommissionAddress") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var oneInchCommission: Decimal? { - (Bundle.main.object(forInfoDictionaryKey: "OneInchCommission") as? String).flatMap { - $0.isEmpty ? nil : Decimal(string: $0, locale: Locale(identifier: "en_US_POSIX")) - } - } - - static var thorchainAffiliate: String? { - (Bundle.main.object(forInfoDictionaryKey: "ThorchainAffiliate") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var thorchainAffiliateBps: Int? { - (Bundle.main.object(forInfoDictionaryKey: "ThorchainAffiliateBps") as? String).flatMap { $0.isEmpty ? nil : Int($0) } - } - - static var mayaAffiliate: String? { - (Bundle.main.object(forInfoDictionaryKey: "MayaAffiliate") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var mayaAffiliateBps: Int? { - (Bundle.main.object(forInfoDictionaryKey: "MayaAffiliateBps") as? String).flatMap { $0.isEmpty ? nil : Int($0) } - } - - static var uswapApiKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "USwapApiKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - static var jupiterApiKey: String? { - (Bundle.main.object(forInfoDictionaryKey: "JupiterApiKey") as? String).flatMap { $0.isEmpty ? nil : $0 } - } - - // static var referralAppServerUrl: String { - // AppEnvironment.config.referralAppServerUrl - // } - - static var defaultWords: String { - Bundle.main.object(forInfoDictionaryKey: "DefaultWords") as? String ?? "" - } - - static var defaultPassphrase: String { - Bundle.main.object(forInfoDictionaryKey: "DefaultPassphrase") as? String ?? "" - } - - static var defaultWatchAddress: String? { - Bundle.main.object(forInfoDictionaryKey: "DefaultWatchAddress") as? String - } - - static var sharedCloudContainer: String? { - Bundle.main.object(forInfoDictionaryKey: "SharedCloudContainerId") as? String - } - - static var privateCloudContainer: String? { - Bundle.main.object(forInfoDictionaryKey: "PrivateCloudContainerId") as? String - } - - static var openSeaApiKey: String { - (Bundle.main.object(forInfoDictionaryKey: "OpenSeaApiKey") as? String) ?? "" - } - - static var chainalysisApiKey: String { - (Bundle.main.object(forInfoDictionaryKey: "ChainalysisApiKey") as? String) ?? "" - } - - static var merkleApiPath: String { - (Bundle.main.object(forInfoDictionaryKey: "MerkleApiPath") as? String) ?? "" - } - - static var hashDitApiKey: String { - (Bundle.main.object(forInfoDictionaryKey: "HashDitApiKey") as? String) ?? "" - } -} diff --git a/Stable/Stable/App/AppTheme.swift b/Stable/Stable/App/AppTheme.swift deleted file mode 100644 index a03ce5f548..0000000000 --- a/Stable/Stable/App/AppTheme.swift +++ /dev/null @@ -1,26 +0,0 @@ -import SwiftUI - -enum AppTheme: String, CaseIterable, Identifiable { - case system, light, dark - - static let storageKey = "appTheme" - static let `default`: AppTheme = .system - - var id: String { rawValue } - - var title: LocalizedStringResource { - switch self { - case .system: "theme.system" - case .light: "theme.light" - case .dark: "theme.dark" - } - } - - var colorScheme: ColorScheme? { - switch self { - case .system: nil - case .light: .light - case .dark: .dark - } - } -} diff --git a/Stable/Stable/App/StableApp.swift b/Stable/Stable/App/StableApp.swift deleted file mode 100644 index 56d838c153..0000000000 --- a/Stable/Stable/App/StableApp.swift +++ /dev/null @@ -1,34 +0,0 @@ -import SwiftUI - -@main -struct StableApp: App { - @AppStorage(AppTheme.storageKey) private var theme: AppTheme = .default - - private let initResult: Result - - init() { - do { - try Core.initApp() - - // Core.shared.appManager.didFinishLaunching() - - initResult = .success(()) - } catch { - initResult = .failure(error) - } - } - - var body: some Scene { - WindowGroup { - Group { - switch initResult { - case .success: - AppView() - case let .failure(error): - LaunchErrorView(error: error) - } - } - .preferredColorScheme(theme.colorScheme) - } - } -} diff --git a/Stable/Stable/Configuration/Config.template.xcconfig b/Stable/Stable/Configuration/Config.template.xcconfig deleted file mode 100644 index fdf087d206..0000000000 --- a/Stable/Stable/Configuration/Config.template.xcconfig +++ /dev/null @@ -1,37 +0,0 @@ -ARBISCAN_API_KEYS = -BASESCAN_API_KEYS = -BSCSCAN_API_KEYS = -CHAINALYSIS_API_KEY = -DEFIYIELD_API_KEY = -ERA_ZKSYNC_API_KEYS = -ETHERSCAN_API_KEYS = -FTMSCAN_API_KEYS = -GASFREE_API_KEY = -GASFREE_API_SECRET = -GNOSISSCAN_API_KEYS = -HASHDIT_API_KEY = -HS_PROVIDER_API_KEY = -JUPITER_API_KEY = -MERKLE_API_PATH = -ONE_INCH_API_KEY = -OPEN_SEA_API_KEY = -OPTIMISM_ETHERSCAN_API_KEYS = -PIMLICO_API_KEY = -PIMLICO_SPONSORSHIP_POLICY_ID = -POLYGONSCAN_API_KEYS = -SNOWTRACE_API_KEYS = -SOLANA_ALCHEMY_API_KEYS = -TRONGRID_API_KEYS = -TWITTER_BEARER_TOKEN = -UNSTOPPABLE_DOMAINS_API_KEY = -USWAP_API_KEY = -WALLET_CONNECT_V2_PROJECT_KEY = - -MAYA_AFFILIATE = -MAYA_AFFILIATE_BPS = -ONE_INCH_COMMISSION = -ONE_INCH_COMMISSION_ADDRESS = -THORCHAIN_AFFILIATE = -THORCHAIN_AFFILIATE_BPS = - -DEFAULT_WORDS = diff --git a/Stable/Stable/Core/Core.swift b/Stable/Stable/Core/Core.swift deleted file mode 100644 index 1d642ab935..0000000000 --- a/Stable/Stable/Core/Core.swift +++ /dev/null @@ -1,39 +0,0 @@ -import Foundation -import GRDB -import HsToolKit -import MarketKit -import WalletCore - -class Core { - private static let keychainService = "io.horizontalsystems.stable" - private static let dbName = "stable.sqlite" - - static var instance: Core? - - static func initApp() throws { - let core = try Core() - instance = core - } - - static var shared: Core { - instance! - } - - let logger: Logger - - let userDefaultsStorage: UserDefaultsStorage - let keychainStorage: KeychainStorage - - // let marketKit: MarketKit.Kit - - init() throws { - let databaseDirectoryURL = try FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true) - let databaseURL = databaseDirectoryURL.appendingPathComponent(Self.dbName) - let dbPool = try DatabasePool(path: databaseURL.path) - - logger = Logger(minLogLevel: .error) - - userDefaultsStorage = UserDefaultsStorage() - keychainStorage = KeychainStorage(service: Self.keychainService, logger: logger) - } -} diff --git a/Stable/Stable/Modules/App/AppView.swift b/Stable/Stable/Modules/App/AppView.swift deleted file mode 100644 index 349dcb3995..0000000000 --- a/Stable/Stable/Modules/App/AppView.swift +++ /dev/null @@ -1,39 +0,0 @@ -import SwiftUI - -struct AppView: View { - private static let introShownKey = "introShown" - - @AppStorage(Self.introShownKey) private var introShown = false - - @State private var state: ViewState - - init() { - let introShown = UserDefaults.standard.bool(forKey: Self.introShownKey) - _state = State(initialValue: introShown ? .setupWallet : .intro) - } - - var body: some View { - ZStack { - switch state { - case .intro: - IntroView { - introShown = true - state = .setupWallet - } - case .setupWallet: - SetupWalletView() - case .main: - MainView() - } - } - .animation(.default, value: state) - } -} - -extension AppView { - enum ViewState { - case intro - case setupWallet - case main - } -} diff --git a/Stable/Stable/Modules/Intro/IntroView.swift b/Stable/Stable/Modules/Intro/IntroView.swift deleted file mode 100644 index 9ac752469e..0000000000 --- a/Stable/Stable/Modules/Intro/IntroView.swift +++ /dev/null @@ -1,100 +0,0 @@ -import SwiftUI - -struct IntroView: View { - var onFinish: () -> Void - - @State private var scrollProgress: CGFloat = 0 - @State private var scrolledID: Int? = 0 - - private let slides: [Slide] = [ - .init(title: "intro.slide1.title", subtitle: "intro.slide1.subtitle", image: "intro1"), - .init(title: "intro.slide2.title", subtitle: "intro.slide2.subtitle", image: "intro2"), - .init(title: "intro.slide3.title", subtitle: "intro.slide3.subtitle", image: "intro3"), - ] - - var body: some View { - ThemeView { - GeometryReader { geo in - let width = geo.size.width - - ZStack { - ForEach(Array(slides.enumerated()), id: \.element.id) { index, _ in - Image(slides[index].image) - .resizable() - .aspectRatio(contentMode: .fill) - .opacity(opacity(for: index, progress: scrollProgress)) - } - - ScrollView(.horizontal, showsIndicators: false) { - HStack(spacing: 0) { - ForEach(Array(slides.enumerated()), id: \.element.id) { index, slide in - VStack { - Spacer() - - VStack(spacing: 12) { - ThemeText(key: slide.title, style: .title3B) - .multilineTextAlignment(.center) - - ThemeText(key: slide.subtitle, style: .subhead, color: .themeGray) - .multilineTextAlignment(.center) - } - .padding(.horizontal, 48) - .padding(.bottom, 162) - } - .frame(width: width) - .id(index) - } - } - .scrollTargetLayout() - } - .scrollTargetBehavior(.paging) - .scrollPosition(id: $scrolledID) - .onScrollGeometryChange(for: CGFloat.self) { geometry in - geometry.contentOffset.x - } action: { _, newOffset in - guard width > 0 else { return } - scrollProgress = newOffset / width - } - - VStack(spacing: 48) { - Spacer() - - HStack(spacing: 12) { - ForEach(0 ..< slides.count, id: \.self) { index in - Capsule() - .fill((scrolledID ?? 0) == index ? Color.themeLime : Color.andy) - .frame(size: 10) - .animation(.spring(response: 0.3), value: scrolledID) - .onTapGesture { - withAnimation { - scrolledID = index - } - } - } - } - - ThemeButton(text: "intro.get_started") { - onFinish() - } - .padding(.horizontal, 24) - .padding(.bottom, 16) - } - } - } - } - } - - private func opacity(for index: Int, progress: CGFloat) -> Double { - let distance = abs(progress - CGFloat(index)) - return Double(max(0, 1 - distance)) - } -} - -extension IntroView { - struct Slide: Identifiable { - let id = UUID() - let title: LocalizedStringResource - let subtitle: LocalizedStringResource - let image: String - } -} diff --git a/Stable/Stable/Modules/Launch/LaunchErrorView.swift b/Stable/Stable/Modules/Launch/LaunchErrorView.swift deleted file mode 100644 index 820fa4b6a3..0000000000 --- a/Stable/Stable/Modules/Launch/LaunchErrorView.swift +++ /dev/null @@ -1,43 +0,0 @@ -import MessageUI -import SwiftUI -import UserInterface - -struct LaunchErrorView: View { - let error: Error - - @State private var mailPresented = false - - var body: some View { - ThemeView { - VStack(spacing: 32) { - ThemeImage("warning", size: 48) - - ThemeText(key: "launch.failed_to_launch", style: .body, color: .themeGray) - .multilineTextAlignment(.center) - - ThemeButton(text: "launch.failed_to_launch.report") { - if MFMailComposeViewController.canSendMail() { - mailPresented = true - } else { - CopyHelper.copyAndNotify(value: errorString) - } - } - } - .padding(.horizontal, 48) - } - .sheet(isPresented: $mailPresented) { - MailView( - recipient: AppConfig.reportEmail, - body: errorString, - isPresented: $mailPresented - ) - } - } - - var errorString: String { - """ - Raw Error: \(error) - Localized Description: \(error.localizedDescription) - """ - } -} diff --git a/Stable/Stable/Modules/Main/MainView.swift b/Stable/Stable/Modules/Main/MainView.swift deleted file mode 100644 index d87542afdc..0000000000 --- a/Stable/Stable/Modules/Main/MainView.swift +++ /dev/null @@ -1,48 +0,0 @@ -import SwiftUI - -struct MainView: View { - @State private var showSettings: Bool = false - - var body: some View { - ThemeNavigationStack { - ThemeView(style: .topGradient) { - ScrollView { - VStack(spacing: 0) { - ThemeCard(cornerRadius: 32) { - Text(verbatim: "Main") - .frame(maxHeight: .infinity) - } - .frame(height: 150) - } - .padding(.horizontal, 16) - .padding(.top, 12) - } - } - .toolbarBackground(Color.themeLime, for: .navigationBar) - .toolbarBackground(.visible, for: .navigationBar) - .sheet(isPresented: $showSettings) { - SettingsView() - } - .toolbar { - if #available(iOS 26.0, *) { - ToolbarItem(placement: .topBarLeading) { - Image("seya") - } - .sharedBackgroundVisibility(.hidden) - } else { - ToolbarItem(placement: .topBarLeading) { - Image("seya") - } - } - - ToolbarItem(placement: .primaryAction) { - Button(action: { - showSettings = true - }) { - Image("settings_filled") - } - } - } - } - } -} diff --git a/Stable/Stable/Modules/NewWallet/InputCard.swift b/Stable/Stable/Modules/NewWallet/InputCard.swift deleted file mode 100644 index 19376affbf..0000000000 --- a/Stable/Stable/Modules/NewWallet/InputCard.swift +++ /dev/null @@ -1,48 +0,0 @@ -import SwiftUI - -struct InputCard: View { - let title: LocalizedStringResource - @Binding var text: String - var customButton: CustomButton? = nil - var focus: FocusState.Binding - - var body: some View { - ThemeCard(borderColor: focus.wrappedValue ? .themeLime : nil) { - VStack(alignment: .leading, spacing: 10) { - ThemeText(key: title, style: .captionSB, color: .themeGray) - - HStack(alignment: .center, spacing: 8) { - TextField(String(""), text: $text) - .font(TextStyle.headline1.font) - .foregroundColor(.themeLeah) - .focused(focus) - .textInputAutocapitalization(.words) - .autocorrectionDisabled(true) - .frame(maxWidth: .infinity, alignment: .leading) - .frame(minHeight: 32) - - if focus.wrappedValue, !text.isEmpty { - IconButton(icon: "trash", style: .secondary, size: .small) { - text = "" - } - } else if let customButton { - IconButton(icon: customButton.icon, style: .secondary, size: .small) { - customButton.action() - } - } - } - } - } - .onTapGesture { - focus.wrappedValue = true - } - .animation(.easeInOut(duration: 0.2), value: focus.wrappedValue) - } -} - -extension InputCard { - struct CustomButton { - let icon: String - let action: () -> Void - } -} diff --git a/Stable/Stable/Modules/NewWallet/NewWalletView.swift b/Stable/Stable/Modules/NewWallet/NewWalletView.swift deleted file mode 100644 index 693c08f1ea..0000000000 --- a/Stable/Stable/Modules/NewWallet/NewWalletView.swift +++ /dev/null @@ -1,85 +0,0 @@ -import SwiftUI -import UserInterface - -struct NewWalletView: View { - @State private var walletName: String = "" - @FocusState private var nameFocused: Bool - - @State private var safariUrl: SafariUrl? - - var body: some View { - ThemeView { - VStack(alignment: .leading, spacing: 0) { - ThemeText(key: "new_wallet.title", style: .title3B) - .padding(.top, 12) - .padding(.bottom, 16) - .padding(.horizontal, 8) - - InputCard( - title: "new_wallet.wallet_name_label", - text: $walletName, - customButton: .init(icon: "magic") { - walletName = "Random Name" - }, - focus: $nameFocused - ) - - Spacer() - - ThemeText(attributedText, style: .subhead, color: .themeGray) - .multilineTextAlignment(.center) - .environment(\.openURL, OpenURLAction { url in - switch url.absoluteString { - case "terms": safariUrl = .init(string: AppConfig.companyWebPageLink) - case "policy": safariUrl = .init(string: AppConfig.appWebPageLink) - default: () - } - - return .handled - }) - .frame(maxWidth: .infinity) - .padding(.bottom, 16) - - ThemeButton(text: "new_wallet.create_button") { - // todo - } - .disabled(walletName.isEmpty) - .padding(.horizontal, 8) - .padding(.bottom, 16) - } - .padding(.horizontal, 16) - } - .onTapGesture { - nameFocused = false - } - .sheet(item: $safariUrl) { url in - SafariView(url: URL(string: url.string)!) - .ignoresSafeArea() - } - } - - private var attributedText: AttributedString { - let raw = String(localized: "new_wallet.terms_agreement") - - guard var attributed = try? AttributedString( - markdown: raw, - options: .init(interpretedSyntax: .inlineOnlyPreservingWhitespace) - ) else { - return AttributedString(raw) - } - - for run in attributed.runs where run.link != nil { - attributed[run.range].foregroundColor = .themeLime - attributed[run.range].underlineStyle = .single - } - - return attributed - } -} - -extension NewWalletView { - struct SafariUrl: Identifiable { - let id = UUID() - let string: String - } -} diff --git a/Stable/Stable/Modules/Settings/SettingsNavigationRow.swift b/Stable/Stable/Modules/Settings/SettingsNavigationRow.swift deleted file mode 100644 index 5441b85d68..0000000000 --- a/Stable/Stable/Modules/Settings/SettingsNavigationRow.swift +++ /dev/null @@ -1,26 +0,0 @@ -import SwiftUI - -struct SettingsNavigationRow: View { - let title: LocalizedStringResource - let action: () -> Void - - var body: some View { - Button(action: action) { - HStack(spacing: 0) { - ThemeText(key: title, style: .title3) - Spacer(minLength: 12) - ThemeImage("arrow_b_right", size: 24, color: .themeLime) - } - .padding(.horizontal, 24) - .padding(.vertical, 16) - .frame(maxWidth: .infinity) - .overlay(alignment: .top) { - Rectangle() - .fill(Color.themeBlade) - .frame(height: 1) - } - .contentShape(Rectangle()) - } - .buttonStyle(.plain) - } -} diff --git a/Stable/Stable/Modules/Settings/SettingsView.swift b/Stable/Stable/Modules/Settings/SettingsView.swift deleted file mode 100644 index 823a8334f7..0000000000 --- a/Stable/Stable/Modules/Settings/SettingsView.swift +++ /dev/null @@ -1,45 +0,0 @@ -import SwiftUI - -struct SettingsView: View { - @Environment(\.dismiss) private var dismiss - - var body: some View { - ThemeNavigationStack { - ThemeView { - VStack(spacing: 0) { - ThemeText(key: "settings.title", style: .title3B) - .frame(maxWidth: .infinity, alignment: .leading) - .padding(.horizontal, 24) - .padding(.top, 12) - .padding(.bottom, 32) - - SettingsNavigationRow(title: "settings.row.wallet") {} - SettingsNavigationRow(title: "settings.row.security") {} - SettingsNavigationRow(title: "settings.row.appearance") {} - SettingsNavigationRow(title: "settings.row.support") {} - - Spacer(minLength: 0) - - ThemeText( - "\(AppConfig.appName) \(AppConfig.appVersion) (\(AppConfig.appBuild))", - style: .subheadSB, - color: .themeGray - ) - .frame(maxWidth: .infinity) - .padding(.horizontal, 24) - .padding(.bottom, 40) - } - } - .toolbar { - ToolbarItem(placement: .topBarTrailing) { - Button { - dismiss() - } label: { - Image("close") - } - } - } - } - .presentationDragIndicator(.visible) - } -} diff --git a/Stable/Stable/Modules/SetupWallet/SetupWalletOptionRow.swift b/Stable/Stable/Modules/SetupWallet/SetupWalletOptionRow.swift deleted file mode 100644 index fb1616461e..0000000000 --- a/Stable/Stable/Modules/SetupWallet/SetupWalletOptionRow.swift +++ /dev/null @@ -1,36 +0,0 @@ -import SwiftUI - -struct SetupWalletOptionRow: View { - let icon: String - let title: LocalizedStringResource - let subtitle: LocalizedStringResource - let action: () -> Void - - var body: some View { - Button(action: action) { - ThemeCard { - HStack(spacing: 12) { - ZStack { - RoundedRectangle(cornerRadius: 12, style: .continuous) - .fill(Color.themeLimeD.opacity(0.1)) - - ThemeImage(icon, size: 24, color: .themeLimeD) - } - .frame(width: 44, height: 44) - - VStack(alignment: .leading, spacing: 4) { - ThemeText(key: title, style: .headline2) - ThemeText(key: subtitle, style: .caption, color: .themeGray) - } - .frame(maxWidth: .infinity, alignment: .leading) - - ThemeImage("arrow_b_right", size: 24, color: .themeGray) - } - .padding(.vertical, 16) - } - .contentShape(Rectangle()) - } - .buttonStyle(.plain) - .accessibilityElement(children: .combine) - } -} diff --git a/Stable/Stable/Modules/SetupWallet/SetupWalletView.swift b/Stable/Stable/Modules/SetupWallet/SetupWalletView.swift deleted file mode 100644 index 1801ae2aa4..0000000000 --- a/Stable/Stable/Modules/SetupWallet/SetupWalletView.swift +++ /dev/null @@ -1,54 +0,0 @@ -import SwiftUI - -struct SetupWalletView: View { - @State private var showNewWallet: Bool = false - - var body: some View { - ThemeNavigationStack { - ThemeView { - VStack(alignment: .leading, spacing: 0) { - VStack(alignment: .leading, spacing: 3) { - ThemeText(key: "setup_wallet.title", style: .title3B) - ThemeText(key: "setup_wallet.subtitle", style: .subhead, color: .themeGray) - } - .padding(.horizontal, 8) - .padding(.top, 16) - - Spacer() - - VStack(spacing: 12) { - SetupWalletOptionRow( - icon: "premium_filled", - title: "setup_wallet.new_wallet", - subtitle: "setup_wallet.new_wallet.description", - action: { showNewWallet = true } - ) - - SetupWalletOptionRow( - icon: "arrow_in", - title: "setup_wallet.restore_wallet", - subtitle: "setup_wallet.restore_wallet.description", - action: {} - ) - } - .padding(.bottom, 16) - } - .padding(.horizontal, 16) - .background( - Image("setup_wallet") - .resizable() - .aspectRatio(contentMode: .fill) - .allowsHitTesting(false) - ) - } - .navigationDestination(isPresented: $showNewWallet) { - NewWalletView() - } - .toolbar { - ToolbarItem(placement: .principal) { - Text(verbatim: "") - } - } - } - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/AccentColor.colorset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/AccentColor.colorset/Contents.json deleted file mode 100644 index eb87897008..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/AccentColor.colorset/Contents.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "colors" : [ - { - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json deleted file mode 100644 index 96bc19eb5c..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "images" : [ - { - "filename" : "StableAppDev.png", - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/StableAppDev.png b/Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/StableAppDev.png deleted file mode 100644 index f34f402b10..0000000000 Binary files a/Stable/Stable/Resources/Assets.xcassets/AppIcon-Dev.appiconset/StableAppDev.png and /dev/null differ diff --git a/Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 94b4486aa0..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "images" : [ - { - "filename" : "StableApp.png", - "idiom" : "universal", - "platform" : "ios", - "size" : "1024x1024" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/StableApp.png b/Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/StableApp.png deleted file mode 100644 index 6260a68453..0000000000 Binary files a/Stable/Stable/Resources/Assets.xcassets/AppIcon.appiconset/StableApp.png and /dev/null differ diff --git a/Stable/Stable/Resources/Assets.xcassets/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596a7..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/Contents.json deleted file mode 100644 index 73c00596a7..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_b_right.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_b_right.imageset/Contents.json deleted file mode 100644 index 5974d051a0..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_b_right.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "arrow_b_right.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_b_right.imageset/arrow_b_right.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_b_right.imageset/arrow_b_right.svg deleted file mode 100644 index b58e8d1194..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_b_right.imageset/arrow_b_right.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_in.imageset/Arrow_In_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_in.imageset/Arrow_In_24.svg deleted file mode 100644 index c95a3acfcd..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_in.imageset/Arrow_In_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_in.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_in.imageset/Contents.json deleted file mode 100644 index cb63e12c9c..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/arrow_in.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Arrow_In_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/check.imageset/Check_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/check.imageset/Check_24.svg deleted file mode 100644 index b1452a2acb..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/check.imageset/Check_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/check.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/check.imageset/Contents.json deleted file mode 100644 index 0245d62d71..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/check.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Check_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/close.imageset/Close_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/close.imageset/Close_24.svg deleted file mode 100644 index f48047a25c..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/close.imageset/Close_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/close.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/close.imageset/Contents.json deleted file mode 100644 index 57cfeb3c7b..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/close.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Close_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/done_e_filled_full.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/done_e_filled_full.imageset/Contents.json deleted file mode 100644 index 09b66fbfd9..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/done_e_filled_full.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Union.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/done_e_filled_full.imageset/Union.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/done_e_filled_full.imageset/Union.svg deleted file mode 100644 index 4c90773407..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/done_e_filled_full.imageset/Union.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/heart.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/heart.imageset/Contents.json deleted file mode 100644 index 81de4a9c59..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/heart.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Heart_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/heart.imageset/Heart_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/heart.imageset/Heart_24.svg deleted file mode 100644 index 0e0f7c3e2b..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/heart.imageset/Heart_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/heart_filled.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/heart_filled.imageset/Contents.json deleted file mode 100644 index 225fb50dbb..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/heart_filled.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Heart_Filled_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/heart_filled.imageset/Heart_Filled_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/heart_filled.imageset/Heart_Filled_24.svg deleted file mode 100644 index 5d5f70fd73..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/heart_filled.imageset/Heart_Filled_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/info.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/info.imageset/Contents.json deleted file mode 100644 index 8b0b01e069..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/info.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Info_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/info.imageset/Info_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/info.imageset/Info_24.svg deleted file mode 100644 index d03b87039e..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/info.imageset/Info_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/magic.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/magic.imageset/Contents.json deleted file mode 100644 index 3f23236b2b..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/magic.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Magic_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/magic.imageset/Magic_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/magic.imageset/Magic_24.svg deleted file mode 100644 index 7c8986be4e..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/magic.imageset/Magic_24.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/premium_filled.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/premium_filled.imageset/Contents.json deleted file mode 100644 index ee359c93ec..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/premium_filled.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Premium_Filled_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/premium_filled.imageset/Premium_Filled_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/premium_filled.imageset/Premium_Filled_24.svg deleted file mode 100644 index 60cb94561d..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/premium_filled.imageset/Premium_Filled_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/settings_filled.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/settings_filled.imageset/Contents.json deleted file mode 100644 index f1daf1bc26..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/settings_filled.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Settings_Filled_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/settings_filled.imageset/Settings_Filled_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/settings_filled.imageset/Settings_Filled_24.svg deleted file mode 100644 index fd140a11d7..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/settings_filled.imageset/Settings_Filled_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/trash.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/trash.imageset/Contents.json deleted file mode 100644 index 7e2afc14f1..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/trash.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Trash_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/trash.imageset/Trash_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/trash.imageset/Trash_24.svg deleted file mode 100644 index 479970e31a..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/trash.imageset/Trash_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/warning.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Icons/warning.imageset/Contents.json deleted file mode 100644 index 1a0e97e711..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/warning.imageset/Contents.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "images" : [ - { - "filename" : "Warning_24.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true, - "template-rendering-intent" : "template" - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Icons/warning.imageset/Warning_24.svg b/Stable/Stable/Resources/Assets.xcassets/Icons/warning.imageset/Warning_24.svg deleted file mode 100644 index 8c2c979e5e..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Icons/warning.imageset/Warning_24.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Images/Contents.json deleted file mode 100644 index 73c00596a7..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Images/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/intro1.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Images/intro1.imageset/Contents.json deleted file mode 100644 index 1a01469ca4..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Images/intro1.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "intro1.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/intro1.imageset/intro1.png b/Stable/Stable/Resources/Assets.xcassets/Images/intro1.imageset/intro1.png deleted file mode 100644 index fef49ba318..0000000000 Binary files a/Stable/Stable/Resources/Assets.xcassets/Images/intro1.imageset/intro1.png and /dev/null differ diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/intro2.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Images/intro2.imageset/Contents.json deleted file mode 100644 index 80c0248b8c..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Images/intro2.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "intro2.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/intro2.imageset/intro2.png b/Stable/Stable/Resources/Assets.xcassets/Images/intro2.imageset/intro2.png deleted file mode 100644 index d7805e0281..0000000000 Binary files a/Stable/Stable/Resources/Assets.xcassets/Images/intro2.imageset/intro2.png and /dev/null differ diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/intro3.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Images/intro3.imageset/Contents.json deleted file mode 100644 index 7f6a982c8c..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Images/intro3.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "intro3.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/intro3.imageset/intro3.png b/Stable/Stable/Resources/Assets.xcassets/Images/intro3.imageset/intro3.png deleted file mode 100644 index ba58fce04b..0000000000 Binary files a/Stable/Stable/Resources/Assets.xcassets/Images/intro3.imageset/intro3.png and /dev/null differ diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/setup_wallet.imageset/BG-Images@2x.png b/Stable/Stable/Resources/Assets.xcassets/Images/setup_wallet.imageset/BG-Images@2x.png deleted file mode 100644 index 906f3c6fce..0000000000 Binary files a/Stable/Stable/Resources/Assets.xcassets/Images/setup_wallet.imageset/BG-Images@2x.png and /dev/null differ diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/setup_wallet.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Images/setup_wallet.imageset/Contents.json deleted file mode 100644 index bc7ca067d9..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Images/setup_wallet.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "BG-Images@2x.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/seya.imageset/Contents.json b/Stable/Stable/Resources/Assets.xcassets/Images/seya.imageset/Contents.json deleted file mode 100644 index 954e299600..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Images/seya.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "seya.svg", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "preserves-vector-representation" : true - } -} diff --git a/Stable/Stable/Resources/Assets.xcassets/Images/seya.imageset/seya.svg b/Stable/Stable/Resources/Assets.xcassets/Images/seya.imageset/seya.svg deleted file mode 100644 index b556af107d..0000000000 --- a/Stable/Stable/Resources/Assets.xcassets/Images/seya.imageset/seya.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Stable/Stable/Resources/Colors.xcassets/Andy.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Andy.colorset/Contents.json deleted file mode 100644 index ecdee16b8c..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Andy.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xB3", - "green" : "0xB3", - "red" : "0xB3" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x4B", - "green" : "0x4B", - "red" : "0x4B" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Blade.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Blade.colorset/Contents.json deleted file mode 100644 index 318395a069..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Blade.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xDF", - "green" : "0xDF", - "red" : "0xDF" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x23", - "green" : "0x23", - "red" : "0x23" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Bright.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Bright.colorset/Contents.json deleted file mode 100644 index c0dfb49fd6..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Bright.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xED", - "green" : "0xED", - "red" : "0xED" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Carbon.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Carbon.colorset/Contents.json deleted file mode 100644 index 3a80ff2c92..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Carbon.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x23", - "green" : "0x23", - "red" : "0x23" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Contents.json deleted file mode 100644 index 73c00596a7..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Dark.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Dark.colorset/Contents.json deleted file mode 100644 index 427c1830f2..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Dark.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x15", - "green" : "0x15", - "red" : "0x15" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Gray.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Gray.colorset/Contents.json deleted file mode 100644 index f7fd446b84..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Gray.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x85", - "green" : "0x80", - "red" : "0x80" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Jacob.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Jacob.colorset/Contents.json deleted file mode 100644 index e709f84b49..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Jacob.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x00", - "green" : "0x9D", - "red" : "0xFF" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x00", - "green" : "0xB7", - "red" : "0xFF" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Lawrence.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Lawrence.colorset/Contents.json deleted file mode 100644 index 1529807ea7..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Lawrence.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xFF", - "green" : "0xFF", - "red" : "0xFF" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x15", - "green" : "0x15", - "red" : "0x15" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Leah.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Leah.colorset/Contents.json deleted file mode 100644 index f969819b52..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Leah.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x15", - "green" : "0x15", - "red" : "0x15" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xED", - "green" : "0xED", - "red" : "0xED" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Light.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Light.colorset/Contents.json deleted file mode 100644 index 16fcfeece3..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Light.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xDF", - "green" : "0xDF", - "red" : "0xDF" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Lime.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Lime.colorset/Contents.json deleted file mode 100644 index 143f3efc1d..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Lime.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x20", - "green" : "0xB8", - "red" : "0x12" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x28", - "green" : "0xE0", - "red" : "0x16" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/LimeD.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/LimeD.colorset/Contents.json deleted file mode 100644 index fe9a7506f8..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/LimeD.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x28", - "green" : "0xE0", - "red" : "0x16" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/LimeL.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/LimeL.colorset/Contents.json deleted file mode 100644 index 1abc2e19ae..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/LimeL.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x20", - "green" : "0xB8", - "red" : "0x12" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/LimeText.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/LimeText.colorset/Contents.json deleted file mode 100644 index ed27e46c2d..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/LimeText.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x0B", - "green" : "0x7D", - "red" : "0x00" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x13", - "green" : "0xE0", - "red" : "0x00" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Lucian.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Lucian.colorset/Contents.json deleted file mode 100644 index 4e3bd6058e..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Lucian.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x00", - "green" : "0x15", - "red" : "0xFF" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x39", - "green" : "0x15", - "red" : "0xFF" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Ocean.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Ocean.colorset/Contents.json deleted file mode 100644 index 97f9976a8c..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Ocean.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xFF", - "green" : "0x49", - "red" : "0x12" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xFF", - "green" : "0x84", - "red" : "0x00" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Remus.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Remus.colorset/Contents.json deleted file mode 100644 index bfdf8b406f..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Remus.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x77", - "green" : "0xA1", - "red" : "0x0A" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x8E", - "green" : "0xC1", - "red" : "0x0A" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Smoke.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Smoke.colorset/Contents.json deleted file mode 100644 index 42bb6ec89f..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Smoke.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x4B", - "green" : "0x4B", - "red" : "0x4B" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Steel.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Steel.colorset/Contents.json deleted file mode 100644 index f4bf2ff57a..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Steel.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xB3", - "green" : "0xB3", - "red" : "0xB3" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Colors.xcassets/Tyler.colorset/Contents.json b/Stable/Stable/Resources/Colors.xcassets/Tyler.colorset/Contents.json deleted file mode 100644 index 7e8ebcfd13..0000000000 --- a/Stable/Stable/Resources/Colors.xcassets/Tyler.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xF5", - "green" : "0xF5", - "red" : "0xF5" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x00", - "green" : "0x00", - "red" : "0x00" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Stable/Stable/Resources/Fonts/Manrope-Medium.ttf b/Stable/Stable/Resources/Fonts/Manrope-Medium.ttf deleted file mode 100644 index c6d28def6d..0000000000 Binary files a/Stable/Stable/Resources/Fonts/Manrope-Medium.ttf and /dev/null differ diff --git a/Stable/Stable/Resources/Fonts/Manrope-Regular.ttf b/Stable/Stable/Resources/Fonts/Manrope-Regular.ttf deleted file mode 100644 index 9a108f1cee..0000000000 Binary files a/Stable/Stable/Resources/Fonts/Manrope-Regular.ttf and /dev/null differ diff --git a/Stable/Stable/Resources/Fonts/Manrope-SemiBold.ttf b/Stable/Stable/Resources/Fonts/Manrope-SemiBold.ttf deleted file mode 100644 index 46a13d6198..0000000000 Binary files a/Stable/Stable/Resources/Fonts/Manrope-SemiBold.ttf and /dev/null differ diff --git a/Stable/Stable/Resources/Localizable.xcstrings b/Stable/Stable/Resources/Localizable.xcstrings deleted file mode 100644 index a6e2ec87bb..0000000000 --- a/Stable/Stable/Resources/Localizable.xcstrings +++ /dev/null @@ -1,276 +0,0 @@ -{ - "sourceLanguage" : "en", - "strings" : { - "intro.get_started" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Get Started" - } - } - } - }, - "intro.slide1.subtitle" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Create and access your wallet with a passkey." - } - } - } - }, - "intro.slide1.title" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "The easiest way to seem you are cool" - } - } - } - }, - "intro.slide2.subtitle" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Pay transaction fees in USDT or USDC — no native tokens needed." - } - } - } - }, - "intro.slide2.title" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Send money without limits—if you have it" - } - } - } - }, - "intro.slide3.subtitle" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Only your passkey can access \nyour wallet." - } - } - } - }, - "intro.slide3.title" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Your face is the key, no matter what it looks like " - } - } - } - }, - "launch.failed_to_launch" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Failed to launch application due to internal error. Please try restarting the app or report the error to our support team." - } - } - } - }, - "launch.failed_to_launch.report" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Report" - } - } - } - }, - "new_wallet.create_button" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Create Wallet" - } - } - } - }, - "new_wallet.terms_agreement" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "By continuing, I agree to the [Terms of Use](terms) and\nconsent to the [Privacy Policy](policy)" - } - } - } - }, - "new_wallet.title" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "New Wallet" - } - } - } - }, - "new_wallet.wallet_name_label" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wallet Name" - } - } - } - }, - "settings.row.appearance" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Appearance" - } - } - } - }, - "settings.row.security" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Security" - } - } - } - }, - "settings.row.support" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Support" - } - } - } - }, - "settings.row.wallet" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Wallet" - } - } - } - }, - "settings.title" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Settings" - } - } - } - }, - "setup_wallet.new_wallet" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "New Wallet" - } - } - } - }, - "setup_wallet.new_wallet.description" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Create with Passkey security" - } - } - } - }, - "setup_wallet.restore_wallet" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Restore Wallet" - } - } - } - }, - "setup_wallet.restore_wallet.description" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Restore from Passkey" - } - } - } - }, - "setup_wallet.subtitle" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Create new or restore existing" - } - } - } - }, - "setup_wallet.title" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Create Wallet" - } - } - } - }, - "theme.dark" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dark" - } - } - } - }, - "theme.light" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Light" - } - } - } - }, - "theme.system" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "System" - } - } - } - } - }, - "version" : "1.1" -} \ No newline at end of file diff --git a/Stable/Stable/Supporting/Info.plist b/Stable/Stable/Supporting/Info.plist deleted file mode 100644 index 8a548fc473..0000000000 --- a/Stable/Stable/Supporting/Info.plist +++ /dev/null @@ -1,12 +0,0 @@ - - - - - UIAppFonts - - Manrope-Regular.ttf - Manrope-Medium.ttf - Manrope-SemiBold.ttf - - - diff --git a/Stable/Stable/UserInterface/Components.swift b/Stable/Stable/UserInterface/Components.swift deleted file mode 100644 index 43e4e67f73..0000000000 --- a/Stable/Stable/UserInterface/Components.swift +++ /dev/null @@ -1,100 +0,0 @@ -import SwiftUI - -struct ComponentText: CustomStringConvertible { - let text: String - var color: Color? - - var description: String { text } -} - -struct AttributedComponentText: CustomStringConvertible { - let text: AttributedString - - var description: String { text.description } -} - -extension Text { - init(componentText: ComponentText) { - self.init(componentText.text) - } -} - -struct ComponentBadge: CustomStringConvertible { - let text: String - var change: Int? - var mode: BadgeView.Mode? - var color: Color? - var onTap: (() -> Void)? - - init(text: String, change: Int? = nil, mode: BadgeView.Mode? = nil, color: Color? = nil, onTap: (() -> Void)? = nil) { - self.text = text - self.change = change - self.mode = mode - self.color = color - self.onTap = onTap - } - - var description: String { text } -} - -enum ComponentImage: CustomStringConvertible { - case icon(name: String, size: CGSize?, color: Color?) - case image(name: String, contentMode: ContentMode, size: CGSize?) - case remote(url: String, placeholder: String?, size: CGSize?) - - init(_ name: String, color: Color? = nil) { - self = .icon(name: name, size: nil, color: color) - } - - init(_ name: String, size: CGFloat, color: Color? = nil) { - self = .icon(name: name, size: CGSize(width: size, height: size), color: color) - } - - init(_ name: String, size: CGSize, color: Color? = nil) { - self = .icon(name: name, size: size, color: color) - } - - init(image: String, contentMode: ContentMode = .fill, size: CGSize? = nil) { - self = .image(name: image, contentMode: contentMode, size: size) - } - - init(url: String, placeholder: String? = nil, size: CGSize? = nil) { - self = .remote(url: url, placeholder: placeholder, size: size) - } - - var description: String { - switch self { - case let .icon(name, _, _): return name - case let .image(name, _, _): return name - case let .remote(url, _, _): return url - } - } -} - -extension CustomStringConvertible { - func styled(_ color: Color, forced: Bool = false) -> CustomStringConvertible { - switch self { - case let component as ComponentText: - if component.color == nil || forced { - return ComponentText(text: component.text, color: color) - } - - case let component as String: - return ComponentText(text: component, color: color) - - case let component as ComponentBadge: - if component.color == nil || forced { - return ComponentBadge(text: component.text, change: component.change, mode: component.mode, color: color) - } - - case let .icon(name, size, style) as ComponentImage: - if style == nil || forced { - return ComponentImage.icon(name: name, size: size, color: color) - } - - default: return self - } - - return self - } -} diff --git a/Stable/Stable/UserInterface/Components/BadgeView.swift b/Stable/Stable/UserInterface/Components/BadgeView.swift deleted file mode 100644 index 266da25f8d..0000000000 --- a/Stable/Stable/UserInterface/Components/BadgeView.swift +++ /dev/null @@ -1,74 +0,0 @@ -import SwiftUI - -struct BadgeView: View { - private let text: String - private let change: Int? - private let mode: Mode - private let color: Color - private let onTap: (() -> Void)? - - init(_ text: CustomStringConvertible, change: Int? = nil, mode: Mode? = nil, color: Color? = nil) { - if let componentBadge = text as? ComponentBadge { - self.text = componentBadge.text - self.change = change ?? componentBadge.change - self.mode = mode ?? componentBadge.mode ?? .solid - self.color = color ?? componentBadge.color ?? .primary - onTap = componentBadge.onTap - } else { - self.text = text.description - self.change = change - self.mode = mode ?? .solid - self.color = color ?? .primary - onTap = nil - } - } - - var body: some View { - if let onTap { - Button(action: onTap) { - bordered().contentShape(Rectangle()) - } - .buttonStyle(.plain) - } else { - bordered() - } - } - - @ViewBuilder func bordered() -> some View { - switch mode { - case .solid: - content().background(RoundedRectangle(cornerRadius: 8, style: .continuous).fill(Color.themeBlade)) - case .transparent: - content().background(RoundedRectangle(cornerRadius: 8, style: .continuous).stroke(color, lineWidth: 1)) - } - } - - @ViewBuilder func content() -> some View { - HStack(spacing: 2) { - ThemeText(text, style: .microSB, color: color) - - if let change, change != 0 { - if change > 0 { - Text(verbatim: "↑\(change)") - .font(TextStyle.microSB.font) - .foregroundColor(Color.lucian) - } else { - Text(verbatim: "↓\(abs(change))") - .font(TextStyle.microSB.font) - .foregroundColor(Color.remus) - } - } - } - .padding(.horizontal, 6) - .padding(.top, 1) - .padding(.bottom, 2) - .clipShape(RoundedRectangle(cornerRadius: 8, style: .continuous)) - } -} - -extension BadgeView { - enum Mode { - case solid - case transparent - } -} diff --git a/Stable/Stable/UserInterface/Components/IconButton.swift b/Stable/Stable/UserInterface/Components/IconButton.swift deleted file mode 100644 index 8bed49675a..0000000000 --- a/Stable/Stable/UserInterface/Components/IconButton.swift +++ /dev/null @@ -1,43 +0,0 @@ -import SwiftUI - -struct IconButton: View { - let icon: String - var style: ThemeButton.Style = .primary - var mode: ThemeButton.Mode = .solid - var size: ThemeButton.Size = .medium - let action: () -> Void - - var body: some View { - Button(action: action) { - Image(icon) - .resizable() - .frame(size: size.iconSize) - } - .buttonStyle(Style(style: style, mode: mode, size: size)) - } - - private struct Style: ButtonStyle { - let style: ThemeButton.Style - let mode: ThemeButton.Mode - let size: ThemeButton.Size - - @Environment(\.isEnabled) private var isEnabled - - func makeBody(configuration: Configuration) -> some View { - configuration.label - .frame(size: size.size) - .foregroundColor(ThemeButton.foregroundColor(style: style, mode: mode, size: size, isEnabled: isEnabled)) - .background(ThemeButton.backgroundColor(style: style, mode: mode, size: size, isEnabled: isEnabled)) - .clipShape(RoundedRectangle(cornerRadius: cornerRadius, style: .continuous)) - .opacity(configuration.isPressed ? 0.6 : 1) - .animation(.easeOut(duration: 0.2), value: configuration.isPressed) - } - - var cornerRadius: CGFloat { - switch size { - case .medium: return 24 - case .small: return 12 - } - } - } -} diff --git a/Stable/Stable/UserInterface/Components/ThemeButton.swift b/Stable/Stable/UserInterface/Components/ThemeButton.swift deleted file mode 100644 index 08dbf8273b..0000000000 --- a/Stable/Stable/UserInterface/Components/ThemeButton.swift +++ /dev/null @@ -1,139 +0,0 @@ -import SwiftUI - -struct ThemeButton: View { - let text: LocalizedStringResource - var icon: String? = nil - var spinner: Bool = false - var style: ThemeButton.Style = .primary - var mode: ThemeButton.Mode = .solid - var size: ThemeButton.Size = .medium - let action: () -> Void - - var body: some View { - Button(action: action) { - HStack(spacing: size.iconSpacing) { - if spinner { - ProgressView() - } - - if let icon { - Image(icon) - .resizable() - .frame(size: size.iconSize) - } - - Text(text) - .font(size.textStyle.font) - } - .offset(x: 0, y: size == .small ? -1 : 0) - } - .buttonStyle(ThemeButtonStyle(style: style, mode: mode, size: size)) - } - - private struct ThemeButtonStyle: ButtonStyle { - let style: ThemeButton.Style - let mode: ThemeButton.Mode - let size: ThemeButton.Size - - @Environment(\.isEnabled) var isEnabled - - func makeBody(configuration: Configuration) -> some View { - configuration.label - .frame(maxWidth: size == .medium ? .infinity : nil) - .padding(.horizontal, 16) - .frame(height: size.size) - .foregroundColor(ThemeButton.foregroundColor(style: style, mode: mode, size: size, isEnabled: isEnabled)) - .background(ThemeButton.backgroundColor(style: style, mode: mode, size: size, isEnabled: isEnabled)) - .clipShape(RoundedRectangle(cornerRadius: size.cornerRadius, style: .continuous)) - .opacity(configuration.isPressed ? 0.6 : 1) - .animation(.easeOut(duration: 0.2), value: configuration.isPressed) - } - } -} - -extension ThemeButton { - enum Style { - case primary - case secondary - } - - enum Mode { - case solid - case transparent - } - - enum Size { - case medium - case small - - var textStyle: TextStyle { - switch self { - case .medium: return .headline2 - case .small: return .captionSB - } - } - - var size: CGFloat { - switch self { - case .medium: return 56 - case .small: return 32 - } - } - - var cornerRadius: CGFloat { - switch self { - case .medium: return 24 - case .small: return 16 - } - } - - var iconSize: CGFloat { - switch self { - case .medium: return 24 - case .small: return 20 - } - } - - var iconSpacing: CGFloat { - switch self { - case .medium: return 8 - case .small: return 4 - } - } - } - - static func foregroundColor(style: Style, mode: Mode, size _: Size, isEnabled: Bool) -> Color { - switch mode { - case .solid: - guard isEnabled else { - return .themeLimeText.opacity(0.2) - } - - switch style { - case .primary: return .black - case .secondary: return .themeLimeText - } - case .transparent: - guard isEnabled else { - return .themeLimeText.opacity(0.15) - } - - return .themeLimeText - } - } - - static func backgroundColor(style: Style, mode: Mode, size _: Size, isEnabled: Bool) -> Color { - switch mode { - case .solid: - guard isEnabled else { - return .themeLimeD.opacity(0.2) - } - - switch style { - case .primary: return .themeLimeD - case .secondary: return .themeLimeD.opacity(0.15) - } - case .transparent: return .clear - } - } -} diff --git a/Stable/Stable/UserInterface/Components/ThemeCard.swift b/Stable/Stable/UserInterface/Components/ThemeCard.swift deleted file mode 100644 index cdd37ba36c..0000000000 --- a/Stable/Stable/UserInterface/Components/ThemeCard.swift +++ /dev/null @@ -1,21 +0,0 @@ -import SwiftUI - -struct ThemeCard: View { - var cornerRadius: CGFloat = 16 - var borderColor: Color? = nil - @ViewBuilder let content: () -> Content - - var body: some View { - content() - .padding(16) - .frame(maxWidth: .infinity) - .background( - RoundedRectangle(cornerRadius: cornerRadius, style: .continuous) - .fill(Color.themeLawrence) - ) - .overlay { - RoundedRectangle(cornerRadius: cornerRadius, style: .continuous) - .strokeBorder(borderColor ?? .clear, lineWidth: 2) - } - } -} diff --git a/Stable/Stable/UserInterface/Components/ThemeImage.swift b/Stable/Stable/UserInterface/Components/ThemeImage.swift deleted file mode 100644 index 1e12f8e9cf..0000000000 --- a/Stable/Stable/UserInterface/Components/ThemeImage.swift +++ /dev/null @@ -1,77 +0,0 @@ -import Kingfisher -import SwiftUI - -struct ThemeImage: View { - private static let defaultSize = CGSize(width: 24, height: 24) - - private let image: ImageType - private let size: CGSize? - private let color: Color - - init(_ name: CustomStringConvertible, size: CGFloat? = nil, color: Color? = nil) { - self.init(name, size: size.map { CGSize(width: $0, height: $0) }, color: color) - } - - init(_ name: CustomStringConvertible, size: CGSize? = nil, color: Color? = nil) { - if let componentImage = name as? ComponentImage { - switch componentImage { - case let .icon(name, localSize, localColor): - image = .icon(name: name) - self.size = localSize ?? size - self.color = localColor ?? color ?? .themeGray - case let .image(name, contentMode, localSize): - image = .image(name: name, contentMode: contentMode) - self.size = localSize ?? size - self.color = .themeLeah - case let .remote(url, placeholder, localSize): - image = .remote(url: url, placeholder: placeholder) - self.size = localSize ?? size - self.color = .themeLeah - } - } else { - image = .icon(name: name.description) - self.size = size - self.color = color ?? .themeGray - } - } - - var body: some View { - switch image { - case let .icon(name): - Image(name) - .renderingMode(.template) - .resizable() - .foregroundColor(color) - .applyFrame(size: size ?? Self.defaultSize) - case let .image(name: name, contentMode: contentMode): - if let size { - Image(name) - .resizable() - .aspectRatio(contentMode: contentMode) - .applyFrame(size: size) - } else { - Image(name) - } - case let .remote(url, placeholder): - KFImage.url(URL(string: url)) - .resizable() - .placeholder { - if let placeholder { - Image(placeholder) - } else { - RoundedRectangle(cornerRadius: 12, style: .continuous) - .fill(Color.themeBlade) - } - } - .applyFrame(size: size) - } - } -} - -extension ThemeImage { - enum ImageType { - case icon(name: String) - case image(name: String, contentMode: SwiftUICore.ContentMode) - case remote(url: String, placeholder: String?) - } -} diff --git a/Stable/Stable/UserInterface/Components/ThemeSelector.swift b/Stable/Stable/UserInterface/Components/ThemeSelector.swift deleted file mode 100644 index 42f5fe7042..0000000000 --- a/Stable/Stable/UserInterface/Components/ThemeSelector.swift +++ /dev/null @@ -1,50 +0,0 @@ -import SwiftUI - -struct ThemeSelector: View { - var style: Style = .circle - var size: CGFloat = 24 - @Binding var checked: Bool - - var body: some View { - Button { - checked.toggle() - } label: { - Group { - if checked { - ThemeImage(style.checkedIcon, size: size, color: .themeLimeD) - } else { - switch style { - case .circle: - Circle() - .strokeBorder(Color.themeGray, lineWidth: 1) - .frame(size: size) - case .check: - Color.clear.frame(size: size) - case .heart: - ThemeImage("heart", size: size, color: .themeGray) - } - } - } - .padding(12) - .contentShape(Rectangle()) - } - .buttonStyle(.plain) - .padding(-12) - } -} - -extension ThemeSelector { - enum Style { - case circle - case check - case heart - - var checkedIcon: String { - switch self { - case .circle: "done_e_filled_full" - case .check: "check" - case .heart: "heart_filled" - } - } - } -} diff --git a/Stable/Stable/UserInterface/Components/ThemeText.swift b/Stable/Stable/UserInterface/Components/ThemeText.swift deleted file mode 100644 index 47ea54ad95..0000000000 --- a/Stable/Stable/UserInterface/Components/ThemeText.swift +++ /dev/null @@ -1,61 +0,0 @@ -import SwiftUI - -struct ThemeText: View { - private let text: TextType - private let style: TextStyle - private let color: Color - - init(_ text: CustomStringConvertible, style: TextStyle, color: Color? = nil) { - if let componentText = text as? ComponentText { - self.text = .plain(componentText.text) - self.style = style - self.color = componentText.color ?? color ?? .themeLeah - } else if let componentText = text as? AttributedComponentText { - self.text = .attributed(componentText.text) - self.style = style - self.color = color ?? .themeLeah - } else { - self.text = .plain(text.description) - self.style = style - self.color = color ?? .themeLeah - } - } - - init(_ attributedString: AttributedString, style: TextStyle, color: Color? = nil) { - text = .attributed(attributedString) - self.style = style - self.color = color ?? .themeLeah - } - - init(key: LocalizedStringResource, style: TextStyle, color: Color? = nil) { - text = .localized(key) - self.style = style - self.color = color ?? .themeLeah - } - - init(_ text: TextType, style: TextStyle, color: Color? = nil) { - self.text = text - self.style = style - self.color = color ?? .themeLeah - } - - var body: some View { - Group { - switch text { - case let .localized(key): Text(key) - case let .plain(text): Text(text) - case let .attributed(text): Text(text) - } - } - .font(style.font) - .foregroundColor(color) - } -} - -extension ThemeText { - enum TextType: Equatable { - case localized(LocalizedStringResource) - case plain(String) - case attributed(AttributedString) - } -} diff --git a/Stable/Stable/UserInterface/Components/ThemeView.swift b/Stable/Stable/UserInterface/Components/ThemeView.swift deleted file mode 100644 index 6a1c07d600..0000000000 --- a/Stable/Stable/UserInterface/Components/ThemeView.swift +++ /dev/null @@ -1,92 +0,0 @@ -import SwiftUI - -struct ThemeView: View { - var style: Style = .regular - @ViewBuilder let content: Content - - var body: some View { - ZStack { - Color.themeTyler.ignoresSafeArea() - - decoration - - VStack(spacing: 0) { - Rectangle() - .frame(height: 0) - .background(Color.themeTyler) - .zIndex(100) - - content - } - } - .toolbarBackground(.hidden, for: .navigationBar) - .navigationBarTitleDisplayMode(.inline) - } - - @ViewBuilder private var decoration: some View { - switch style { - case .regular: - EmptyView() - case .topGradient: - GeometryReader { proxy in - LinearGradient( - colors: [Color.themeLime, Color.themeLime.opacity(0)], - startPoint: .top, - endPoint: .bottom - ) - .frame(height: proxy.size.height * 0.4) - .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) - } - .allowsHitTesting(false) - case .bottomGradient: - GeometryReader { proxy in - Circle() - .fill(Color.themeLime.opacity(0.2)) - .frame(width: 650, height: 650) - .blur(radius: 100) - .position(x: proxy.size.width / 2, y: proxy.size.height + 125) - } - .ignoresSafeArea() - .clipped() - .allowsHitTesting(false) - } - } -} - -extension ThemeView { - enum Style { - case regular - case topGradient - case bottomGradient - } -} - -struct ThemeNavigationStack: View { - private let content: Content - private let path: Binding? - - init(@ViewBuilder content: () -> Content) { - self.content = content() - path = nil - } - - init(path: Binding, @ViewBuilder content: () -> Content) { - self.content = content() - self.path = path - } - - var body: some View { - Group { - if let path { - NavigationStack(path: path) { - content - } - } else { - NavigationStack { - content - } - } - } - .tint(.themeLeah) - } -} diff --git a/Stable/Stable/UserInterface/CopyHelper.swift b/Stable/Stable/UserInterface/CopyHelper.swift deleted file mode 100644 index 3f14280c15..0000000000 --- a/Stable/Stable/UserInterface/CopyHelper.swift +++ /dev/null @@ -1,8 +0,0 @@ -import UIKit - -enum CopyHelper { - static func copyAndNotify(value: String) { - UIPasteboard.general.string = value - // HudHelper.instance.show(banner: .copied) - } -} diff --git a/Stable/Stable/UserInterface/Extensions/Color.swift b/Stable/Stable/UserInterface/Extensions/Color.swift deleted file mode 100644 index 9356f0c82d..0000000000 --- a/Stable/Stable/UserInterface/Extensions/Color.swift +++ /dev/null @@ -1,27 +0,0 @@ -import SwiftUI - -extension Color { - static let themeDark = Color("Dark") - static let themeCarbon = Color("Carbon") - static let themeSmoke = Color("Smoke") - static let themeGray = Color("Gray") - static let themeSteel = Color("Steel") - static let themeLight = Color("Light") - static let themeBright = Color("Bright") - static let themeLimeD = Color("LimeD") - static let themeLimeL = Color("LimeL") - - static let themeTyler = Color("Tyler") - static let themeLawrence = Color("Lawrence") - static let themeBlade = Color("Blade") - static let themeAndy = Color("Andy") - static let themeLeah = Color("Leah") - static let themeJacob = Color("Jacob") - static let themeRemus = Color("Remus") - static let themeLucian = Color("Lucian") - static let themeOcean = Color("Ocean") - static let themeLime = Color("Lime") - static let themeLimeText = Color("LimeText") - - var pressed: Color { opacity(0.5) } -} diff --git a/Stable/Stable/UserInterface/Extensions/Font.swift b/Stable/Stable/UserInterface/Extensions/Font.swift deleted file mode 100644 index d2b473b31d..0000000000 --- a/Stable/Stable/UserInterface/Extensions/Font.swift +++ /dev/null @@ -1,12 +0,0 @@ -import SwiftUI - -public extension Font { - static func manRopeFont(size: CGFloat, weight: Font.Weight) -> Font { - switch weight { - case .regular: return Font.custom("Manrope-Regular", size: size) - case .medium: return Font.custom("Manrope-Medium", size: size) - case .semibold: return Font.custom("Manrope-SemiBold", size: size) - default: return .system(size: size, weight: weight) - } - } -} diff --git a/Stable/Stable/UserInterface/Extensions/View.swift b/Stable/Stable/UserInterface/Extensions/View.swift deleted file mode 100644 index 8b2dbc9579..0000000000 --- a/Stable/Stable/UserInterface/Extensions/View.swift +++ /dev/null @@ -1,15 +0,0 @@ -import SwiftUI - -extension View { - func frame(size: CGFloat) -> some View { - frame(width: size, height: size) - } - - @ViewBuilder func applyFrame(size: CGSize?) -> some View { - if let size { - frame(width: size.width, height: size.height) - } else { - self - } - } -} diff --git a/Stable/Stable/UserInterface/TextStyle.swift b/Stable/Stable/UserInterface/TextStyle.swift deleted file mode 100644 index 3e8b466e67..0000000000 --- a/Stable/Stable/UserInterface/TextStyle.swift +++ /dev/null @@ -1,41 +0,0 @@ -import SwiftUI - -enum TextStyle { - case title1 - case title2M - case title2R - case title3 - case title3B - case headline1 - case headline2 - case body - case bodyR - case subhead - case subheadR - case subheadSB - case caption - case captionSB - case micro - case microSB - - var font: Font { - switch self { - case .title1: return .manRopeFont(size: 38, weight: .semibold) - case .title2M: return .manRopeFont(size: 36, weight: .medium) - case .title2R: return .manRopeFont(size: 32, weight: .regular) - case .title3: return .manRopeFont(size: 24, weight: .semibold) - case .title3B: return .manRopeFont(size: 24, weight: .bold) - case .headline1: return .manRopeFont(size: 20, weight: .semibold) - case .headline2: return .manRopeFont(size: 16, weight: .semibold) - case .body: return .manRopeFont(size: 16, weight: .medium) - case .bodyR: return .manRopeFont(size: 16, weight: .regular) - case .subhead: return .manRopeFont(size: 14, weight: .medium) - case .subheadR: return .manRopeFont(size: 14, weight: .regular) - case .subheadSB: return .manRopeFont(size: 14, weight: .semibold) - case .caption: return .manRopeFont(size: 12, weight: .regular) - case .captionSB: return .manRopeFont(size: 12, weight: .semibold) - case .micro: return .manRopeFont(size: 10, weight: .regular) - case .microSB: return .manRopeFont(size: 10, weight: .semibold) - } - } -} diff --git a/Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Unstoppable-Dev.xcscheme b/Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Development.xcscheme similarity index 100% rename from Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Unstoppable-Dev.xcscheme rename to Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Development.xcscheme diff --git a/Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Unstoppable-Prod.xcscheme b/Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Production.xcscheme similarity index 100% rename from Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Unstoppable-Prod.xcscheme rename to Unstoppable/Unstoppable.xcodeproj/xcshareddata/xcschemes/Production.xcscheme diff --git a/Wallet.xcworkspace/contents.xcworkspacedata b/Wallet.xcworkspace/contents.xcworkspacedata index 32b46f6b21..a0fb70e17e 100644 --- a/Wallet.xcworkspace/contents.xcworkspacedata +++ b/Wallet.xcworkspace/contents.xcworkspacedata @@ -4,9 +4,6 @@ - - diff --git a/fastlane/Fastfile b/fastlane/Fastfile index c2e55eefb4..bc9fa71156 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,7 +1,6 @@ default_platform(:ios) APP_ID = ENV["APP_ID"] -STABLE_APP_ID = ENV["STABLE_APP_ID"] TEMP_KEYCHAIN_USER = ENV["TEMP_KEYCHAIN_USER"] TEMP_KEYCHAIN_PASSWORD = ENV["TEMP_KEYCHAIN_PASSWORD"] APPLE_ISSUER_ID = ENV["APPLE_ISSUER_ID"] @@ -11,8 +10,11 @@ GIT_AUTHORIZATION = ENV["GIT_AUTHORIZATION"] TEAM_ID = "HC4MCAXJ66" +WORKSPACE = "Wallet.xcworkspace" +XCODEPROJ = "./Unstoppable/Unstoppable.xcodeproj" +XCCONFIG_PATH = "Unstoppable/Unstoppable/Configuration/Config.xcconfig" + BASE_APP_ID = "io.horizontalsystems.bank-wallet" -STABLE_BASE_APP_ID = "io.horizontalsystems.stable" PROD_APP_IDS = [ BASE_APP_ID, @@ -26,15 +28,7 @@ DEV_APP_IDS = [ "#{BASE_APP_ID}.dev.intent" ].freeze -STABLE_PROD_APP_IDS = [ - STABLE_BASE_APP_ID -].freeze - -STABLE_DEV_APP_IDS = [ - "#{STABLE_BASE_APP_ID}.dev" -].freeze - -ALL_APP_IDS = (PROD_APP_IDS + DEV_APP_IDS + STABLE_PROD_APP_IDS + STABLE_DEV_APP_IDS).freeze +ALL_APP_IDS = (PROD_APP_IDS + DEV_APP_IDS).freeze MATCH_TYPE_PROFILE_NAMES = { 'development' => 'Development', @@ -42,66 +36,53 @@ MATCH_TYPE_PROFILE_NAMES = { 'appstore' => 'AppStore' }.freeze -XCCONFIG_KEYS = [ - 'ARBISCAN_API_KEYS', - 'BASESCAN_API_KEYS', - 'BSCSCAN_API_KEYS', - 'CHAINALYSIS_API_KEY', - 'DEFIYIELD_API_KEY', - 'ERA_ZKSYNC_API_KEYS', - 'ETHERSCAN_API_KEYS', - 'FTMSCAN_API_KEYS', - 'GNOSISSCAN_API_KEYS', - 'HASHDIT_API_KEY', - 'HS_PROVIDER_API_KEY', - 'JUPITER_API_KEY', - 'MERKLE_API_PATH', - 'ONE_INCH_API_KEY', - 'OPEN_SEA_API_KEY', - 'OPTIMISM_ETHERSCAN_API_KEYS', - 'POLYGONSCAN_API_KEYS', - 'SNOWTRACE_API_KEYS', - 'SOLANA_ALCHEMY_API_KEYS', - 'TRONGRID_API_KEYS', - 'TWITTER_BEARER_TOKEN', - 'UNSTOPPABLE_DOMAINS_API_KEY', - 'USWAP_API_KEY', - 'WALLET_CONNECT_V2_PROJECT_KEY', - - 'MAYA_AFFILIATE', - 'MAYA_AFFILIATE_BPS', - 'ONE_INCH_COMMISSION', - 'ONE_INCH_COMMISSION_ADDRESS', - 'THORCHAIN_AFFILIATE', - 'THORCHAIN_AFFILIATE_BPS' +XCCONFIG_KEYS = %w[ + ARBISCAN_API_KEYS + BASESCAN_API_KEYS + BSCSCAN_API_KEYS + CHAINALYSIS_API_KEY + DEFIYIELD_API_KEY + ERA_ZKSYNC_API_KEYS + ETHERSCAN_API_KEYS + FTMSCAN_API_KEYS + GNOSISSCAN_API_KEYS + HASHDIT_API_KEY + HS_PROVIDER_API_KEY + JUPITER_API_KEY + MERKLE_API_PATH + ONE_INCH_API_KEY + OPEN_SEA_API_KEY + OPTIMISM_ETHERSCAN_API_KEYS + POLYGONSCAN_API_KEYS + SNOWTRACE_API_KEYS + SOLANA_ALCHEMY_API_KEYS + TRONGRID_API_KEYS + TWITTER_BEARER_TOKEN + UNSTOPPABLE_DOMAINS_API_KEY + USWAP_API_KEY + WALLET_CONNECT_V2_PROJECT_KEY + + MAYA_AFFILIATE + MAYA_AFFILIATE_BPS + ONE_INCH_COMMISSION + ONE_INCH_COMMISSION_ADDRESS + THORCHAIN_AFFILIATE + THORCHAIN_AFFILIATE_BPS ].freeze -def delete_temp_keychain(name) - delete_keychain(name: name) if File.exist? File.expand_path("~/Library/Keychains/#{name}-db") -end - -def create_temp_keychain(name, password) - create_keychain( - name: name, - password: password, - unlock: false, - timeout: 0 - ) -end - -def ensure_temp_keychain(name, password) - delete_temp_keychain(name) - create_temp_keychain(name, password) -end - def with_temp_keychain name = TEMP_KEYCHAIN_USER - ensure_temp_keychain(name, TEMP_KEYCHAIN_PASSWORD) + delete_temp_keychain(name) + create_keychain(name: name, password: TEMP_KEYCHAIN_PASSWORD, unlock: false, timeout: 0) yield name ensure delete_temp_keychain(name) if name end +def delete_temp_keychain(name) + delete_keychain(name: name) if File.exist?(File.expand_path("~/Library/Keychains/#{name}-db")) +end + def app_store_api_key app_store_connect_api_key( key_id: APPLE_KEY_ID, @@ -112,38 +93,23 @@ def app_store_api_key ) end -def update_xcconfig(path, name, new_value) - update_xcconfig_value( - path: path, - name: name, - value: new_value - ) -end +def apply_xcconfig + template_path = XCCONFIG_PATH.sub(/Config\.xcconfig\z/, 'Config.template.xcconfig') + sh("cp ../#{template_path} ../#{XCCONFIG_PATH}") -def apply_xcconfig(xcconfig_path) XCCONFIG_KEYS.each do |key| - update_xcconfig(xcconfig_path, key, ENV["XCCONFIG_#{key}"]) + update_xcconfig_value(path: XCCONFIG_PATH, name: key, value: ENV["XCCONFIG_#{key}"]) end end -def prepare_environment(xcodeproj:, xcconfig_path:) - template_path = xcconfig_path.sub(/Config\.xcconfig\z/, 'Config.template.xcconfig') - sh("cp ../#{template_path} ../#{xcconfig_path}") - - increment_build_number( - build_number: ENV['BUILD_NUMBER'], - xcodeproj: xcodeproj - ) -end - def provisioning_profiles_for(app_ids, match_type) profile_name = MATCH_TYPE_PROFILE_NAMES.fetch(match_type) app_ids.map { |id| [id, "match #{profile_name} #{id}"] }.to_h end -def build_and_sign(match_type:, export_method:, app_ids:, scheme:, xcodeproj:, xcconfig_path:, keychain_name:, icloud_env: nil) - prepare_environment(xcodeproj: xcodeproj, xcconfig_path: xcconfig_path) - apply_xcconfig(xcconfig_path) +def build_and_sign(match_type:, export_method:, app_ids:, scheme:, keychain_name:, icloud_env:) + apply_xcconfig + increment_build_number(build_number: ENV['BUILD_NUMBER'], xcodeproj: XCODEPROJ) match( type: match_type, @@ -155,22 +121,25 @@ def build_and_sign(match_type:, export_method:, app_ids:, scheme:, xcodeproj:, x api_key: app_store_api_key ) - export_options = { - compileBitcode: false, - provisioningProfiles: provisioning_profiles_for(app_ids, match_type) - } - export_options[:iCloudContainerEnvironment] = icloud_env if icloud_env - gym( - workspace: "Wallet.xcworkspace", + workspace: WORKSPACE, scheme: scheme, export_method: export_method, clean: true, include_symbols: true, - export_options: export_options + export_options: { + compileBitcode: false, + iCloudContainerEnvironment: icloud_env, + provisioningProfiles: provisioning_profiles_for(app_ids, match_type) + } ) end +def run_match(type:, options: {}) + app_ids = type == 'appstore' ? PROD_APP_IDS : ALL_APP_IDS + match(app_identifier: app_ids, type: type, **options) +end + platform :ios do lane :dev do with_temp_keychain do |keychain_name| @@ -178,9 +147,7 @@ platform :ios do match_type: 'adhoc', export_method: 'ad-hoc', app_ids: DEV_APP_IDS, - scheme: 'Unstoppable-Dev', - xcodeproj: './Unstoppable/Unstoppable.xcodeproj', - xcconfig_path: 'Unstoppable/Unstoppable/Configuration/Config.xcconfig', + scheme: 'Development', icloud_env: 'Development', keychain_name: keychain_name ) @@ -200,9 +167,7 @@ platform :ios do match_type: 'appstore', export_method: 'app-store', app_ids: PROD_APP_IDS, - scheme: 'Unstoppable-Prod', - xcodeproj: './Unstoppable/Unstoppable.xcodeproj', - xcconfig_path: 'Unstoppable/Unstoppable/Configuration/Config.xcconfig', + scheme: 'Production', icloud_env: 'Production', keychain_name: keychain_name ) @@ -218,74 +183,19 @@ platform :ios do end end - lane :dev_stable do - with_temp_keychain do |keychain_name| - build_and_sign( - match_type: 'adhoc', - export_method: 'ad-hoc', - app_ids: STABLE_DEV_APP_IDS, - scheme: 'Stable-Dev', - xcodeproj: './Stable/Stable.xcodeproj', - xcconfig_path: 'Stable/Stable/Configuration/Config.xcconfig', - keychain_name: keychain_name - ) - - firebase_app_distribution( - app: "1:407994911754:ios:87c194a99fd04dc269e3f3", - groups: "dev-testers", - release_notes: last_git_commit[:message], - service_credentials_json_data: ENV["FIREBASE_CREDENTIALS"] - ) - end - end - - lane :release_stable do - with_temp_keychain do |keychain_name| - build_and_sign( - match_type: 'appstore', - export_method: 'app-store', - app_ids: STABLE_PROD_APP_IDS, - scheme: 'Stable-Prod', - xcodeproj: './Stable/Stable.xcodeproj', - xcconfig_path: 'Stable/Stable/Configuration/Config.xcconfig', - keychain_name: keychain_name - ) - - pilot( - apple_id: STABLE_APP_ID, - app_identifier: STABLE_BASE_APP_ID, - skip_waiting_for_build_processing: true, - skip_submission: true, - distribute_external: false, - notify_external_testers: false - ) - end - end - lane :match_readonly do - %w[development adhoc].each do |type| - match(type: type, readonly: true, app_identifier: ALL_APP_IDS) + %w[development adhoc appstore].each do |type| + run_match(type: type, options: { readonly: true }) end - - match(type: 'appstore', readonly: true, app_identifier: PROD_APP_IDS + STABLE_PROD_APP_IDS) end lane :match_generate do |options| + base = { username: options[:username], team_id: TEAM_ID } + %w[development adhoc].each do |type| - match( - type: type, - username: options[:username], - team_id: TEAM_ID, - app_identifier: ALL_APP_IDS, - force_for_new_devices: true - ) + run_match(type: type, options: base.merge(force_for_new_devices: true)) end - match( - type: 'appstore', - username: options[:username], - team_id: TEAM_ID, - app_identifier: PROD_APP_IDS + STABLE_PROD_APP_IDS - ) + run_match(type: 'appstore', options: base) end end