From 81d3433f2fb17b80c80affea2a40407d038a7893 Mon Sep 17 00:00:00 2001 From: Bartosz Rozwarski Date: Wed, 4 Sep 2024 06:03:23 -0700 Subject: [PATCH] remove wcm --- Example/DApp/Modules/Sign/SignPresenter.swift | 9 - Example/DApp/Modules/Sign/SignView.swift | 12 - Example/DApp/SceneDelegate.swift | 6 - Example/ExampleApp.xcodeproj/project.pbxproj | 212 ---------- .../AuthRequest/AuthRequestPresenter.swift | 8 +- .../SessionProposalInteractor.swift | 6 +- .../SessionRequestInteractor.swift | 6 +- Example/WalletConnect-Package.xctestplan | 7 - Package.swift | 26 +- README.md | 2 +- .../Router/Router.swift | 2 +- .../ReownRouter/Router/RouterImports.swift | 3 + .../RouterLegacy/Router.m | 0 .../RouterLegacy/include/Router.h | 0 .../RouterLegacy/include/module.modulemap | 3 + .../Environment+ProjectId.swift | 12 - .../Extensions/Bundle.swift | 7 - .../Extensions/Collection.swift | 8 - .../Extensions/Image+Backport.swift | 12 - .../Extensions/View+Backport.swift | 50 --- .../Extensions/View+Modifiers.swift | 20 - .../Extensions/View+RoundedCorners.swift | 90 ----- .../Extensions/View+Size.swift | 17 - .../Helpers/UIApplicationWrapper.swift | 36 -- .../Mocks/Listing+Mocks.swift | 43 -- .../Modal/Modal+Previews.swift | 55 --- .../Modal/ModalContainerView.swift | 66 --- .../Modal/ModalInteractor.swift | 40 -- .../WalletConnectModal/Modal/ModalSheet.swift | 211 ---------- .../Modal/ModalViewModel.swift | 381 ------------------ .../Modal/RecentWalletStorage.swift | 52 --- .../Modal/Screens/GetAWalletView.swift | 82 ---- .../Modal/Screens/QRCodeView.swift | 114 ------ .../Screens/WalletDetail/WalletDetail.swift | 192 --------- .../WalletDetail/WalletDetailViewModel.swift | 51 --- .../Modal/Screens/WalletList.swift | 241 ----------- .../Explorer/GetIosDataResponse.swift | 11 - .../Explorer/GetWalletsResponse.swift | 87 ---- .../Networking/Explorer/Web3ModalAPI.swift | 84 ---- .../WalletConnectModal/Resources/Asset.swift | 88 ---- .../Resources/Assets.xcassets/Contents.json | 6 - .../Assets.xcassets/colors/Contents.json | 6 - .../colors/accent.colorset/Contents.json | 38 -- .../colors/background1.colorset/Contents.json | 38 -- .../colors/background2.colorset/Contents.json | 38 -- .../colors/background3.colorset/Contents.json | 38 -- .../colors/foreground1.colorset/Contents.json | 38 -- .../colors/foreground2.colorset/Contents.json | 38 -- .../colors/foreground3.colorset/Contents.json | 38 -- .../foregroundInverse.colorset/Contents.json | 38 -- .../colors/negative.colorset/Contents.json | 38 -- .../thickOverlay.colorset/Contents.json | 38 -- .../colors/thinOverlay.colorset/Contents.json | 38 -- .../help/Browser.imageset/Browser.pdf | Bin 14173 -> 0 bytes .../help/Browser.imageset/Contents.json | 12 - .../Assets.xcassets/help/Contents.json | 6 - .../help/DAO.imageset/Contents.json | 12 - .../Assets.xcassets/help/DAO.imageset/DAO.pdf | Bin 15022 -> 0 bytes .../help/DeFi.imageset/Contents.json | 12 - .../help/DeFi.imageset/DeFi.pdf | Bin 12023 -> 0 bytes .../help/ETH.imageset/Contents.json | 12 - .../Assets.xcassets/help/ETH.imageset/ETH.pdf | Bin 6369 -> 0 bytes .../help/Layers.imageset/Contents.json | 12 - .../help/Layers.imageset/Layers.pdf | Bin 17239 -> 0 bytes .../help/Lock.imageset/Contents.json | 12 - .../help/Lock.imageset/Lock.pdf | Bin 9067 -> 0 bytes .../help/Login.imageset/Contents.json | 12 - .../help/Login.imageset/Login.pdf | Bin 19249 -> 0 bytes .../help/NFT.imageset/Contents.json | 12 - .../Assets.xcassets/help/NFT.imageset/NFT.pdf | Bin 13768 -> 0 bytes .../help/Network.imageset/Contents.json | 12 - .../help/Network.imageset/Network.pdf | Bin 12677 -> 0 bytes .../help/Noun.imageset/Contents.json | 12 - .../help/Noun.imageset/Noun.pdf | Bin 9725 -> 0 bytes .../help/Profile.imageset/Contents.json | 12 - .../help/Profile.imageset/Profile.pdf | Bin 10773 -> 0 bytes .../help/System.imageset/Contents.json | 12 - .../help/System.imageset/System.pdf | Bin 45833 -> 0 bytes .../Assets.xcassets/icons/Contents.json | 6 - .../icons/close.imageset/Close.pdf | Bin 1642 -> 0 bytes .../icons/close.imageset/Contents.json | 15 - .../external_link.imageset/Contents.json | 15 - .../external_link.imageset/External Link.pdf | Bin 1427 -> 0 bytes .../icons/help.imageset/Contents.json | 15 - .../icons/help.imageset/Help.pdf | Bin 1879 -> 0 bytes .../Assets.xcassets/icons/large/Contents.json | 6 - .../large/copy_large.imageset/Contents.json | 15 - .../icons/large/copy_large.imageset/Copy.pdf | Bin 4296 -> 0 bytes .../large/qr_large.imageset/Contents.json | 15 - .../icons/large/qr_large.imageset/QRCode.pdf | Bin 7870 -> 0 bytes .../icons/wallet.imageset/Contents.json | 15 - .../icons/wallet.imageset/Wallet.pdf | Bin 2125 -> 0 bytes .../walletconnect_logo.imageset/Contents.json | 12 - .../LogoLockup.pdf | Bin 9907 -> 0 bytes .../wc_logo.imageset/Contents.json | 12 - .../wc_logo.imageset/WCLOGO.pdf | Bin 46930 -> 0 bytes .../WalletConnectModal/Resources/Color.swift | 120 ------ .../Resources/PrivacyInfo.xcprivacy | 44 -- .../WalletConnectModal/Secrets/Secrets.swift | 23 -- .../Secrets/secrets.json.sample | 3 - .../WalletConnectModal/Styles/Button.swift | 67 --- .../UI/Common/ActivityIndicator.swift | 31 -- .../UI/Common/AsyncImage.swift | 70 ---- .../WalletConnectModal/UI/Common/Toast.swift | 135 ------- .../UI/Common/Web3ModalPicker.swift | 127 ------ .../WalletConnectModal/UI/WalletImage.swift | 35 -- .../WalletConnectModalSheetController.swift | 45 --- .../WalletConnectModal.swift | 171 -------- .../WalletConnectModalClient.swift | 117 ------ .../WalletConnectModalImports.swift | 5 - .../Router/RouterImports.swift | 3 - .../RouterLegacy/include/module.modulemap | 3 - .../ExplorerAPITests.swift | 49 --- .../Helpers/FuncTests.swift | 10 - .../Mocks/ModalSheetInteractorMock.swift | 43 -- .../ModalViewModelTests.swift | 114 ------ reown-swift.podspec | 12 +- 117 files changed, 26 insertions(+), 4259 deletions(-) rename Sources/{WalletConnectRouter => ReownRouter}/Router/Router.swift (90%) create mode 100644 Sources/ReownRouter/Router/RouterImports.swift rename Sources/{WalletConnectRouter => ReownRouter}/RouterLegacy/Router.m (100%) rename Sources/{WalletConnectRouter => ReownRouter}/RouterLegacy/include/Router.h (100%) create mode 100644 Sources/ReownRouter/RouterLegacy/include/module.modulemap delete mode 100644 Sources/WalletConnectModal/Environment+ProjectId.swift delete mode 100644 Sources/WalletConnectModal/Extensions/Bundle.swift delete mode 100644 Sources/WalletConnectModal/Extensions/Collection.swift delete mode 100644 Sources/WalletConnectModal/Extensions/Image+Backport.swift delete mode 100644 Sources/WalletConnectModal/Extensions/View+Backport.swift delete mode 100644 Sources/WalletConnectModal/Extensions/View+Modifiers.swift delete mode 100644 Sources/WalletConnectModal/Extensions/View+RoundedCorners.swift delete mode 100644 Sources/WalletConnectModal/Extensions/View+Size.swift delete mode 100644 Sources/WalletConnectModal/Helpers/UIApplicationWrapper.swift delete mode 100644 Sources/WalletConnectModal/Mocks/Listing+Mocks.swift delete mode 100644 Sources/WalletConnectModal/Modal/Modal+Previews.swift delete mode 100644 Sources/WalletConnectModal/Modal/ModalContainerView.swift delete mode 100644 Sources/WalletConnectModal/Modal/ModalInteractor.swift delete mode 100644 Sources/WalletConnectModal/Modal/ModalSheet.swift delete mode 100644 Sources/WalletConnectModal/Modal/ModalViewModel.swift delete mode 100644 Sources/WalletConnectModal/Modal/RecentWalletStorage.swift delete mode 100644 Sources/WalletConnectModal/Modal/Screens/GetAWalletView.swift delete mode 100644 Sources/WalletConnectModal/Modal/Screens/QRCodeView.swift delete mode 100644 Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetail.swift delete mode 100644 Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetailViewModel.swift delete mode 100644 Sources/WalletConnectModal/Modal/Screens/WalletList.swift delete mode 100644 Sources/WalletConnectModal/Networking/Explorer/GetIosDataResponse.swift delete mode 100644 Sources/WalletConnectModal/Networking/Explorer/GetWalletsResponse.swift delete mode 100644 Sources/WalletConnectModal/Networking/Explorer/Web3ModalAPI.swift delete mode 100644 Sources/WalletConnectModal/Resources/Asset.swift delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/accent.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background1.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background2.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background3.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground1.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground2.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground3.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foregroundInverse.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/negative.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/thickOverlay.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/colors/thinOverlay.colorset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Browser.imageset/Browser.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Browser.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/DAO.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/DAO.imageset/DAO.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/DeFi.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/DeFi.imageset/DeFi.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/ETH.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/ETH.imageset/ETH.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Layers.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Layers.imageset/Layers.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Lock.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Lock.imageset/Lock.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Login.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Login.imageset/Login.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/NFT.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/NFT.imageset/NFT.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Network.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Network.imageset/Network.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Noun.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Noun.imageset/Noun.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Profile.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/Profile.imageset/Profile.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/System.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/help/System.imageset/System.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/close.imageset/Close.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/close.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/external_link.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/external_link.imageset/External Link.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/help.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/help.imageset/Help.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/copy_large.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/copy_large.imageset/Copy.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/qr_large.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/qr_large.imageset/QRCode.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/wallet.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/icons/wallet.imageset/Wallet.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/walletconnect_logo.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/walletconnect_logo.imageset/LogoLockup.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/wc_logo.imageset/Contents.json delete mode 100644 Sources/WalletConnectModal/Resources/Assets.xcassets/wc_logo.imageset/WCLOGO.pdf delete mode 100644 Sources/WalletConnectModal/Resources/Color.swift delete mode 100644 Sources/WalletConnectModal/Resources/PrivacyInfo.xcprivacy delete mode 100644 Sources/WalletConnectModal/Secrets/Secrets.swift delete mode 100644 Sources/WalletConnectModal/Secrets/secrets.json.sample delete mode 100644 Sources/WalletConnectModal/Styles/Button.swift delete mode 100644 Sources/WalletConnectModal/UI/Common/ActivityIndicator.swift delete mode 100644 Sources/WalletConnectModal/UI/Common/AsyncImage.swift delete mode 100644 Sources/WalletConnectModal/UI/Common/Toast.swift delete mode 100644 Sources/WalletConnectModal/UI/Common/Web3ModalPicker.swift delete mode 100644 Sources/WalletConnectModal/UI/WalletImage.swift delete mode 100644 Sources/WalletConnectModal/UIKitSupport/WalletConnectModalSheetController.swift delete mode 100644 Sources/WalletConnectModal/WalletConnectModal.swift delete mode 100644 Sources/WalletConnectModal/WalletConnectModalClient.swift delete mode 100644 Sources/WalletConnectModal/WalletConnectModalImports.swift delete mode 100644 Sources/WalletConnectRouter/Router/RouterImports.swift delete mode 100644 Sources/WalletConnectRouter/RouterLegacy/include/module.modulemap delete mode 100644 Tests/WalletConnectModalTests/ExplorerAPITests.swift delete mode 100644 Tests/WalletConnectModalTests/Helpers/FuncTests.swift delete mode 100644 Tests/WalletConnectModalTests/Mocks/ModalSheetInteractorMock.swift delete mode 100644 Tests/WalletConnectModalTests/ModalViewModelTests.swift diff --git a/Example/DApp/Modules/Sign/SignPresenter.swift b/Example/DApp/Modules/Sign/SignPresenter.swift index 0dfb67810..c16bbe68c 100644 --- a/Example/DApp/Modules/Sign/SignPresenter.swift +++ b/Example/DApp/Modules/Sign/SignPresenter.swift @@ -2,7 +2,6 @@ import UIKit import Combine import ReownAppKit -import WalletConnectModal import WalletConnectSign final class SignPresenter: ObservableObject { @@ -53,14 +52,6 @@ final class SignPresenter: ObservableObject { AppKit.present(from: nil) } - func connectWalletWithWCM() { - WalletConnectModal.set(sessionParams: .init( - requiredNamespaces: Proposal.requiredNamespaces, - optionalNamespaces: Proposal.optionalNamespaces - )) - WalletConnectModal.present(from: nil) - } - @MainActor func connectWalletWithSessionPropose() { Task { diff --git a/Example/DApp/Modules/Sign/SignView.swift b/Example/DApp/Modules/Sign/SignView.swift index 03b4003a9..e59774df0 100644 --- a/Example/DApp/Modules/Sign/SignView.swift +++ b/Example/DApp/Modules/Sign/SignView.swift @@ -78,18 +78,6 @@ struct SignView: View { .background(Color(red: 95/255, green: 159/255, blue: 248/255)) .cornerRadius(16) } - - Button { - presenter.connectWalletWithWCM() - } label: { - Text("Connect with WalletConnectModal") - .font(.system(size: 16, weight: .semibold)) - .foregroundColor(.white) - .padding(.horizontal, 16) - .padding(.vertical, 10) - .background(Color(red: 95/255, green: 159/255, blue: 248/255)) - .cornerRadius(16) - } } .padding(.top, 10) } diff --git a/Example/DApp/SceneDelegate.swift b/Example/DApp/SceneDelegate.swift index 0e761fd36..75c055d76 100644 --- a/Example/DApp/SceneDelegate.swift +++ b/Example/DApp/SceneDelegate.swift @@ -1,7 +1,6 @@ import UIKit import ReownAppKit -import WalletConnectModal import WalletConnectRelay import WalletConnectNetworking import Combine @@ -149,11 +148,6 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { } }.store(in: &publishers) - WalletConnectModal.configure( - projectId: InputConfig.projectId, - metadata: metadata - ) - Sign.instance.logger.setLogging(level: .debug) Networking.instance.setLogging(level: .debug) diff --git a/Example/ExampleApp.xcodeproj/project.pbxproj b/Example/ExampleApp.xcodeproj/project.pbxproj index 2aada3baf..143671885 100644 --- a/Example/ExampleApp.xcodeproj/project.pbxproj +++ b/Example/ExampleApp.xcodeproj/project.pbxproj @@ -45,40 +45,27 @@ A50B6A362B06683800162B01 /* InputConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = C56EE25D293F56D6004840D1 /* InputConfig.swift */; }; A51606F82A2F47BD00CACB92 /* DefaultBIP44Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51606F72A2F47BD00CACB92 /* DefaultBIP44Provider.swift */; }; A51606F92A2F47BD00CACB92 /* DefaultBIP44Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51606F72A2F47BD00CACB92 /* DefaultBIP44Provider.swift */; }; - A51606FA2A2F47BD00CACB92 /* DefaultBIP44Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A51606F72A2F47BD00CACB92 /* DefaultBIP44Provider.swift */; }; A518B31428E33A6500A2CE93 /* InputConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = A518B31328E33A6500A2CE93 /* InputConfig.swift */; }; - A5417BBE299BFC3E00B469F3 /* ImportAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5417BBD299BFC3E00B469F3 /* ImportAccount.swift */; }; A541959E2934BFEF0035AD19 /* CacaoSignerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A541959A2934BFEF0035AD19 /* CacaoSignerTests.swift */; }; A541959F2934BFEF0035AD19 /* SignerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A541959B2934BFEF0035AD19 /* SignerTests.swift */; }; A54195A02934BFEF0035AD19 /* EIP1271VerifierTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A541959C2934BFEF0035AD19 /* EIP1271VerifierTests.swift */; }; A54195A12934BFEF0035AD19 /* EIP191VerifierTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A541959D2934BFEF0035AD19 /* EIP191VerifierTests.swift */; }; A54195A52934E83F0035AD19 /* Web3 in Frameworks */ = {isa = PBXBuildFile; productRef = A54195A42934E83F0035AD19 /* Web3 */; }; - A561C80029DF32CE00DF540D /* HDWalletKit in Frameworks */ = {isa = PBXBuildFile; productRef = A561C7FF29DF32CE00DF540D /* HDWalletKit */; }; - A5629AEA2877F2D600094373 /* WalletConnectChat in Frameworks */ = {isa = PBXBuildFile; productRef = A5629AE92877F2D600094373 /* WalletConnectChat */; }; - A5629AF22877F75100094373 /* Starscream in Frameworks */ = {isa = PBXBuildFile; productRef = A5629AF12877F75100094373 /* Starscream */; }; A573C53929EC365000E3CBFD /* HDWalletKit in Frameworks */ = {isa = PBXBuildFile; productRef = A573C53829EC365000E3CBFD /* HDWalletKit */; }; A573C53B29EC365800E3CBFD /* HDWalletKit in Frameworks */ = {isa = PBXBuildFile; productRef = A573C53A29EC365800E3CBFD /* HDWalletKit */; }; A58A1ECC29BF458600A82A20 /* ENSResolverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A58A1ECB29BF458600A82A20 /* ENSResolverTests.swift */; }; - A58EC611299D57B800F3452A /* AsyncButton in Frameworks */ = {isa = PBXBuildFile; productRef = A58EC610299D57B800F3452A /* AsyncButton */; }; - A58EC618299D665A00F3452A /* Web3Inbox in Frameworks */ = {isa = PBXBuildFile; productRef = A58EC617299D665A00F3452A /* Web3Inbox */; }; A59CF4F6292F83D50031A42F /* DefaultSignerFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59CF4F5292F83D50031A42F /* DefaultSignerFactory.swift */; }; - A59F877628B5462900A9CD80 /* WalletConnectAuth in Frameworks */ = {isa = PBXBuildFile; productRef = A59F877528B5462900A9CD80 /* WalletConnectAuth */; }; - A59FAEC928B7B93A002BB66F /* Web3 in Frameworks */ = {isa = PBXBuildFile; productRef = A59FAEC828B7B93A002BB66F /* Web3 */; }; A5A0843D29D2F624000B9B17 /* DefaultCryptoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A0843B29D2F60A000B9B17 /* DefaultCryptoProvider.swift */; }; A5A0843E29D2F624000B9B17 /* DefaultCryptoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A0843B29D2F60A000B9B17 /* DefaultCryptoProvider.swift */; }; - A5A0843F29D2F625000B9B17 /* DefaultCryptoProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A0843B29D2F60A000B9B17 /* DefaultCryptoProvider.swift */; }; A5A4FC772840C12C00BBEC1E /* RegressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A4FC762840C12C00BBEC1E /* RegressionTests.swift */; }; A5A650CA2B062A1400F9AD4B /* Mixpanel in Frameworks */ = {isa = PBXBuildFile; productRef = A5A650C92B062A1400F9AD4B /* Mixpanel */; }; A5A8E47A293A1C9B00FEB97D /* DefaultSocketFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5629AEF2877F73000094373 /* DefaultSocketFactory.swift */; }; A5A8E47D293A1CFE00FEB97D /* DefaultSocketFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5629AEF2877F73000094373 /* DefaultSocketFactory.swift */; }; A5A8E47E293A1CFE00FEB97D /* DefaultSignerFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59CF4F5292F83D50031A42F /* DefaultSignerFactory.swift */; }; - A5A8E47F293A1D0000FEB97D /* DefaultSocketFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5629AEF2877F73000094373 /* DefaultSocketFactory.swift */; }; - A5A8E480293A1D0000FEB97D /* DefaultSignerFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59CF4F5292F83D50031A42F /* DefaultSignerFactory.swift */; }; A5B6C0F12A6EAB0800927332 /* WalletConnectNotify in Frameworks */ = {isa = PBXBuildFile; productRef = A5B6C0F02A6EAB0800927332 /* WalletConnectNotify */; }; A5B6C0F32A6EAB1700927332 /* WalletConnectNotify in Frameworks */ = {isa = PBXBuildFile; productRef = A5B6C0F22A6EAB1700927332 /* WalletConnectNotify */; }; A5B6C0F72A6EAB3200927332 /* WalletConnectNotify in Frameworks */ = {isa = PBXBuildFile; productRef = A5B6C0F62A6EAB3200927332 /* WalletConnectNotify */; }; A5BB7FAD28B6AA7D00707FC6 /* QRCodeGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5BB7FAC28B6AA7D00707FC6 /* QRCodeGenerator.swift */; }; - A5C20229287EB34C007E3188 /* AccountStorage.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C20228287EB34C007E3188 /* AccountStorage.swift */; }; A5C8BE85292FE20B006CC85C /* Web3 in Frameworks */ = {isa = PBXBuildFile; productRef = A5C8BE84292FE20B006CC85C /* Web3 */; }; A5D85228286333E300DAF5C3 /* Starscream in Frameworks */ = {isa = PBXBuildFile; productRef = A5D85227286333E300DAF5C3 /* Starscream */; }; A5E03DF52864651200888481 /* Starscream in Frameworks */ = {isa = PBXBuildFile; productRef = A5E03DF42864651200888481 /* Starscream */; }; @@ -95,7 +82,6 @@ A5E22D2C2840EAC300E36487 /* XCUIElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5E22D2B2840EAC300E36487 /* XCUIElement.swift */; }; C5B4C4C42AF11C8B00B4274A /* SignView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5B4C4C32AF11C8B00B4274A /* SignView.swift */; }; C5BE01D12AF661D70064FC88 /* NewPairingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5BE01D02AF661D70064FC88 /* NewPairingView.swift */; }; - C5BE01DF2AF692D80064FC88 /* WalletConnectRouter in Frameworks */ = {isa = PBXBuildFile; productRef = C5BE01DE2AF692D80064FC88 /* WalletConnectRouter */; }; C5BE01E22AF693080064FC88 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5BE01E12AF693080064FC88 /* Application.swift */; }; C5BE01E32AF696540064FC88 /* SceneViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C56EE264293F56D6004840D1 /* SceneViewController.swift */; }; C5BE01E42AF697100064FC88 /* UIColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C56EE26B293F56D6004840D1 /* UIColor.swift */; }; @@ -123,10 +109,8 @@ CF1A594B29E5876600AAC16B /* DAppEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1A594229E5876600AAC16B /* DAppEngine.swift */; }; CF1A594C29E5876600AAC16B /* RoutingEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1A594329E5876600AAC16B /* RoutingEngine.swift */; }; CF1A594D29E5876600AAC16B /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF1A594429E5876600AAC16B /* App.swift */; }; - CF25F2892A432476009C7E49 /* WalletConnectModal in Frameworks */ = {isa = PBXBuildFile; productRef = CF25F2882A432476009C7E49 /* WalletConnectModal */; }; CF6704DF29E59DDC003326A4 /* XCUIElementQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF6704DE29E59DDC003326A4 /* XCUIElementQuery.swift */; }; CF6704E129E5A014003326A4 /* XCTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF6704E029E5A014003326A4 /* XCTestCase.swift */; }; - CFDB50722B2869AA00A0CBC2 /* WalletConnectModal in Frameworks */ = {isa = PBXBuildFile; productRef = CFDB50712B2869AA00A0CBC2 /* WalletConnectModal */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -238,7 +222,6 @@ A57E71A5291CF76400325797 /* ETHSigner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ETHSigner.swift; sourceTree = ""; }; A57E71A7291CF8A500325797 /* SOLSigner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SOLSigner.swift; sourceTree = ""; }; A58A1ECB29BF458600A82A20 /* ENSResolverTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ENSResolverTests.swift; sourceTree = ""; }; - A58E7CE828729F550082D443 /* Showcase.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Showcase.app; sourceTree = BUILT_PRODUCTS_DIR; }; A59CF4F5292F83D50031A42F /* DefaultSignerFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultSignerFactory.swift; sourceTree = ""; }; A5A0843B29D2F60A000B9B17 /* DefaultCryptoProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultCryptoProvider.swift; sourceTree = ""; }; A5A4FC722840C12C00BBEC1E /* UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -385,7 +368,6 @@ buildActionMask = 2147483647; files = ( 8448F1D427E4726F0000B866 /* WalletConnect in Frameworks */, - C5BE01DF2AF692D80064FC88 /* WalletConnectRouter in Frameworks */, 8421447B2C80A2B8004FF494 /* ReownAppKit in Frameworks */, A5B6C0F12A6EAB0800927332 /* WalletConnectNotify in Frameworks */, A54195A52934E83F0035AD19 /* Web3 in Frameworks */, @@ -393,7 +375,6 @@ 8486EDD32B4F2EA6008E53C3 /* SwiftMessages in Frameworks */, 84943C7B2A9BA206007EBAC2 /* Mixpanel in Frameworks */, A573C53929EC365000E3CBFD /* HDWalletKit in Frameworks */, - CFDB50722B2869AA00A0CBC2 /* WalletConnectModal in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -407,21 +388,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A58E7CE528729F550082D443 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A58EC618299D665A00F3452A /* Web3Inbox in Frameworks */, - A5629AEA2877F2D600094373 /* WalletConnectChat in Frameworks */, - CF25F2892A432476009C7E49 /* WalletConnectModal in Frameworks */, - A561C80029DF32CE00DF540D /* HDWalletKit in Frameworks */, - A59FAEC928B7B93A002BB66F /* Web3 in Frameworks */, - A5629AF22877F75100094373 /* Starscream in Frameworks */, - A59F877628B5462900A9CD80 /* WalletConnectAuth in Frameworks */, - A58EC611299D57B800F3452A /* AsyncButton in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; A5A4FC6F2840C12C00BBEC1E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -482,7 +448,6 @@ 84CE641C27981DED00142511 /* DApp.app */, A5A4FC722840C12C00BBEC1E /* UITests.xctest */, A5E03DED286464DB00888481 /* IntegrationTests.xctest */, - A58E7CE828729F550082D443 /* Showcase.app */, 84E6B84729787A8000428BAF /* PNDecryptionService.appex */, 844749F329B9E5B9005F520B /* RelayIntegrationTests.xctest */, CF1A593029E5873D00AAC16B /* EchoUITests.xctest */, @@ -1284,8 +1249,6 @@ A573C53829EC365000E3CBFD /* HDWalletKit */, A5B6C0F02A6EAB0800927332 /* WalletConnectNotify */, 84943C7A2A9BA206007EBAC2 /* Mixpanel */, - C5BE01DE2AF692D80064FC88 /* WalletConnectRouter */, - CFDB50712B2869AA00A0CBC2 /* WalletConnectModal */, 8486EDD22B4F2EA6008E53C3 /* SwiftMessages */, 8421447A2C80A2B8004FF494 /* ReownAppKit */, ); @@ -1315,33 +1278,6 @@ productReference = 84E6B84729787A8000428BAF /* PNDecryptionService.appex */; productType = "com.apple.product-type.app-extension"; }; - A58E7CE728729F550082D443 /* Showcase */ = { - isa = PBXNativeTarget; - buildConfigurationList = A58E7CFB28729F550082D443 /* Build configuration list for PBXNativeTarget "Showcase" */; - buildPhases = ( - A58E7CE428729F550082D443 /* Sources */, - A58E7CE528729F550082D443 /* Frameworks */, - A58E7CE628729F550082D443 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Showcase; - packageProductDependencies = ( - A5629AE92877F2D600094373 /* WalletConnectChat */, - A5629AF12877F75100094373 /* Starscream */, - A59F877528B5462900A9CD80 /* WalletConnectAuth */, - A59FAEC828B7B93A002BB66F /* Web3 */, - A58EC610299D57B800F3452A /* AsyncButton */, - A58EC617299D665A00F3452A /* Web3Inbox */, - A561C7FF29DF32CE00DF540D /* HDWalletKit */, - CF25F2882A432476009C7E49 /* WalletConnectModal */, - ); - productName = Showcase; - productReference = A58E7CE828729F550082D443 /* Showcase.app */; - productType = "com.apple.product-type.application"; - }; A5A4FC712840C12C00BBEC1E /* UITests */ = { isa = PBXNativeTarget; buildConfigurationList = A5A4FC7A2840C12C00BBEC1E /* Build configuration list for PBXNativeTarget "UITests" */; @@ -1422,9 +1358,6 @@ 84E6B84629787A8000428BAF = { CreatedOnToolsVersion = 14.2; }; - A58E7CE728729F550082D443 = { - CreatedOnToolsVersion = 13.3; - }; A5A4FC712840C12C00BBEC1E = { CreatedOnToolsVersion = 13.3; }; @@ -1461,7 +1394,6 @@ 84CE641B27981DED00142511 /* DApp */, A5A4FC712840C12C00BBEC1E /* UITests */, A5E03DEC286464DB00888481 /* IntegrationTests */, - A58E7CE728729F550082D443 /* Showcase */, 84E6B84629787A8000428BAF /* PNDecryptionService */, 844749F229B9E5B9005F520B /* RelayIntegrationTests */, CF1A592F29E5873D00AAC16B /* EchoUITests */, @@ -1494,13 +1426,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A58E7CE628729F550082D443 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; A5A4FC702840C12C00BBEC1E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1589,19 +1514,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A58E7CE428729F550082D443 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A5417BBE299BFC3E00B469F3 /* ImportAccount.swift in Sources */, - A51606FA2A2F47BD00CACB92 /* DefaultBIP44Provider.swift in Sources */, - A5A0843F29D2F625000B9B17 /* DefaultCryptoProvider.swift in Sources */, - A5C20229287EB34C007E3188 /* AccountStorage.swift in Sources */, - A5A8E47F293A1D0000FEB97D /* DefaultSocketFactory.swift in Sources */, - A5A8E480293A1D0000FEB97D /* DefaultSignerFactory.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; A5A4FC6E2840C12C00BBEC1E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1985,77 +1897,6 @@ }; name = Release; }; - A58E7CF928729F550082D443 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CODE_SIGN_IDENTITY = "Apple Development"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 173; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = W5R8AG9K22; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Showcase/Other/Info.plist; - INFOPLIST_KEY_NSCameraUsageDescription = "Allow the app to scan for QR codes"; - INFOPLIST_KEY_NSMicrophoneUsageDescription = "If you want to use the microphone, you have to give permission."; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.walletconnect.chat; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.walletconnect.chat"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - A58E7CFA28729F550082D443 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 173; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = W5R8AG9K22; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Showcase/Other/Info.plist; - INFOPLIST_KEY_NSCameraUsageDescription = "Allow the app to scan for QR codes"; - INFOPLIST_KEY_NSMicrophoneUsageDescription = "If you want to use the microphone, you have to give permission."; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; - IPHONEOS_DEPLOYMENT_TARGET = 16.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.walletconnect.chat; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.walletconnect.chat"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; A5A4FC782840C12C00BBEC1E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2207,15 +2048,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A58E7CFB28729F550082D443 /* Build configuration list for PBXNativeTarget "Showcase" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A58E7CF928729F550082D443 /* Debug */, - A58E7CFA28729F550082D443 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; A5A4FC7A2840C12C00BBEC1E /* Build configuration list for PBXNativeTarget "UITests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2345,20 +2177,6 @@ package = A5AE354528A1A2AC0059AE8A /* XCRemoteSwiftPackageReference "Web3" */; productName = Web3; }; - A561C7FF29DF32CE00DF540D /* HDWalletKit */ = { - isa = XCSwiftPackageProductDependency; - package = A561C7FE29DF32CE00DF540D /* XCRemoteSwiftPackageReference "HDWallet" */; - productName = HDWalletKit; - }; - A5629AE92877F2D600094373 /* WalletConnectChat */ = { - isa = XCSwiftPackageProductDependency; - productName = WalletConnectChat; - }; - A5629AF12877F75100094373 /* Starscream */ = { - isa = XCSwiftPackageProductDependency; - package = A5D85224286333D500DAF5C3 /* XCRemoteSwiftPackageReference "Starscream" */; - productName = Starscream; - }; A573C53829EC365000E3CBFD /* HDWalletKit */ = { isa = XCSwiftPackageProductDependency; package = A561C7FE29DF32CE00DF540D /* XCRemoteSwiftPackageReference "HDWallet" */; @@ -2369,24 +2187,6 @@ package = A561C7FE29DF32CE00DF540D /* XCRemoteSwiftPackageReference "HDWallet" */; productName = HDWalletKit; }; - A58EC610299D57B800F3452A /* AsyncButton */ = { - isa = XCSwiftPackageProductDependency; - package = A58EC60F299D57B800F3452A /* XCRemoteSwiftPackageReference "swiftui-async-button" */; - productName = AsyncButton; - }; - A58EC617299D665A00F3452A /* Web3Inbox */ = { - isa = XCSwiftPackageProductDependency; - productName = Web3Inbox; - }; - A59F877528B5462900A9CD80 /* WalletConnectAuth */ = { - isa = XCSwiftPackageProductDependency; - productName = WalletConnectAuth; - }; - A59FAEC828B7B93A002BB66F /* Web3 */ = { - isa = XCSwiftPackageProductDependency; - package = A5AE354528A1A2AC0059AE8A /* XCRemoteSwiftPackageReference "Web3" */; - productName = Web3; - }; A5A650C92B062A1400F9AD4B /* Mixpanel */ = { isa = XCSwiftPackageProductDependency; package = 84943C792A9BA206007EBAC2 /* XCRemoteSwiftPackageReference "mixpanel-swift" */; @@ -2423,18 +2223,6 @@ isa = XCSwiftPackageProductDependency; productName = WalletConnect; }; - C5BE01DE2AF692D80064FC88 /* WalletConnectRouter */ = { - isa = XCSwiftPackageProductDependency; - productName = WalletConnectRouter; - }; - CF25F2882A432476009C7E49 /* WalletConnectModal */ = { - isa = XCSwiftPackageProductDependency; - productName = WalletConnectModal; - }; - CFDB50712B2869AA00A0CBC2 /* WalletConnectModal */ = { - isa = XCSwiftPackageProductDependency; - productName = WalletConnectModal; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 764E1D3426F8D3FC00A1FB15 /* Project object */; diff --git a/Example/WalletApp/PresentationLayer/Wallet/AuthRequest/AuthRequestPresenter.swift b/Example/WalletApp/PresentationLayer/Wallet/AuthRequest/AuthRequestPresenter.swift index d35bb497e..ecac1c074 100644 --- a/Example/WalletApp/PresentationLayer/Wallet/AuthRequest/AuthRequestPresenter.swift +++ b/Example/WalletApp/PresentationLayer/Wallet/AuthRequest/AuthRequestPresenter.swift @@ -2,7 +2,7 @@ import UIKit import Combine import ReownWalletKit -import WalletConnectRouter +import ReownRouter final class AuthRequestPresenter: ObservableObject { enum Errors: Error { @@ -63,7 +63,7 @@ final class AuthRequestPresenter: ObservableObject { ActivityIndicatorManager.shared.stop() /* Redirect */ if let uri = request.requester.redirect?.native { - WalletConnectRouter.goBack(uri: uri) + ReownRouter.goBack(uri: uri) router.dismiss() } else { showSignedSheet.toggle() @@ -87,7 +87,7 @@ final class AuthRequestPresenter: ObservableObject { /* Redirect */ if let uri = request.requester.redirect?.native { - WalletConnectRouter.goBack(uri: uri) + ReownRouter.goBack(uri: uri) router.dismiss() } else { showSignedSheet.toggle() @@ -108,7 +108,7 @@ final class AuthRequestPresenter: ObservableObject { /* Redirect */ if let uri = request.requester.redirect?.native { - WalletConnectRouter.goBack(uri: uri) + ReownRouter.goBack(uri: uri) } ActivityIndicatorManager.shared.stop() diff --git a/Example/WalletApp/PresentationLayer/Wallet/SessionProposal/SessionProposalInteractor.swift b/Example/WalletApp/PresentationLayer/Wallet/SessionProposal/SessionProposalInteractor.swift index 24961021f..c5580bda0 100644 --- a/Example/WalletApp/PresentationLayer/Wallet/SessionProposal/SessionProposalInteractor.swift +++ b/Example/WalletApp/PresentationLayer/Wallet/SessionProposal/SessionProposalInteractor.swift @@ -1,7 +1,7 @@ import Foundation import ReownWalletKit -import WalletConnectRouter +import ReownRouter final class SessionProposalInteractor { func approve(proposal: Session.Proposal, account: Account) async throws -> Bool { @@ -42,7 +42,7 @@ final class SessionProposalInteractor { } _ = try await WalletKit.instance.approve(proposalId: proposal.id, namespaces: sessionNamespaces, sessionProperties: proposal.sessionProperties) if let uri = proposal.proposer.redirect?.native { - WalletConnectRouter.goBack(uri: uri) + ReownRouter.goBack(uri: uri) return false } else { return true @@ -53,7 +53,7 @@ final class SessionProposalInteractor { try await WalletKit.instance.rejectSession(proposalId: proposal.id, reason: .userRejected) /* Redirect */ if let uri = proposal.proposer.redirect?.native { - WalletConnectRouter.goBack(uri: uri) + ReownRouter.goBack(uri: uri) } } } diff --git a/Example/WalletApp/PresentationLayer/Wallet/SessionRequest/SessionRequestInteractor.swift b/Example/WalletApp/PresentationLayer/Wallet/SessionRequest/SessionRequestInteractor.swift index 97f5ce07d..b33e79088 100644 --- a/Example/WalletApp/PresentationLayer/Wallet/SessionRequest/SessionRequestInteractor.swift +++ b/Example/WalletApp/PresentationLayer/Wallet/SessionRequest/SessionRequestInteractor.swift @@ -1,7 +1,7 @@ import Foundation import ReownWalletKit -import WalletConnectRouter +import ReownRouter final class SessionRequestInteractor { func respondSessionRequest(sessionRequest: Request, importAccount: ImportAccount) async throws -> Bool { @@ -15,7 +15,7 @@ final class SessionRequestInteractor { /* Redirect */ let session = getSession(topic: sessionRequest.topic) if let uri = session?.peer.redirect?.native { - WalletConnectRouter.goBack(uri: uri) + ReownRouter.goBack(uri: uri) return false } else { return true @@ -35,7 +35,7 @@ final class SessionRequestInteractor { /* Redirect */ let session = getSession(topic: sessionRequest.topic) if let uri = session?.peer.redirect?.native { - WalletConnectRouter.goBack(uri: uri) + ReownRouter.goBack(uri: uri) } } diff --git a/Example/WalletConnect-Package.xctestplan b/Example/WalletConnect-Package.xctestplan index e04966681..b41bdc90d 100644 --- a/Example/WalletConnect-Package.xctestplan +++ b/Example/WalletConnect-Package.xctestplan @@ -68,13 +68,6 @@ "name" : "WalletConnectUtilsTests" } }, - { - "target" : { - "containerPath" : "container:", - "identifier" : "WalletConnectModalTests", - "name" : "WalletConnectModalTests" - } - }, { "target" : { "containerPath" : "container:", diff --git a/Package.swift b/Package.swift index 0c4831a99..47ca841d9 100644 --- a/Package.swift +++ b/Package.swift @@ -26,17 +26,14 @@ let package = Package( name: "WalletConnectPush", targets: ["WalletConnectPush"]), .library( - name: "WalletConnectRouter", - targets: ["WalletConnectRouter", "WalletConnectRouterLegacy"]), + name: "ReownRouter", + targets: ["ReownRouter", "WalletConnectRouterLegacy"]), .library( name: "WalletConnectNetworking", targets: ["WalletConnectNetworking"]), .library( name: "WalletConnectVerify", targets: ["WalletConnectVerify"]), - .library( - name: "WalletConnectModal", - targets: ["WalletConnectModal"]), .library( name: "WalletConnectIdentity", targets: ["WalletConnectIdentity"]), @@ -116,11 +113,11 @@ let package = Package( .target( name: "WalletConnectRouterLegacy", dependencies: [], - path: "Sources/WalletConnectRouter/RouterLegacy"), + path: "Sources/ReownRouter/RouterLegacy"), .target( - name: "WalletConnectRouter", + name: "ReownRouter", dependencies: ["WalletConnectRouterLegacy"], - path: "Sources/WalletConnectRouter/Router"), + path: "Sources/ReownRouter/Router"), .target( name: "WalletConnectVerify", dependencies: ["WalletConnectUtils", "WalletConnectNetworking", "WalletConnectJWT"], @@ -131,16 +128,6 @@ let package = Package( .target( name: "Events", dependencies: ["WalletConnectUtils", "WalletConnectNetworking"]), - .target( - name: "WalletConnectModal", - dependencies: ["QRCode", "WalletConnectSign"], - exclude: ["Secrets/secrets.json.sample"], - resources: [ - .copy("Secrets/secrets.json"), - .copy("Resources/Assets.xcassets"), - .process("Resources/PrivacyInfo.xcprivacy"), - ] - ), .target( name: "ReownAppKit", dependencies: [ @@ -201,9 +188,6 @@ let package = Package( .testTarget( name: "CommonsTests", dependencies: ["Commons", "TestingUtils"]), - .testTarget( - name: "WalletConnectModalTests", - dependencies: ["WalletConnectModal", "TestingUtils"]), .testTarget( name: "EventsTests", dependencies: ["Events"]), diff --git a/README.md b/README.md index 3b47fb440..c2b5a4084 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Swift implementation of WalletKit and AppKit for native iOS applications. - [Beginner guide to WalletConnect v2.0 for iOS Developers](https://medium.com/walletconnect/beginner-guide-to-walletconnect-v2-0-for-swift-developers-4534b0975218) - [Protocol Documentation](https://github.com/WalletConnect/walletconnect-specs) - [Glossary](https://docs.walletconnect.com/2.0/introduction/glossary) -- [Migration guide to AppKit](https://github.com/WalletConnect/walletconnect-docs/blob/main/docs/swift/guides/web3wallet-migration.md) +- [Migration guide to AppKit](https://gist.github.com/llbartekll/a6fb18b48af837bcc46bb75b3eeaa781) - [Migration guide to WalletKit](https://github.com/WalletConnect/walletconnect-docs/blob/main/docs/swift/guides/web3wallet-migration.md) diff --git a/Sources/WalletConnectRouter/Router/Router.swift b/Sources/ReownRouter/Router/Router.swift similarity index 90% rename from Sources/WalletConnectRouter/Router/Router.swift rename to Sources/ReownRouter/Router/Router.swift index 97db89059..00a01db04 100644 --- a/Sources/WalletConnectRouter/Router/Router.swift +++ b/Sources/ReownRouter/Router/Router.swift @@ -1,6 +1,6 @@ #if os(iOS) import UIKit -public struct WalletConnectRouter { +public struct ReownRouter { public static func goBack(uri: String) { if #available(iOS 17, *) { DispatchQueue.main.async { diff --git a/Sources/ReownRouter/Router/RouterImports.swift b/Sources/ReownRouter/Router/RouterImports.swift new file mode 100644 index 000000000..640742f30 --- /dev/null +++ b/Sources/ReownRouter/Router/RouterImports.swift @@ -0,0 +1,3 @@ +#if !CocoaPods +@_exported import ReownRouter +#endif diff --git a/Sources/WalletConnectRouter/RouterLegacy/Router.m b/Sources/ReownRouter/RouterLegacy/Router.m similarity index 100% rename from Sources/WalletConnectRouter/RouterLegacy/Router.m rename to Sources/ReownRouter/RouterLegacy/Router.m diff --git a/Sources/WalletConnectRouter/RouterLegacy/include/Router.h b/Sources/ReownRouter/RouterLegacy/include/Router.h similarity index 100% rename from Sources/WalletConnectRouter/RouterLegacy/include/Router.h rename to Sources/ReownRouter/RouterLegacy/include/Router.h diff --git a/Sources/ReownRouter/RouterLegacy/include/module.modulemap b/Sources/ReownRouter/RouterLegacy/include/module.modulemap new file mode 100644 index 000000000..f076813dc --- /dev/null +++ b/Sources/ReownRouter/RouterLegacy/include/module.modulemap @@ -0,0 +1,3 @@ +module ReownRouter { + header "Router.h" +} diff --git a/Sources/WalletConnectModal/Environment+ProjectId.swift b/Sources/WalletConnectModal/Environment+ProjectId.swift deleted file mode 100644 index 30e272aab..000000000 --- a/Sources/WalletConnectModal/Environment+ProjectId.swift +++ /dev/null @@ -1,12 +0,0 @@ -import SwiftUI - -private struct ProjectIdKey: EnvironmentKey { - static let defaultValue: String = "" -} - -extension EnvironmentValues { - var projectId: String { - get { self[ProjectIdKey.self] } - set { self[ProjectIdKey.self] = newValue } - } -} diff --git a/Sources/WalletConnectModal/Extensions/Bundle.swift b/Sources/WalletConnectModal/Extensions/Bundle.swift deleted file mode 100644 index a68d32564..000000000 --- a/Sources/WalletConnectModal/Extensions/Bundle.swift +++ /dev/null @@ -1,7 +0,0 @@ -import Foundation - -#if CocoaPods -extension Bundle { - static var module: Bundle { Bundle.init(for: WalletConnectModal.self) } -} -#endif diff --git a/Sources/WalletConnectModal/Extensions/Collection.swift b/Sources/WalletConnectModal/Extensions/Collection.swift deleted file mode 100644 index 4fbe17dcd..000000000 --- a/Sources/WalletConnectModal/Extensions/Collection.swift +++ /dev/null @@ -1,8 +0,0 @@ -import Foundation - -extension Collection { - /// Returns the element at the specified index if it is within bounds, otherwise nil. - subscript (safe index: Index) -> Element? { - return indices.contains(index) ? self[index] : nil - } -} diff --git a/Sources/WalletConnectModal/Extensions/Image+Backport.swift b/Sources/WalletConnectModal/Extensions/Image+Backport.swift deleted file mode 100644 index bab1f5e17..000000000 --- a/Sources/WalletConnectModal/Extensions/Image+Backport.swift +++ /dev/null @@ -1,12 +0,0 @@ -import SwiftUI - -extension Image { - - init(sfSymbolName: String) { - if #available(macOS 11, iOS 13, *) { - self.init(systemName: sfSymbolName) - } else { - self.init("", bundle: nil) - } - } -} diff --git a/Sources/WalletConnectModal/Extensions/View+Backport.swift b/Sources/WalletConnectModal/Extensions/View+Backport.swift deleted file mode 100644 index a2ed92408..000000000 --- a/Sources/WalletConnectModal/Extensions/View+Backport.swift +++ /dev/null @@ -1,50 +0,0 @@ -import Combine -import SwiftUI - -extension View { - - #if os(iOS) || os(tvOS) - - /// A backwards compatible wrapper for iOS 14 `onChange` - @ViewBuilder - func onChangeBackported(of value: T, perform: @escaping (T) -> Void) -> some View { - if #available(iOS 14.0, tvOS 14.0, *) { - self.onChange(of: value, perform: perform) - } else { - self.onReceive(Just(value)) { value in - perform(value) - } - } - } - - #elseif os(macOS) - - @ViewBuilder - func onChangeBackported(of value: T, perform: @escaping (T) -> Void) -> some View { - self.onReceive(Just(value)) { value in - perform(value) - } - } - - #endif - - #if os(iOS) || os(macOS) - - @ViewBuilder - func onTapGestureBackported(count: Int = 1, perform action: @escaping () -> Void) -> some View { - self.onTapGesture(count: count, perform: action) - } - - #elseif os(tvOS) - - @ViewBuilder - func onTapGestureBackported(count: Int = 1, perform action: @escaping () -> Void) -> some View { - if #available(tvOS 16.0, *) { - self.onTapGesture(count: count, perform: action) - } else { - self - } - } - - #endif -} diff --git a/Sources/WalletConnectModal/Extensions/View+Modifiers.swift b/Sources/WalletConnectModal/Extensions/View+Modifiers.swift deleted file mode 100644 index c5f6d00bf..000000000 --- a/Sources/WalletConnectModal/Extensions/View+Modifiers.swift +++ /dev/null @@ -1,20 +0,0 @@ -import SwiftUI - -extension View { - /// Applies the given transform if the given condition evaluates to `true`. - /// - Parameters: - /// - condition: The condition to evaluate. - /// - transform: The transform to apply to the source `View`. - /// - Returns: Either the original `View` or the modified `View` if the condition is `true`. - @ViewBuilder func `if`(_ condition: @autoclosure () -> Bool, transform: (Self) -> Content) -> some View { - if condition() { - transform(self) - } else { - self - } - } - - func transform(@ViewBuilder _ transform: (Self) -> some View) -> some View { - transform(self) - } -} diff --git a/Sources/WalletConnectModal/Extensions/View+RoundedCorners.swift b/Sources/WalletConnectModal/Extensions/View+RoundedCorners.swift deleted file mode 100644 index c47500a21..000000000 --- a/Sources/WalletConnectModal/Extensions/View+RoundedCorners.swift +++ /dev/null @@ -1,90 +0,0 @@ -import SwiftUI - -#if canImport(UIKit) - -extension View { - func cornerRadius(_ radius: CGFloat, corners: UIRectCorner) -> some View { - clipShape( RoundedCorner(radius: radius, corners: corners) ) - } -} - -struct RoundedCorner: Shape { - - var radius: CGFloat = .infinity - var corners: UIRectCorner = .allCorners - - func path(in rect: CGRect) -> Path { - let path = UIBezierPath(roundedRect: rect, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) - return Path(path.cgPath) - } -} - -#elseif canImport(AppKit) - -struct RectCorner: OptionSet { - - let rawValue: Int - - static let topLeft = RectCorner(rawValue: 1 << 0) - static let topRight = RectCorner(rawValue: 1 << 1) - static let bottomRight = RectCorner(rawValue: 1 << 2) - static let bottomLeft = RectCorner(rawValue: 1 << 3) - - static let allCorners: RectCorner = [.topLeft, topRight, .bottomLeft, .bottomRight] -} - - -// draws shape with specified rounded corners applying corner radius -struct RoundedCorner: Shape { - - var radius: CGFloat = .zero - var corners: RectCorner = .allCorners - - func path(in rect: CGRect) -> Path { - var path = Path() - - let p1 = CGPoint(x: rect.minX, y: corners.contains(.topLeft) ? rect.minY + radius : rect.minY ) - let p2 = CGPoint(x: corners.contains(.topLeft) ? rect.minX + radius : rect.minX, y: rect.minY ) - - let p3 = CGPoint(x: corners.contains(.topRight) ? rect.maxX - radius : rect.maxX, y: rect.minY ) - let p4 = CGPoint(x: rect.maxX, y: corners.contains(.topRight) ? rect.minY + radius : rect.minY ) - - let p5 = CGPoint(x: rect.maxX, y: corners.contains(.bottomRight) ? rect.maxY - radius : rect.maxY ) - let p6 = CGPoint(x: corners.contains(.bottomRight) ? rect.maxX - radius : rect.maxX, y: rect.maxY ) - - let p7 = CGPoint(x: corners.contains(.bottomLeft) ? rect.minX + radius : rect.minX, y: rect.maxY ) - let p8 = CGPoint(x: rect.minX, y: corners.contains(.bottomLeft) ? rect.maxY - radius : rect.maxY ) - - - path.move(to: p1) - path.addArc(tangent1End: CGPoint(x: rect.minX, y: rect.minY), - tangent2End: p2, - radius: radius) - path.addLine(to: p3) - path.addArc(tangent1End: CGPoint(x: rect.maxX, y: rect.minY), - tangent2End: p4, - radius: radius) - path.addLine(to: p5) - path.addArc(tangent1End: CGPoint(x: rect.maxX, y: rect.maxY), - tangent2End: p6, - radius: radius) - path.addLine(to: p7) - path.addArc(tangent1End: CGPoint(x: rect.minX, y: rect.maxY), - tangent2End: p8, - radius: radius) - path.closeSubpath() - - return path - } -} - - -extension View { - func cornerRadius(_ radius: CGFloat, corners: RectCorner) -> some View { - clipShape( RoundedCorner(radius: radius, corners: corners) ) - } -} - -#endif - - diff --git a/Sources/WalletConnectModal/Extensions/View+Size.swift b/Sources/WalletConnectModal/Extensions/View+Size.swift deleted file mode 100644 index e23805282..000000000 --- a/Sources/WalletConnectModal/Extensions/View+Size.swift +++ /dev/null @@ -1,17 +0,0 @@ -import SwiftUI - -public extension View { - func readSize(onChange: @escaping (CGSize) -> Void) -> some View { - background( - GeometryReader { geometryProxy in - Color.clear.preference(key: SizePreferenceKey.self, value: geometryProxy.size) - } - ) - .onPreferenceChange(SizePreferenceKey.self, perform: onChange) - } -} - -private struct SizePreferenceKey: PreferenceKey { - static var defaultValue: CGSize = .zero - static func reduce(value _: inout CGSize, nextValue _: () -> CGSize) {} -} diff --git a/Sources/WalletConnectModal/Helpers/UIApplicationWrapper.swift b/Sources/WalletConnectModal/Helpers/UIApplicationWrapper.swift deleted file mode 100644 index eb8bee531..000000000 --- a/Sources/WalletConnectModal/Helpers/UIApplicationWrapper.swift +++ /dev/null @@ -1,36 +0,0 @@ -import Foundation - -struct UIApplicationWrapper { - let openURL: (URL, ((Bool) -> Void)?) -> Void - let canOpenURL: (URL) -> Bool -} - -#if canImport(UIKit) -import UIKit - -extension UIApplicationWrapper { - static let live = Self( - openURL: { url, completion in - UIApplication.shared.open(url, completionHandler: completion) - }, - canOpenURL: { url in - UIApplication.shared.canOpenURL(url) - } - ) -} - -#elseif canImport(AppKit) - -import AppKit - -extension UIApplicationWrapper { - static let live = Self( - openURL: { url, completion in - NSWorkspace.shared.open(url) - }, - canOpenURL: { url in - return true - } - ) -} -#endif diff --git a/Sources/WalletConnectModal/Mocks/Listing+Mocks.swift b/Sources/WalletConnectModal/Mocks/Listing+Mocks.swift deleted file mode 100644 index 721524d4e..000000000 --- a/Sources/WalletConnectModal/Mocks/Listing+Mocks.swift +++ /dev/null @@ -1,43 +0,0 @@ -import Foundation - -#if DEBUG - -extension Wallet { - static let stubList: [Wallet] = [ - Wallet( - id: UUID().uuidString, - name: "Sample Wallet", - homepage: "https://example.com/cool", - imageId: "0528ee7e-16d1-4089-21e3-bbfb41933100", - order: 1, - mobileLink: "https://sample.com/foo/universal", - desktopLink: "sampleapp://deeplink", - webappLink: "https://sample.com/foo/webapp", - appStore: "" - ), - Wallet( - id: UUID().uuidString, - name: "Cool Wallet", - homepage: "https://example.com/cool", - imageId: "5195e9db-94d8-4579-6f11-ef553be95100", - order: 2, - mobileLink: "awsomeapp://", - desktopLink: "awsomeapp://deeplink", - webappLink: "https://awesome.com/foo/webapp", - appStore: "" - ), - Wallet( - id: UUID().uuidString, - name: "Cool Wallet", - homepage: "https://example.com/cool", - imageId: "3913df81-63c2-4413-d60b-8ff83cbed500", - order: 3, - mobileLink: "https://cool.com/foo/universal", - desktopLink: "coolapp://deeplink", - webappLink: "https://cool.com/foo/webapp", - appStore: "" - ) - ] -} - -#endif diff --git a/Sources/WalletConnectModal/Modal/Modal+Previews.swift b/Sources/WalletConnectModal/Modal/Modal+Previews.swift deleted file mode 100644 index 836c3cd75..000000000 --- a/Sources/WalletConnectModal/Modal/Modal+Previews.swift +++ /dev/null @@ -1,55 +0,0 @@ -#if DEBUG - -import SwiftUI - -class WebSocketMock: WebSocketConnecting { - var request: URLRequest = .init(url: URL(string: "wss://relay.walletconnect.com")!) - - var onText: ((String) -> Void)? - var onConnect: (() -> Void)? - var onDisconnect: ((Error?) -> Void)? - var sendCallCount: Int = 0 - var isConnected: Bool = false - - func connect() {} - func disconnect() {} - func write(string: String, completion: (() -> Void)?) {} -} - -class WebSocketFactoryMock: WebSocketFactory { - func create(with url: URL) -> WebSocketConnecting { - WebSocketMock() - } -} - -struct ModalContainerView_Previews: PreviewProvider { - - static var previews: some View { - Content() - .previewLayout(.sizeThatFits) - } - - struct Content: View { - - init() { - - let projectId = Secrets.load().projectID - let metadata = AppMetadata( - name: "Showcase App", - description: "Showcase description", - url: "example.wallet", - icons: ["https://avatars.githubusercontent.com/u/37784886"], - redirect: try! AppMetadata.Redirect(native: "showcase://", universal: nil) - ) - - Networking.configure(groupIdentifier: "group.com.walletconnect.sdk", projectId: projectId, socketFactory: WebSocketFactoryMock()) - WalletConnectModal.configure(projectId: projectId, metadata: metadata) - } - - var body: some View { - ModalContainerView() - } - } -} - -#endif diff --git a/Sources/WalletConnectModal/Modal/ModalContainerView.swift b/Sources/WalletConnectModal/Modal/ModalContainerView.swift deleted file mode 100644 index ba5ffb9cf..000000000 --- a/Sources/WalletConnectModal/Modal/ModalContainerView.swift +++ /dev/null @@ -1,66 +0,0 @@ -import SwiftUI - -struct ModalContainerView: View { - @Environment(\.presentationMode) var presentationMode - - @State var showModal: Bool = false - - var body: some View { - VStack(spacing: 0) { - Color.clear - - if showModal { - ModalSheet( - viewModel: .init( - isShown: $showModal, - interactor: DefaultModalSheetInteractor() - ) - ) - .environment(\.projectId, WalletConnectModal.config.projectId) - .transition(.move(edge: .bottom)) - .animation(.spring(), value: showModal) - } - } - .background( - Color.thickOverlay - .colorScheme(.light) - .opacity(showModal ? 1 : 0) - .onTapGestureBackported { - withAnimation { - showModal = false - } - } - ) - .edgesIgnoringSafeArea(.all) - .transform { - #if os(iOS) - if #available(iOS 14.0, *) { - $0.ignoresSafeArea(.keyboard, edges: .bottom) - } else { - $0 - } - #else - $0 - #endif - } - .onChangeBackported(of: showModal, perform: { newValue in - if newValue == false { - withAnimation { - dismiss() - } - } - }) - .onAppear { - withAnimation { - showModal = true - } - } - } - - private func dismiss() { - // Small delay so the sliding transition can happen before cross disolve starts - DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { - presentationMode.wrappedValue.dismiss() - } - } -} diff --git a/Sources/WalletConnectModal/Modal/ModalInteractor.swift b/Sources/WalletConnectModal/Modal/ModalInteractor.swift deleted file mode 100644 index acd41c5ce..000000000 --- a/Sources/WalletConnectModal/Modal/ModalInteractor.swift +++ /dev/null @@ -1,40 +0,0 @@ - -import Combine -import Foundation - -protocol ModalSheetInteractor { - func getWallets(page: Int, entries: Int) async throws -> (Int, [Wallet]) - func createPairingAndConnect() async throws -> WalletConnectURI - - var sessionSettlePublisher: AnyPublisher { get } - var sessionRejectionPublisher: AnyPublisher<(Session.Proposal, Reason), Never> { get } -} - -final class DefaultModalSheetInteractor: ModalSheetInteractor { - lazy var sessionSettlePublisher: AnyPublisher = WalletConnectModal.instance.sessionSettlePublisher - lazy var sessionRejectionPublisher: AnyPublisher<(Session.Proposal, Reason), Never> = WalletConnectModal.instance.sessionRejectionPublisher - - func getWallets(page: Int, entries: Int) async throws -> (Int, [Wallet]) { - let httpClient = HTTPNetworkClient(host: "api.web3modal.org") - let response = try await httpClient.request( - GetWalletsResponse.self, - at: Web3ModalAPI.getWallets( - params: Web3ModalAPI.GetWalletsParams( - page: page, - entries: entries, - search: nil, - projectId: WalletConnectModal.config.projectId, - metadata: WalletConnectModal.config.metadata, - recommendedIds: WalletConnectModal.config.recommendedWalletIds, - excludedIds: WalletConnectModal.config.excludedWalletIds - ) - ) - ) - - return (response.count, response.data.compactMap { $0 }) - } - - func createPairingAndConnect() async throws -> WalletConnectURI { - try await WalletConnectModal.instance.connect() - } -} diff --git a/Sources/WalletConnectModal/Modal/ModalSheet.swift b/Sources/WalletConnectModal/Modal/ModalSheet.swift deleted file mode 100644 index 1bfdbaa59..000000000 --- a/Sources/WalletConnectModal/Modal/ModalSheet.swift +++ /dev/null @@ -1,211 +0,0 @@ -import SwiftUI - -public struct ModalSheet: View { - @ObservedObject var viewModel: ModalViewModel - - @Environment(\.verticalSizeClass) var verticalSizeClass - - @State var searchEditing = false - - public var body: some View { - VStack(spacing: 0) { - modalHeader() - - VStack(spacing: 0) { - contentHeader() - content() - } - .frame(maxWidth: .infinity) - .background(Color.background1) - .cornerRadius(30, corners: [.topLeft, .topRight]) - } - .edgesIgnoringSafeArea(.bottom) - .background( - VStack(spacing: 0) { - Color.accent - .frame(height: 90) - .cornerRadius(8, corners: [[.topLeft, .topRight]]) - Color.background1 - } - ) - .toastView(toast: $viewModel.toast) - .if(verticalSizeClass == .compact) { - $0.padding(.horizontal, 80) - } - .onAppear { - Task { - await viewModel.fetchWallets() - await viewModel.createURI() - } - } - } - - private func modalHeader() -> some View { - HStack(spacing: 0) { - Image(.walletconnect_logo) - .resizable() - .scaledToFit() - .frame(width: 180) - .padding(.leading, 10) - - Spacer() - - closeButton() - .padding(.trailing, 10) - } - .foregroundColor(Color.foreground1) - .frame(height: 48) - } - - private func contentHeader() -> some View { - HStack(spacing: 0) { - if viewModel.destinationStack.count > 1 { - backButton() - } - - Spacer() - - switch viewModel.destination { - case .welcome: - qrButton() - case .qr, .walletDetail: - copyButton() - default: - EmptyView() - } - } - .animation(.default, value: viewModel.destination) - .foregroundColor(.accent) - .frame(height: 60) - .overlay( - VStack { - if viewModel.destination.hasSearch { - HStack { - Image(sfSymbolName: "magnifyingglass") - TextField("Search", text: $viewModel.searchTerm, onEditingChanged: { editing in - self.searchEditing = editing - }) - .transform { view in - #if os(macOS) - view - #else - view.autocapitalization(.none) - #endif - } - } - .padding(.vertical, 4) - .padding(.horizontal, 10) - .background(Color.background3) - .foregroundColor(searchEditing ? .foreground1 : .foreground3) - .cornerRadius(28) - .overlay( - RoundedRectangle(cornerRadius: 28) - .stroke(searchEditing ? Color.accent : Color.thinOverlay, lineWidth: 1) - ) - .onDisappear { - searchEditing = false - } - .padding(.horizontal, 50) - } else { - Text(viewModel.destination.contentTitle) - .font(.system(size: 20).weight(.semibold)) - .foregroundColor(.foreground1) - .padding(.horizontal, 50) - } - } - ) - } - - @ViewBuilder - private func welcome() -> some View { - WalletList( - destination: .init(get: { - viewModel.destination - }, set: { _ in }), - viewModel: viewModel, - navigateTo: viewModel.navigateTo(_:), - onWalletTap: { viewModel.onWalletTap($0) } - ) - } - - private func qrCode() -> some View { - VStack { - if let uri = viewModel.uri { - QRCodeView(uri: uri) - } else { - ActivityIndicator(isAnimating: .constant(true)) - } - } - } - - @ViewBuilder - private func content() -> some View { - switch viewModel.destination { - case .welcome, - .viewAll: - welcome() - case .qr: - qrCode() - .padding(.bottom, 20) - case .getWallet: - GetAWalletView( - wallets: Array(viewModel.wallets.prefix(6)), - onWalletTap: viewModel.openAppstore(wallet:), - navigateToExternalLink: viewModel.navigateToExternalLink(_:) - ) - .frame(minHeight: verticalSizeClass == .compact ? 200 : 550) - .padding(.bottom, 20) - - case let .walletDetail(wallet): - WalletDetail( - viewModel: .init( - wallet: wallet, - deeplinkHandler: viewModel - ) - ) - } - } -} - -extension ModalSheet { - private func closeButton() -> some View { - Button { - viewModel.onCloseButton() - } label: { - Image(Asset.close) - .padding(8) - } - .buttonStyle(CircuralIconButtonStyle()) - } - - private func backButton() -> some View { - Button { - withAnimation { - viewModel.onBackButton() - } - } label: { - Image(sfSymbolName: "chevron.backward") - .padding(20) - } - } - - private func qrButton() -> some View { - Button { - withAnimation { - viewModel.navigateTo(.qr) - } - } label: { - Image(.qr_large) - .padding() - } - } - - private func copyButton() -> some View { - Button { - viewModel.onCopyButton() - } label: { - Image(.copy_large) - .padding() - } - } -} diff --git a/Sources/WalletConnectModal/Modal/ModalViewModel.swift b/Sources/WalletConnectModal/Modal/ModalViewModel.swift deleted file mode 100644 index 3a01cba3c..000000000 --- a/Sources/WalletConnectModal/Modal/ModalViewModel.swift +++ /dev/null @@ -1,381 +0,0 @@ - -import Combine -import Foundation -import SwiftUI - -enum Destination: Equatable { - case welcome - case viewAll - case qr - case walletDetail(Wallet) - case getWallet - - var contentTitle: String { - switch self { - case .welcome: - return "Connect your wallet" - case .viewAll: - return "View all" - case .qr: - return "Scan the code" - case .getWallet: - return "Get a wallet" - case let .walletDetail(wallet): - return wallet.name - } - } - - var hasSearch: Bool { - if case .viewAll = self { - return true - } - - return false - } -} - -final class ModalViewModel: ObservableObject { - var isShown: Binding - let interactor: ModalSheetInteractor - let uiApplicationWrapper: UIApplicationWrapper - let recentWalletStorage: RecentWalletsStorage - - @Published private(set) var destinationStack: [Destination] = [.welcome] - @Published private(set) var uri: String? - @Published private(set) var wallets: [Wallet] = [] - - @Published var searchTerm: String = "" - - @Published var toast: Toast? - - @Published private(set) var isThereMoreWallets: Bool = true - private var maxPage = Int.max - private var currentPage: Int = 0 - - var destination: Destination { - destinationStack.last! - } - - var filteredWallets: [Wallet] { - wallets - .sortByRecent() - .filter(searchTerm: searchTerm) - } - - private var disposeBag = Set() - private var deeplinkUri: String? - - init( - isShown: Binding, - interactor: ModalSheetInteractor, - uiApplicationWrapper: UIApplicationWrapper = .live, - recentWalletStorage: RecentWalletsStorage = RecentWalletsStorage() - ) { - self.isShown = isShown - self.interactor = interactor - self.uiApplicationWrapper = uiApplicationWrapper - self.recentWalletStorage = recentWalletStorage - - interactor.sessionSettlePublisher - .receive(on: DispatchQueue.main) - .sink { sessions in - print(sessions) - isShown.wrappedValue = false - self.toast = Toast(style: .success, message: "Session estabilished", duration: 5) - } - .store(in: &disposeBag) - - interactor.sessionRejectionPublisher - .receive(on: DispatchQueue.main) - .sink { _, reason in - - print(reason) - self.toast = Toast(style: .error, message: reason.message) - - Task { - await self.createURI() - } - } - .store(in: &disposeBag) - } - - @MainActor - func createURI() async { - do { - let wcUri = try await interactor.createPairingAndConnect() - uri = wcUri.absoluteString - deeplinkUri = wcUri.deeplinkUri - } catch { - print(error) - toast = Toast(style: .error, message: error.localizedDescription) - } - } - - func navigateTo(_ destination: Destination) { - guard self.destination != destination else { return } - destinationStack.append(destination) - } - - func navigateToExternalLink(_ url: URL) { - uiApplicationWrapper.openURL(url, nil) - } - - func onWalletTap(_ wallet: Wallet) { - setLastTimeUsed(wallet.id) - } - - func onBackButton() { - guard destinationStack.count != 1 else { return } - - withAnimation { - _ = destinationStack.popLast() - } - - if destinationStack.last?.hasSearch == false { - searchTerm = "" - } - } - - func onCopyButton() { - guard let uri else { - toast = Toast(style: .error, message: "No uri found") - return - } - - #if os(iOS) - - UIPasteboard.general.string = uri - - #elseif canImport(AppKit) - - NSPasteboard.general.setString(uri, forType: .string) - - #endif - - toast = Toast(style: .info, message: "URI copied into clipboard") - } - - func onCloseButton() { - withAnimation { - isShown.wrappedValue = false - } - } - - @MainActor - func fetchWallets() async { - let entries = 40 - - do { - guard currentPage <= maxPage else { - return - } - - currentPage += 1 - - if currentPage == maxPage { - isThereMoreWallets = false - } - - let (total, wallets) = try await interactor.getWallets(page: currentPage, entries: entries) - maxPage = Int(Double(total / entries).rounded(.up)) - - // Small deliberate delay to ensure animations execute properly - try await Task.sleep(nanoseconds: 500_000_000) - - loadRecentWallets() - checkWhetherInstalled(wallets: wallets) - - self.wallets.append(contentsOf: wallets - .sortByOrder() - .sortByInstalled() - ) - } catch { - toast = Toast(style: .error, message: error.localizedDescription) - } - } -} - -// MARK: - Sorting and filtering - -private extension Array where Element: Wallet { - func sortByOrder() -> [Wallet] { - sorted { - $0.order < $1.order - } - } - - func sortByInstalled() -> [Wallet] { - sorted { lhs, rhs in - if lhs.isInstalled, !rhs.isInstalled { - return true - } - - if !lhs.isInstalled, rhs.isInstalled { - return false - } - - return false - } - } - - func sortByRecent() -> [Wallet] { - sorted { lhs, rhs in - guard let lhsLastTimeUsed = lhs.lastTimeUsed else { - return false - } - - guard let rhsLastTimeUsed = rhs.lastTimeUsed else { - return true - } - - return lhsLastTimeUsed > rhsLastTimeUsed - } - } - - func filter(searchTerm: String) -> [Wallet] { - if searchTerm.isEmpty { return self } - - return filter { - $0.name.lowercased().contains(searchTerm.lowercased()) - } - } -} - -// MARK: - Recent & Installed Wallets - -private extension ModalViewModel { - func checkWhetherInstalled(wallets: [Wallet]) { - guard let schemes = Bundle.main.object(forInfoDictionaryKey: "LSApplicationQueriesSchemes") as? [String] else { - return - } - - wallets.forEach { - if - let walletScheme = $0.mobileLink, - !walletScheme.isEmpty, - schemes.contains(walletScheme.replacingOccurrences(of: "://", with: "")) - { - $0.isInstalled = uiApplicationWrapper.canOpenURL(URL(string: walletScheme)!) - } - } - } - - func loadRecentWallets() { - recentWalletStorage.recentWallets.forEach { wallet in - guard let lastTimeUsed = wallet.lastTimeUsed else { return } - setLastTimeUsed(wallet.id, date: lastTimeUsed) - } - } - - func setLastTimeUsed(_ id: String, date: Date = Date()) { - wallets.first { - $0.id == id - }?.lastTimeUsed = date - recentWalletStorage.recentWallets = wallets - } -} - -// MARK: - Deeplinking - -protocol WalletDeeplinkHandler { - func openAppstore(wallet: Wallet) - func navigateToDeepLink(wallet: Wallet, preferBrowser: Bool) -} - -extension ModalViewModel: WalletDeeplinkHandler { - func openAppstore(wallet: Wallet) { - guard - let storeLinkString = wallet.appStore, - let storeLink = URL(string: storeLinkString) - else { return } - - uiApplicationWrapper.openURL(storeLink, nil) - } - - func navigateToDeepLink(wallet: Wallet, preferBrowser: Bool) { - do { - let nativeScheme = preferBrowser ? wallet.webappLink : wallet.mobileLink - let nativeUrlString = try formatNativeUrlString(nativeScheme) - - if let nativeUrl = nativeUrlString?.toURL() { - uiApplicationWrapper.openURL(nativeUrl) { success in - if !success { - self.toast = Toast(style: .error, message: DeeplinkErrors.failedToOpen.localizedDescription) - } - } - } else { - throw DeeplinkErrors.noWalletLinkFound - } - } catch { - toast = Toast(style: .error, message: error.localizedDescription) - } - } -} - -private extension ModalViewModel { - enum DeeplinkErrors: LocalizedError { - case noWalletLinkFound - case uriNotCreated - case failedToOpen - - var errorDescription: String? { - switch self { - case .noWalletLinkFound: - return NSLocalizedString("No valid link for opening given wallet found", comment: "") - case .uriNotCreated: - return NSLocalizedString("Couldn't generate link due to missing connection URI", comment: "") - case .failedToOpen: - return NSLocalizedString("Given link couldn't be opened", comment: "") - } - } - } - - func isHttpUrl(url: String) -> Bool { - return url.hasPrefix("http://") || url.hasPrefix("https://") - } - - func formatNativeUrlString(_ string: String?) throws -> String? { - guard let string = string, !string.isEmpty else { return nil } - - if isHttpUrl(url: string) { - return try formatUniversalUrlString(string) - } - - var safeAppUrl = string - if !safeAppUrl.contains("://") { - safeAppUrl = safeAppUrl.replacingOccurrences(of: "/", with: "").replacingOccurrences(of: ":", with: "") - safeAppUrl = "\(safeAppUrl)://" - } - - guard let deeplinkUri else { - throw DeeplinkErrors.uriNotCreated - } - - return "\(safeAppUrl)wc?uri=\(deeplinkUri)" - } - - func formatUniversalUrlString(_ string: String?) throws -> String? { - guard let string = string, !string.isEmpty else { return nil } - - if !isHttpUrl(url: string) { - return try formatNativeUrlString(string) - } - - var plainAppUrl = string - if plainAppUrl.hasSuffix("/") { - plainAppUrl = String(plainAppUrl.dropLast()) - } - - guard let deeplinkUri else { - throw DeeplinkErrors.uriNotCreated - } - - return "\(plainAppUrl)/wc?uri=\(deeplinkUri)" - } -} - -private extension String { - func toURL() -> URL? { - URL(string: self) - } -} diff --git a/Sources/WalletConnectModal/Modal/RecentWalletStorage.swift b/Sources/WalletConnectModal/Modal/RecentWalletStorage.swift deleted file mode 100644 index 87ca09a09..000000000 --- a/Sources/WalletConnectModal/Modal/RecentWalletStorage.swift +++ /dev/null @@ -1,52 +0,0 @@ -import Foundation - -final class RecentWalletsStorage { - private let defaults: UserDefaults - - init(defaults: UserDefaults = .standard) { - self.defaults = defaults - } - - var recentWallets: [Wallet] { - get { - loadRecentWallets() - } - set { - saveRecentWallets(newValue) - } - } - - func loadRecentWallets() -> [Wallet] { - guard - let data = defaults.data(forKey: "recentWallets"), - let wallets = try? JSONDecoder().decode([Wallet].self, from: data) - else { - return [] - } - - return wallets.filter { wallet in - guard let lastTimeUsed = wallet.lastTimeUsed else { - assertionFailure("Shouldn't happen we stored wallet without `lastTimeUsed`") - return false - } - - // Consider Recent only for 3 days - return abs(lastTimeUsed.timeIntervalSinceNow) > (24 * 60 * 60 * 3) - } - } - - func saveRecentWallets(_ wallets: [Wallet]) { - - let subset = Array(wallets.filter { - $0.lastTimeUsed != nil - }.prefix(5)) - - guard - let walletsData = try? JSONEncoder().encode(subset) - else { - return - } - - defaults.set(walletsData, forKey: "recentWallets") - } -} diff --git a/Sources/WalletConnectModal/Modal/Screens/GetAWalletView.swift b/Sources/WalletConnectModal/Modal/Screens/GetAWalletView.swift deleted file mode 100644 index 0255cd648..000000000 --- a/Sources/WalletConnectModal/Modal/Screens/GetAWalletView.swift +++ /dev/null @@ -1,82 +0,0 @@ -import SwiftUI - -struct GetAWalletView: View { - let wallets: [Wallet] - let onWalletTap: (Wallet) -> Void - let navigateToExternalLink: (URL) -> Void - - var body: some View { - ScrollView { - List { - ForEach(wallets, id: \.id) { wallet in - Button { - onWalletTap(wallet) - } label: { - HStack { - WalletImage(wallet: wallet) - .frame(width: 40, height: 40) - - Text(wallet.name) - .font(.system(size: 16, weight: .medium)) - .padding(.horizontal) - - Spacer() - - Image(sfSymbolName: "chevron.right") - .font(.system(.footnote).weight(.semibold)) - } - } - } - } - .frame(minHeight: 400) - .listStyle(.plain) - - VStack(alignment: .center, spacing: 8) { - Text("Not what you’re looking for?") - .font( - .system(size: 16) - .weight(.semibold) - ) - .multilineTextAlignment(.center) - .foregroundColor(.foreground1) - - Text("With hundreds of wallets out there, there’s something for everyone ") - .font( - .system(size: 14) - .weight(.medium) - ) - .foregroundColor(.foreground2) - .fixedSize(horizontal: false, vertical: true) - - Button(action: { - navigateToExternalLink(URL(string: "https://walletconnect.com/explorer?type=wallet")!) - }) { - HStack { - Text("Explore Wallets") - Image(.external_link) - } - } - .buttonStyle(WCMMainButtonStyle()) - } - .multilineTextAlignment(.center) - .padding(.horizontal, 0) - .padding(.top, 0) - .frame(maxHeight: .infinity, alignment: .bottom) - } - } -} - -#if DEBUG - -struct GetAWalletView_Previews: PreviewProvider { - static var previews: some View { - GetAWalletView( - wallets: Wallet.stubList, - onWalletTap: { _ in }, - navigateToExternalLink: { _ in } - ) - .environment(\.projectId, Secrets.load().projectID) - } -} - -#endif diff --git a/Sources/WalletConnectModal/Modal/Screens/QRCodeView.swift b/Sources/WalletConnectModal/Modal/Screens/QRCodeView.swift deleted file mode 100644 index e889fd5c7..000000000 --- a/Sources/WalletConnectModal/Modal/Screens/QRCodeView.swift +++ /dev/null @@ -1,114 +0,0 @@ -import QRCode -import SwiftUI - -struct QRCodeView: View { - - @State var uri: String - - var body: some View { - - #if canImport(UIKit) - - let size: CGSize = .init( - width: UIScreen.main.bounds.width - 20, - height: UIScreen.main.bounds.height * 0.4 - ) - - #elseif canImport(AppKit) - - let size: CGSize = .init( - width: NSScreen.main!.frame.width, - height: NSScreen.main!.frame.height * 0.3 - ) - - #endif - - let height: CGFloat = min(size.width, size.height) - - VStack(alignment: .center) { - render( - content: uri, - size: .init(width: height, height: height) - ) - .colorScheme(.light) - .frame(width: height, height: height) - } - } - - private func render(content: String, size: CGSize) -> Image { - let doc = QRCode.Document( - utf8String: content, - errorCorrection: .quantize - ) - doc.design.shape.eye = QRCode.EyeShape.Squircle() - doc.design.shape.onPixels = QRCode.PixelShape.Vertical( - insetFraction: 0.2, - cornerRadiusFraction: 1 - ) - - doc.design.style.eye = QRCode.FillStyle.Solid(foreground1.cgColor) - doc.design.style.pupil = QRCode.FillStyle.Solid(foreground1.cgColor) - doc.design.style.onPixels = QRCode.FillStyle.Solid(foreground1.cgColor) - doc.design.style.background = QRCode.FillStyle.Solid(background1.cgColor) - - doc.logoTemplate = QRCode.LogoTemplate( - image: Asset.wc_logo.cgImage, - path: CGPath( - rect: CGRect(x: 0.35, y: 0.3875, width: 0.30, height: 0.225), - transform: nil - ) - ) - - if #available(macOS 11, *) { - return doc.imageUI( - size, label: Text("QR code with URI") - )! - } else { - return Image.init(sfSymbolName: "qrcode") - } - } -} - -#if canImport(UIKit) - -typealias Screen = UIScreen - -extension QRCodeView { - var foreground1: UIColor { - UIColor(AssetColor.foreground1) - } - - var background1: UIColor { - UIColor(AssetColor.background1) - } -} - -#elseif canImport(AppKit) - -typealias Screen = NSScreen - -extension QRCodeView { - var foreground1: NSColor { - NSColor(AssetColor.foreground1) - } - - var background1: NSColor { - NSColor(AssetColor.background1) - } -} - -#endif - -#if DEBUG -struct QRCodeView_Previews: PreviewProvider { - static let stubUri: String = Array(repeating: ["a", "b", "c", "1", "2", "3"], count: 10) - .flatMap { $0 } - .shuffled() - .joined() - - static var previews: some View { - QRCodeView(uri: stubUri) - .previewLayout(.sizeThatFits) - } -} -#endif diff --git a/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetail.swift b/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetail.swift deleted file mode 100644 index 6ff5a740a..000000000 --- a/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetail.swift +++ /dev/null @@ -1,192 +0,0 @@ -import SwiftUI - -struct WalletDetail: View { - @Environment(\.verticalSizeClass) var verticalSizeClass - - @ObservedObject var viewModel: WalletDetailViewModel - - @State var retryShown: Bool = false - - var body: some View { - VStack { - if viewModel.showToggle { - Web3ModalPicker( - WalletDetailViewModel.Platform.allCases, - selection: viewModel.preferredPlatform - ) { item in - - HStack { - switch item { - case .native: - Image(sfSymbolName: "iphone") - case .browser: - Image(sfSymbolName: "safari") - } - Text(item.rawValue.capitalized) - } - .font(.system(size: 14).weight(.semibold)) - .multilineTextAlignment(.center) - .foregroundColor(viewModel.preferredPlatform == item ? .foreground1 : .foreground2) - .frame(maxWidth: .infinity) - .contentShape(Rectangle()) - .padding(.horizontal, 8) - .padding(.vertical, 8) - .onTapGestureBackported { - withAnimation(.easeInOut(duration: 0.15)) { - viewModel.preferredPlatform = item - } - } - } - .pickerBackgroundColor(.background2) - .cornerRadius(20) - .borderWidth(1) - .borderColor(.thinOverlay) - .accentColor(.thinOverlay) - .frame(maxWidth: 250) - .padding() - } - - content() - .onAppear { - - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - viewModel.handle(.onAppear) - } - - if verticalSizeClass == .compact { - retryShown = true - } else { - DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) { - withAnimation { - retryShown = true - } - } - } - } - .onDisappear { - retryShown = false - } - .animation(.easeInOut, value: viewModel.preferredPlatform) - } - } - - @ViewBuilder - func content() -> some View { - if verticalSizeClass == .compact { - HStack(alignment: .top) { - walletImage() - .padding(.horizontal, 80) - .layoutPriority(1) - - VStack(spacing: 15) { - if retryShown { - retrySection() - } - - VStack { - Divider() - appStoreRow() - } - .opacity(viewModel.preferredPlatform != .native ? 0 : 1) - } - .padding(.horizontal, 20) - } - .padding(.bottom, 40) - } else { - VStack(spacing: 0) { - walletImage() - .padding(.vertical, 40) - - VStack(spacing: 15) { - if retryShown { - retrySection() - .frame(maxWidth: .infinity) - .padding(.top, 15) - } - - VStack { - Divider() - appStoreRow() - } - .opacity(viewModel.preferredPlatform != .native ? 0 : 1) - } - .padding(.horizontal, 20) - .padding(.bottom, 40) - .background(Color.background2) - } - } - } - - func walletImage() -> some View { - VStack(spacing: 20) { - WalletImage(wallet: viewModel.wallet, size: .large) - .frame(width: 96, height: 96) - .cornerRadius(24) - .overlay( - RoundedRectangle(cornerRadius: 24) - .stroke(.gray.opacity(0.4), lineWidth: 1) - ) - - Text("Continue in \(viewModel.wallet.name)...") - .font(.system(size: 16, weight: .medium)) - .foregroundColor(.foreground1) - } - } - - func retrySection() -> some View { - VStack(spacing: 15) { - Text("You can try opening \(viewModel.wallet.name) again \((viewModel.hasNativeLink && viewModel.showUniversalLink) ? "or try using a Universal Link instead" : "")") - .font(.system(size: 14, weight: .medium)) - .multilineTextAlignment(.center) - .foregroundColor(.foreground2) - .fixedSize(horizontal: false, vertical: true) - - HStack { - Button { - viewModel.handle(.didTapTryAgain) - } label: { - Text("Try Again") - } - .buttonStyle(WCMAccentButtonStyle()) - - if viewModel.showUniversalLink { - Button { - viewModel.handle(.didTapUniversalLink) - } label: { - Text("Universal link") - } - .buttonStyle(WCMAccentButtonStyle()) - } - } - } - .frame(height: 100) - } - - func appStoreRow() -> some View { - HStack(spacing: 0) { - HStack(spacing: 10) { - WalletImage(wallet: viewModel.wallet, size: .small) - .frame(width: 28, height: 28) - .cornerRadius(8) - - Text("Get \(viewModel.wallet.name)") - .font(.system(size: 16).weight(.semibold)) - .foregroundColor(.foreground1) - } - - Spacer() - - HStack(spacing: 3) { - Text("App Store") - .foregroundColor(.foreground2) - .font(.system(size: 14).weight(.semibold)) - - Image(sfSymbolName: "chevron.right") - .foregroundColor(.foreground2) - } - } - .onTapGestureBackported { - viewModel.handle(.didTapAppStore) - } - } -} diff --git a/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetailViewModel.swift b/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetailViewModel.swift deleted file mode 100644 index f1ee61ac5..000000000 --- a/Sources/WalletConnectModal/Modal/Screens/WalletDetail/WalletDetailViewModel.swift +++ /dev/null @@ -1,51 +0,0 @@ -import Foundation - -final class WalletDetailViewModel: ObservableObject { - enum Platform: String, CaseIterable, Identifiable { - case native - case browser - - var id: Self { self } - } - - enum Event { - case onAppear - case didTapUniversalLink - case didTapTryAgain - case didTapAppStore - } - - let wallet: Wallet - let deeplinkHandler: WalletDeeplinkHandler - - @Published var preferredPlatform: Platform = .native - - var showToggle: Bool { wallet.webappLink != nil && wallet.appStore != nil } - var showUniversalLink: Bool { preferredPlatform == .native && wallet.mobileLink?.isEmpty == false } - var hasNativeLink: Bool { wallet.mobileLink?.isEmpty == false } - - init( - wallet: Wallet, - deeplinkHandler: WalletDeeplinkHandler - ) { - self.wallet = wallet - self.deeplinkHandler = deeplinkHandler - preferredPlatform = wallet.appStore != nil ? .native : .browser - } - - func handle(_ event: Event) { - switch event { - case .onAppear, .didTapUniversalLink, .didTapTryAgain: - deeplinkToWallet() - case .didTapAppStore: - deeplinkHandler.openAppstore(wallet: wallet) - } - } - - func deeplinkToWallet() { - deeplinkHandler.navigateToDeepLink( - wallet: wallet, - preferBrowser: preferredPlatform == .browser - ) - } -} diff --git a/Sources/WalletConnectModal/Modal/Screens/WalletList.swift b/Sources/WalletConnectModal/Modal/Screens/WalletList.swift deleted file mode 100644 index 0180d4d35..000000000 --- a/Sources/WalletConnectModal/Modal/Screens/WalletList.swift +++ /dev/null @@ -1,241 +0,0 @@ -import SwiftUI - -struct WalletList: View { - - @Binding var destination: Destination - - @ObservedObject var viewModel: ModalViewModel - - var navigateTo: (Destination) -> Void - var onWalletTap: (Wallet) -> Void - - @State var numberOfColumns = 4 - @State var availableSize: CGSize = .zero - - init( - destination: Binding, - viewModel: ModalViewModel, - navigateTo: @escaping (Destination) -> Void, - onWalletTap: @escaping (Wallet) -> Void, - numberOfColumns: Int = 4, - availableSize: CGSize = .zero, - infiniteScrollLoading: Bool = false - ) { - self._destination = destination - self.viewModel = viewModel - self.navigateTo = navigateTo - self.onWalletTap = onWalletTap - self.numberOfColumns = numberOfColumns - self.availableSize = availableSize - self.infiniteScrollLoading = infiniteScrollLoading - - if #available(iOS 14.0, *) { - // iOS 14 doesn't have extra separators below the list by default. - } else { - // To remove only extra separators below the list: - UITableView.appearance(whenContainedInInstancesOf: [WalletConnectModalSheetController.self]).tableFooterView = UIView() - } - - // To remove all separators including the actual ones: - UITableView.appearance(whenContainedInInstancesOf: [WalletConnectModalSheetController.self]).separatorStyle = .none - } - - var body: some View { - ZStack { - content() - .animation(.default) - .readSize { size in - if availableSize == size { - return - } - - numberOfColumns = Int(round(size.width / 100)) - availableSize = size - } - - } - } - - @ViewBuilder - private func content() -> some View { - switch destination { - case .welcome: - initialList() - .padding(.bottom, 20) - case .viewAll: - viewAll() - .frame(minHeight: 250) - .animation(nil) - default: - EmptyView() - } - } - - private func initialList() -> some View { - ZStack { - Spacer().frame(maxWidth: .infinity, maxHeight: 100) - - VStack { - HStack { - ForEach(viewModel.filteredWallets.prefix(numberOfColumns)) { wallet in - gridItem(for: wallet) - } - } - HStack { - ForEach(viewModel.filteredWallets.dropFirst(numberOfColumns).prefix(max(numberOfColumns - 1, 0))) { wallet in - gridItem(for: wallet) - } - - if viewModel.filteredWallets.count > numberOfColumns * 2 { - viewAllItem() - .onTapGestureBackported { - withAnimation { - navigateTo(.viewAll) - } - } - } - } - } - - if viewModel.filteredWallets.isEmpty { - ActivityIndicator(isAnimating: .constant(true)) - } - } - } - - @State var infiniteScrollLoading = false - - @ViewBuilder - private func viewAll() -> some View { - ZStack { - Spacer().frame(maxWidth: .infinity, maxHeight: 150) - - List { - ForEach(Array(stride(from: 0, to: viewModel.filteredWallets.count, by: numberOfColumns)), id: \.self) { row in - HStack { - ForEach(row ..< (row + numberOfColumns), id: \.self) { index in - if let wallet = viewModel.filteredWallets[safe: index] { - gridItem(for: wallet) - } - } - } - } - .listRowInsets(EdgeInsets(top: 0, leading: 24, bottom: 8, trailing: 24)) - .transform { - if #available(iOS 15.0, *) { - $0.listRowSeparator(.hidden) - } - } - - if viewModel.isThereMoreWallets { - Color.clear.frame(height: 100) - .onAppear { - Task { - await viewModel.fetchWallets() - } - } - .transform { - if #available(iOS 15.0, *) { - $0.listRowSeparator(.hidden) - } - } - } - } - .listStyle(.plain) - - LinearGradient( - stops: [ - .init(color: .background1, location: 0.0), - .init(color: .background1.opacity(0), location: 0.04), - .init(color: .background1.opacity(0), location: 0.96), - .init(color: .background1, location: 1.0), - - ], - startPoint: .top, - endPoint: .bottom - ) - .allowsHitTesting(false) - } - } - - @ViewBuilder - func viewAllItem() -> some View { - VStack { - VStack(spacing: 3) { - let viewAllWalletsFirstRow = viewModel.filteredWallets.dropFirst(2 * numberOfColumns - 1).prefix(2) - - HStack(spacing: 3) { - ForEach(viewAllWalletsFirstRow) { wallet in - WalletImage(wallet: wallet) - .cornerRadius(8) - .aspectRatio(1, contentMode: .fit) - } - } - .padding(.horizontal, 5) - - let viewAllWalletsSecondRow = viewModel.filteredWallets.dropFirst(2 * numberOfColumns + 1).prefix(2) - - HStack(spacing: 3) { - ForEach(viewAllWalletsSecondRow) { wallet in - WalletImage(wallet: wallet) - .cornerRadius(8) - .aspectRatio(1, contentMode: .fit) - } - } - .padding(.horizontal, 5) - } - .padding(.vertical, 3) - .frame(width: 60, height: 60) - .background(Color.background2) - .cornerRadius(16) - .overlay( - RoundedRectangle(cornerRadius: 16) - .stroke(.gray.opacity(0.4), lineWidth: 1) - ) - - Text("View All") - .font(.system(size: 12)) - .foregroundColor(.foreground1) - .padding(.horizontal, 12) - .fixedSize(horizontal: true, vertical: true) - - Spacer() - } - .frame(width: 80, height: 96) - } - - @ViewBuilder - func gridItem(for wallet: Wallet) -> some View { - VStack { - WalletImage(wallet: wallet) - .frame(width: 60, height: 60) - .cornerRadius(16) - .overlay( - RoundedRectangle(cornerRadius: 16) - .stroke(.gray.opacity(0.4), lineWidth: 1) - ) - - Text(String(wallet.name.split(separator: " ").first ?? " ")) - .font(.system(size: 12)) - .foregroundColor(.foreground1) - .multilineTextAlignment(.center) - - Text(wallet.lastTimeUsed != nil ? "RECENT" : "INSTALLED") - .opacity(wallet.lastTimeUsed != nil || wallet.isInstalled ? 1 : 0) - .font(.system(size: 10)) - .foregroundColor(.foreground3) - .padding(.horizontal, 12) - } - .frame(maxWidth: 80, maxHeight: 96) - .onTapGestureBackported { - withAnimation { - navigateTo(.walletDetail(wallet)) - - // Small delay to let detail screen present before actually deeplinking - DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { - onWalletTap(wallet) - } - } - } - } -} diff --git a/Sources/WalletConnectModal/Networking/Explorer/GetIosDataResponse.swift b/Sources/WalletConnectModal/Networking/Explorer/GetIosDataResponse.swift deleted file mode 100644 index 31445bebd..000000000 --- a/Sources/WalletConnectModal/Networking/Explorer/GetIosDataResponse.swift +++ /dev/null @@ -1,11 +0,0 @@ -import Foundation - -struct GetIosDataResponse: Codable { - let count: Int - let data: [WalletMetadata] - - struct WalletMetadata: Codable { - let id: String - let ios_schema: String - } -} diff --git a/Sources/WalletConnectModal/Networking/Explorer/GetWalletsResponse.swift b/Sources/WalletConnectModal/Networking/Explorer/GetWalletsResponse.swift deleted file mode 100644 index 02d84ed88..000000000 --- a/Sources/WalletConnectModal/Networking/Explorer/GetWalletsResponse.swift +++ /dev/null @@ -1,87 +0,0 @@ -import Foundation - -struct GetWalletsResponse: Codable { - let count: Int - let data: [Wallet] -} - -class Wallet: Codable, Identifiable, Hashable { - let id: String - let name: String - let homepage: String - let imageId: String - let order: Int - let mobileLink: String? - let desktopLink: String? - let webappLink: String? - let appStore: String? - - var lastTimeUsed: Date? - var isInstalled: Bool = false - - enum CodingKeys: String, CodingKey { - case id - case name - case homepage - case imageId = "image_id" - case order - case mobileLink = "mobile_link" - case desktopLink = "desktop_link" - case webappLink = "webapp_link" - case appStore = "app_store" - - // Decorated - case lastTimeUsed - case isInstalled - } - - init( - id: String, - name: String, - homepage: String, - imageId: String, - order: Int, - mobileLink: String? = nil, - desktopLink: String? = nil, - webappLink: String? = nil, - appStore: String? = nil, - lastTimeUsed: Date? = nil, - isInstalled: Bool = false - ) { - self.id = id - self.name = name - self.homepage = homepage - self.imageId = imageId - self.order = order - self.mobileLink = mobileLink - self.desktopLink = desktopLink - self.webappLink = webappLink - self.appStore = appStore - self.lastTimeUsed = lastTimeUsed - self.isInstalled = isInstalled - } - - required init(from decoder: Decoder) throws { - let container = try decoder.container(keyedBy: CodingKeys.self) - self.id = try container.decode(String.self, forKey: .id) - self.name = try container.decode(String.self, forKey: .name) - self.homepage = try container.decode(String.self, forKey: .homepage) - self.imageId = try container.decode(String.self, forKey: .imageId) - self.order = try container.decode(Int.self, forKey: .order) - self.mobileLink = try container.decodeIfPresent(String.self, forKey: .mobileLink) - self.desktopLink = try container.decodeIfPresent(String.self, forKey: .desktopLink) - self.webappLink = try container.decodeIfPresent(String.self, forKey: .webappLink) - self.appStore = try container.decodeIfPresent(String.self, forKey: .appStore) - self.lastTimeUsed = try container.decodeIfPresent(Date.self, forKey: .lastTimeUsed) - self.isInstalled = try container.decodeIfPresent(Bool.self, forKey: .isInstalled) ?? false - } - - func hash(into hasher: inout Hasher) { - hasher.combine(id) - hasher.combine(name) - } - - static func == (lhs: Wallet, rhs: Wallet) -> Bool { - lhs.id == rhs.id && lhs.name == rhs.name - } -} diff --git a/Sources/WalletConnectModal/Networking/Explorer/Web3ModalAPI.swift b/Sources/WalletConnectModal/Networking/Explorer/Web3ModalAPI.swift deleted file mode 100644 index e2c63128a..000000000 --- a/Sources/WalletConnectModal/Networking/Explorer/Web3ModalAPI.swift +++ /dev/null @@ -1,84 +0,0 @@ -import Foundation - -enum Web3ModalAPI: HTTPService { - struct GetWalletsParams { - let page: Int - let entries: Int - let search: String? - let projectId: String - let metadata: AppMetadata - let recommendedIds: [String] - let excludedIds: [String] - } - - struct GetIosDataParams { - let projectId: String - let metadata: AppMetadata - } - - case getWallets(params: GetWalletsParams) - case getIosData(params: GetIosDataParams) - - var path: String { - switch self { - case .getWallets: return "/getWallets" - case .getIosData: return "/getIosData" - } - } - - var method: HTTPMethod { - switch self { - case .getWallets: return .get - case .getIosData: return .get - } - } - - var body: Data? { - nil - } - - var queryParameters: [String: String]? { - switch self { - case let .getWallets(params): - return [ - "page": "\(params.page)", - "entries": "\(params.entries)", - "search": params.search ?? "", - "recommendedIds": params.recommendedIds.joined(separator: ","), - "excludedIds": params.excludedIds.joined(separator: ","), - "platform": "ios", - ] - .compactMapValues { value in - value.isEmpty ? nil : value - } - case let .getIosData(params): - return [ - "projectId": params.projectId, - "metadata": params.metadata.name - ] - } - } - - var scheme: String { - return "https" - } - - var additionalHeaderFields: [String: String]? { - switch self { - case let .getWallets(params): - return [ - "x-project-id": params.projectId, - "x-sdk-version": WalletConnectModal.Config.sdkVersion, - "x-sdk-type": WalletConnectModal.Config.sdkType, - "Referer": params.metadata.name - ] - case let .getIosData(params): - return [ - "x-project-id": params.projectId, - "x-sdk-version": WalletConnectModal.Config.sdkVersion, - "x-sdk-type": WalletConnectModal.Config.sdkType, - "Referer": params.metadata.name - ] - } - } -} diff --git a/Sources/WalletConnectModal/Resources/Asset.swift b/Sources/WalletConnectModal/Resources/Asset.swift deleted file mode 100644 index b4e841eef..000000000 --- a/Sources/WalletConnectModal/Resources/Asset.swift +++ /dev/null @@ -1,88 +0,0 @@ -import SwiftUI - -enum Asset: String { - - /// Icons - case close - case external_link - case help - case wallet - - /// large - case copy_large - case qr_large - - /// Images - case walletconnect_logo - case wc_logo - - /// Help - case Browser - case DAO - case DeFi - case ETH - case Layers - case Lock - case Login - case Network - case NFT - case Noun - case Profile - case System -} - -extension Asset { - - var image: Image { - Image(self) - } -} - -extension Image { - - init(_ asset: Asset) { - self.init(asset.rawValue, bundle: .module) - } -} - -#if canImport(UIKit) -import UIKit - -extension Asset { - - var uiImage: UIImage { - UIImage(self) - } - - var cgImage: CGImage { - uiImage.cgImage! - } -} - -extension UIImage { - - convenience init(_ asset: Asset) { - self.init(named: asset.rawValue, in: .module, compatibleWith: .current)! - } -} -#elseif canImport(AppKit) - -extension Asset { - - var nsImage: NSImage { - NSImage(self) - } - - var cgImage: CGImage { - nsImage.cgImage! - } -} - -extension NSImage { - - convenience init(_ asset: Asset) { - self.init(named: asset.rawValue)! - } -} - -#endif diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/accent.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/accent.colorset/Contents.json deleted file mode 100644 index 7157df412..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/accent.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "255", - "green" : "150", - "red" : "51" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xFF", - "green" : "0xA1", - "red" : "0x47" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background1.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background1.colorset/Contents.json deleted file mode 100644 index 855c60979..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background1.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "1.000", - "green" : "1.000", - "red" : "1.000" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x14", - "green" : "0x14", - "red" : "0x14" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background2.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background2.colorset/Contents.json deleted file mode 100644 index c32b826d0..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background2.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xF3", - "green" : "0xF3", - "red" : "0xF1" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x2A", - "green" : "0x2A", - "red" : "0x27" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background3.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background3.colorset/Contents.json deleted file mode 100644 index bd44d87a7..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/background3.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xE7", - "green" : "0xE7", - "red" : "0xE4" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x40", - "green" : "0x40", - "red" : "0x3B" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground1.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground1.colorset/Contents.json deleted file mode 100644 index 3142df2de..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground1.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x14", - "green" : "0x14", - "red" : "0x14" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xE7", - "green" : "0xE7", - "red" : "0xE4" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground2.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground2.colorset/Contents.json deleted file mode 100644 index 530bc2ce5..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground2.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x86", - "green" : "0x86", - "red" : "0x79" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x9E", - "green" : "0x9E", - "red" : "0x94" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground3.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground3.colorset/Contents.json deleted file mode 100644 index 93ad845ea..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foreground3.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xA9", - "green" : "0xA9", - "red" : "0x9E" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x77", - "green" : "0x77", - "red" : "0x6E" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foregroundInverse.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foregroundInverse.colorset/Contents.json deleted file mode 100644 index 2536dc2d1..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/foregroundInverse.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" : "0xFF", - "green" : "0xFF", - "red" : "0xFF" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/negative.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/negative.colorset/Contents.json deleted file mode 100644 index 01cebdc26..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/negative.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0x42", - "green" : "0x51", - "red" : "0xF0" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "display-p3", - "components" : { - "alpha" : "1.000", - "blue" : "0x67", - "green" : "0x5A", - "red" : "0xF2" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/thickOverlay.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/thickOverlay.colorset/Contents.json deleted file mode 100644 index dd489ec2c..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/thickOverlay.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "0.300", - "blue" : "0.000", - "green" : "0.000", - "red" : "0.000" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "0.300", - "blue" : "1.000", - "green" : "1.000", - "red" : "1.000" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/thinOverlay.colorset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/thinOverlay.colorset/Contents.json deleted file mode 100644 index bac5e9b1a..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/colors/thinOverlay.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "0.100", - "blue" : "0.000", - "green" : "0.000", - "red" : "0.000" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "0.100", - "blue" : "1.000", - "green" : "1.000", - "red" : "1.000" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Browser.imageset/Browser.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Browser.imageset/Browser.pdf deleted file mode 100644 index b7944ba52351db718bb39b203521c0bd4aea3912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14173 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 diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Browser.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Browser.imageset/Contents.json deleted file mode 100644 index c45b00a1d..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Browser.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "Browser.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/DAO.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/DAO.imageset/Contents.json deleted file mode 100644 index 3406b5cf5..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/DAO.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "DAO.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/DAO.imageset/DAO.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/DAO.imageset/DAO.pdf deleted file mode 100644 index 53cd6149608ac362645193c2326be75aa53d42d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15022 zcmeI3TaP8TamU}!r|1^}b^!G@FU{@-3!qY_piVH z`t|Phq5fCU|GU4NmN_i)H~swQ^?#>__ut60Q#_mh?+@?4ef@4qfNvRidU^fuaQAe2 z^ZCR7zPo>T`|Dp$pM5?4*Zs@skNgv6rM|FEd-&9zuHWgayzkTf(`lKHsEjT1noB7g zB;u~f%l&&^H+pHEmxI53k~s~`c}{D{D>4|g&&RffeVGCe%Nn<7jdM<6-@|l&N^@F5 zKFYM_c`IuQJk2rXvgc_nb2;{PS*LAY%O2t~t^2&hBX5zZ0YPHiW0;Dq7S_4sea-uT z#XKLvUmP$NHvWC~N3QEbr+()MM9HeRE6`=Rzzn5W~z0} zWw<{%>heAgXwwW^<0HEU)4)+vbwa@d>vcFvF8~AwgeKoK%kH2+WGcy@DF>5l0-Q>DdW|@QVMzpVk3-)zfmj*f4_wEiZ-{a}K z)9+93PhXwABn0GryLO->4~|<^S<2D%+Z-q+peqO37yRbjfsP|zI?z$X_qt@=fg}RB zqN|w*=CV0U*kw^s02~)z&cy9hRwrVbD(3#_i8w74ipwb;FSZZ z8fyd~HmTJK^m%@qM+CzWoNBIZ)%otV#Vw7(R0#mFnDqs_;sbusgYu9Fj1t zx-_U7nJE3-f!h9v1O3;(;6Z;pz4;NeP8rS25$#YeNn3&xr9aAMkTqmOSY}m*oulxI+Z@WW=QPg0F;WSf8B^na zWwBH;`Ey|Z-0XDZIRRhc>Eslgna7ip@UiDov=O9wXqXsI4I1V+K2~U$c74FG4Nhy= z2OlW}OuA)<3QmyI#OWoZ54NGv}UODLs+s^ zZlg{C4I70K{chmdh@l`WmJA%_pu}yyGs=7$9frzow0XY3lY=8;PV6@71jLE1sGjef z4L~yL*tIMrl1JODP{f<5Co6Ph-sM@!Q5_X?OhF1EB3Rzix{@B}yvMw)(=nHj3&|Ga zSu^Eo^UX0t++)Pc77NKXkY~cqLXU)!V=F01T}`N8)*=Cth_X^jQ>5o(iwg@Si4Qx4 zG1vx21PvG|^R_LeRTvj zR0VAe>sHGacAIGiA=El#){h7`P*K-)D!@tSeP21;OnF}Rkl5$;Ag399#Xi-{F(d(D zPt9Ub0M0hAF|3EsTK812toD!~(OzBK)%^{=gj;w1adQXMltA?4IJbzAH@BeN-{)=J z3N`AeR8X@18d02SUt(`w*A#t^JVsmEqa@nr{n*2DCNk_$R~$LJX;61{PcQ=lYo0Kg zS`CHb32u}_cr@c3uwj=6O&BVA^Vs8dK=422ZP`}pJx6nzV>}X)S4=p`MUJU~Bj@P7 zRHb{48CU4;frha%%GdSi?t#Tbj^JAofqK+HZ#Pr;GN*k_*os9V)>vc7RH+uKGA6h# zDM_rdkOtQTpA8Px%q8@Ra5)`m@CVm|Im1}^yAssYEWg`+;~DFGgq^VKjzEzgLMCQ) zC!xl_mJX4x^*}OP=Nt&1(VYQ1%iEsS`9ns-2S}=dk9_oo5NzgCxygI3ihqXj&-RvS_+-Lm4;Obz6(f z8lBE|p+&LoGfK1VVc%CtX6!MmyUzW4ZxIY;*# z&X(>&?Jet@F}s|~>6K29-W;TR5A)5BhPUQ$ZgOKt>~{zg7)(4qcv)jXc8Ok-s8xt6oYb70Lkdv?=vym@iY zgTyEEcdsISw_OvCjn$TGLiBdS9L7r6tVzd7>EcFb@q4t+7Uz?+Sv2TS6lqOLz2w$z z)rW8AP=2@vJxYU0%2G>BxLQwF@M1366I-xkC(hebpmMEgkpk8wws0_DgRA&J14Uyu zw)^R1MUmUDl}FvUDXn{fj&vpV5Dsw2nF{ACMXvf#FX|QcP4#b=Qb!nC07E$)qD2+=EC~H&1TMhzUu?BwXYnUtp zW(FWO-kCA*OzWmpIlMF`4YSE+JchWyIQtFsaX{TNOp?x(YoQ~95{wV`qK~}M`T-B( zO6v&qN-Nb(7Y{OCOwAago@G~JpMil4QYZ01&wz~N(5RLH-L%Ok%><(tO=-5SL)2-V zwu5FT!N@seyE}AEjXxu1LfD#y+)JdA#_Cu6^O0(fWC1P-@%glHq~YXCm*j^dm9Uef zIgB^#aZlP6L^CBVg^p?@ljU_MgA)ce>1i;sVH&CzjB7Zw^q8|QEbfl8zs zBxkIpE&vplaEMJ*M)ZE=hQMmlRox${>_kVm5MPgpr-R!Mx%L^9{nw0oFSMt~fC#lE z6iWvd_Xx)l11C$m`iRO7f?>)D@)SY4+_y4^OW+hZf(o`AX-V3A+R-Z~%OXcFPL2#D zHHaw`>4+itzF`zoAZkc-tu2`~iJq{#wG?f7?fbH`6J!R!7&ok7!31_5#i0&1k!}uL z1#WWTienWw$_hn#5t~%xfH`r8T$^ZIBwzqIM_9P}Why(Nki=mQw6*o5kOannjJn5d zn6weY8p=2oj^Z9Tq8c$yZ+ScP^2OLdopb@SoZTC@3{N!h#8{e0;;I<62x*dIp%kNX zBP|u3Y6uHWWg){hHLi@`q)~zoRBf-wy%VaJO_W{tg}Vu9C}NFrIo>yLrA*m3slJAN zW>b!m3scP?B;?`@izuGs06hYlh*ZoOF=-YI(3LGo)POJAqqsBD5Dj2}qu-49iMFU= zM;*0rYlNdMsKyZLx;jr7QCh<&VnC7a0ra-34kPPdt|-jYf)?C~ZAWJF z&z;O(+e7;pVr4(LRtY%SiV>j#N?V!{8y8s;!ujw4`y(jbMA6bE0pZ?YE<6){F_NX; zrc&ixAl~Ox8z@U%&#p9a9dRSd+l5D=3D*((<&yxBzTidT3xeUP4U>B*jQL{j8O55a zWV(I|LN}J!8xySyY)WXtk${-;8Q6&WbfIeLkuXodz)zq$f?J|NE;m`SVe}v+9dJn~ zyC4uvbA`4b&RPp0Ij3JU{MsUz48e&#d z1bw4GuwAM)9V7b*!Y4vxrK$wocCbtguZEzu0U{~B+JTyo+wFUXhQrxOguI8K>D^6b)(Ul6$VctON;-F)eZtx8+L=T8OkfBSwY=qZ=Ti zZy-KNzEc+$gi`BZcZA_f)+)o~N-4q#Fl*Y#9~y|rzudJMCW%q5tQ(TV6vECI6f}{T zmvdVogadIDqvFttY~S}ry-1Uph`o`cR~^H0T6%DuPtD1PFVNa{?1WL|d&&Yu5_(}h zJc`&W2%PFgAPJwOth`fx5MbbwtV#9CC@M{@gD!)rmgZQh-VKU&_+(9jB3nex5Zj6D ziIk4vARWs`22C@#dexO7qSZ_NiB|1!BHWr*uSeQ!qbLPLGv`~F(bK)N#)KSrY#l=> zGIl=pLlg|onhkZFtzs1Q&PtbdiAg}%o}AJ(*w(31Db{fuDak}~L@>xXK{v*Uqi5P7 z&^p`3qoV@>mck(9hW7?hmb$?J%sYxM;w~R;bb*Kxh<2e2hemA}muC*+Z0eT~O>@Io zQ?XN(gx+n)Rv*D(x`b)Q!|r1+P@3-SuQDZb|So4^;sd`JAdwRYz7Z;1{w)^>&3Km61R-C@93CzIthk9Tnv8 z#5lezm3zAiNz`$@mF+??!~I6e%(o)wZa|mx}_cM`3Hi}whC z(Gwmp;Q?v3XUGr|48wQXIleWJ%SR)|QK||~2;g)riOC=jh3u-MjN~?W!=f5JswPVS z9!U%uox?zhBux&VY{HJvRk1HhX{w{7ZFPz?UR1w8QmA0(H_YMx)3fp@o>VybVCIKE zcQ-wt>Z;%&^zym?v0y6X{)Vb@@wu}wGX3r2V9y?ct z*~9g#VZFcA$t^u5GP``ytct}hD%aN!^&`vnTIcXg6==4}hptjxaTha7Bag<6wKPX+auIyVoLh)-Wa7J2gZxI~Z_k6~ zB2o*Qi%7pfxFW>e`l*e1tFiTC?9okhkMN*Q5_84chF(AX7<;M;2iI^f{W12aawHf1 z^T!_f!C?C}VE^f${7SI?^pGxCI_xKfwBv`LB>v+4`{&n}>9_yQPZark^PhkIpNHwq zmv`SjG~hoTzIk`|%jfT>-%9aS?ZqDWJgY(e)G57vczOQQhx><@iRyfM+sJ+P{QmXf zJuAvD8$0;r-3PFVW0OMsvat&xkpF)2-`;%#tCL9ZcIxYV_WUR2hAaMGKn6;5r3OkO z;EOHjf`4}RdiVJJ?fKO2KRo>Yv`pKn$}0b!3ZJ*G6L90IU-^Ul>xa8{j}ISC@`KWU{Ty}teE;q9cavw}yGHu*@!^N>hY9uX{au~2Pkax*$Lss2@2?-v_cwog z@&4nF8>{y}eEnP({o>*AuF>9|pB{dAyg5JBB|iW0`OEju*U#tuFIWG$xt^BUE&5F# zf4u+KW`FX@!;jOScwOHv_K-Tsp8lOl$ny03c)q?nU43@`&kr}}cVB)oefoa<>*ne7 z*OPn0@mHPW#dppvVfE9^-3eKpUy*g0^OpCA5bDFz%{{N1tYMv(!f%^2rx9bE!|EcO zjI_-qXSXer<6&8So>o7{;I_?8H>WU%#l@1QHO@J$!SOWv5YrZ?HO;AP>#|OHUeo6M zGOgRZ_!2Xso*X;ze)DcJCAoD@aa-dy(0rVWZcawE{oW4LrWs6QBM%LRL87MWfPx3n zcav=0N`7jFTMuiZie})Asire?gna|3wv$Z$PP#dn_?>urGP`!-Av~~fxLAct|3F&eAz-&fcePG$|$Dw$CY{AykEj}iyXdyNtIYqAeN`Z6rWhuvjY^65~So) zjLYO@O&_B?7~A<=Qbu&VZ*xl)L#S!Z5#|^uY*iezl-WUWq7|1y-Xv_^Vn#A(Yfi36 zEhssl7PpCK4$*;B@XY9DU04-rbS0t+?QF}76c-UQm8H@$*6_?;nVp>%lp!_|ck1oUYwSQ7(#S<|s3@8OAVR~)@+q%1KjDR!DxM_YK>KqFRj+!$ARw%NiYs3gdd zC*YNR2njInJcV%u)q&=DX2U3ajA$hSZJ7Lf1iq4)$594!KtTkPXA2{UEW!+5D}shK zGQ$Q=B?BaOPoSkBjBUVG1MM}M{cm7Yjsj36Gz|{o9YA8oo;MGz#=%qs2Hp%h;6=5> z@oT}|DT@dTe3X|s;~K!g7zw%|58+)KAyy-Xjcox zTb{rULJ^B$q=i_K#{HW7Dz64lL-Le26KIpDbGC$Kp%!13T=CImat0`auWm(<4UmF= z#P8$)SHBRaqT!TlYG_74p>v^CB6X}n9{4*abBP*Pz;0iYINsPWBQt=_Q=UmP8>kCU z5Pku-Kpv$P0Jb92LNRur*%B8bY)2kqfG5he1pv*Wxe8LkpulvT4gW<<9~O9m7>KS^ zg|8M84fqT4ppjTGho}Mg6>>Qwp)f3>Eg4v=2$xa`pdPdsncmP06B21cdXfYVBA&z& zDUfne_@7c1a_v@dtd6H{s2GD{G!@2ZCW0}G@D=0%*#ann^s=t!2T!nN$$mq(+LMrp zh>s303$gdw{wWAqX5Ol|b@H?^@o-rXiMFPks+6vAmf(Ks-)JMopRpP+cs!z)AP_|~H zB-8Es1VG^+%N4YU&!gkjqXse~HpZ%;E;JuFs31GzHpPi-B>Y~aZ>YZbh1v@nVb79r z=Ss!v@Kk6NSRO4flIS4$h(`2NR7jshE26@a>_LX7s*u;=Kjc$*l0}I*c_2{^WRpOY zS*hP@l#;h8oZzW!>k5UK#w`?LaEGTn4BZ8az>HB~14}|?aTIxzG9QODw7n6-OT-3% z1z5-;kXS?8RS@A5d+7pXB_N=dCX{rfNI0S{RFDWlo~SZFsJdNBDAWoK9}ZNvY&Q{Y zKqWMn00;$lTh8!j4#f&Jr+89606RDp)J)J9+=t_-M-YG#?rcKPsv??`El&g^RYXnSFd}YL zMc~*GEPI{Z6Q(vYJ zH(C04Bi)?(1S8thg_oVljm~8M^m7hnD!F$Jshxs9kW7DC!I*uY1QLRu1V8meC&CD? z#%*y%&RGkwDGif{2{b_-Dz8URPl+&`o%e>0BSjC&6V}p9At&5&3~O^mq=1lT9}7ql zz*a%|R=BE{pQRR^`1Dh~%Tx0^GWP#;SS3)}q+|A-f@h~GFo;!ZT;iLgr6c6);hjQo zAHzGXKfHYvj`c>x9n19LU6ek&Q^-ok@J{OwZ(nr=qhh;!91TfDiIn@Yk0z)^qkSBy zoiiFWna3g?k^(s3gAL>@g}kP$y75vp#?5qYV=2aG_pc?V~l(hh`MzLEGWj zN9(Gv{+8)%pplt&)f&xg@T!kSvxB;eV6w4jhI6a3$3UY5r}m&6vCbZ;W6f+A1rMUD zMB(i9qK}3hoKAB99$nGeN86~1!2!yOt~2$4_9m_A)@Wu0qXEXZmiSFt|}vSjdl`(H`Na@YF1Ka{DYADucxce-Sq8~ zo#;9X_R#>Nr?O75J=TVI8`od=2OS0nE!416zZFqd4Iq0HBUZ~Jt zClxZP*wnVn+i{vbdQ+dy37tY|!()c|7e-bFgHLtoYf-!x-zNU(eQo4R2DZZ8$vBuW z6#9KJ8~bt>Z3KlVJo+|_8$8B{ZXXH6qifd&3}!H1s=p41>#W3}D|nQlnUC`~uj!3) z9#IxHcpW6LSOUG8$K1U{zecS`$o6d{b?2)!al_BcRO4H<)>pCEMr)mF@_*9x&XM}vu#?V=Dy0KRCyx8zyWE96U#1R2WsNq^78trRqhQADGSwK!a&NdwlQyIe zU}x$}aYp0_am=E!Cot)=?j$vP)H5NM)=@fJ((`XwYIsnhan9pNU;DWGgT8In zSJ>&z#w1>Ki$MVd8wY!*^D#$ET9K%@J?J>uUcL1zor>P3C=$vA_;>*-T?ybUA9rP+ zBP{5!@Erl;aikrU3YCV|s$+TAzEGN;D6N2QBg5!jwCcf(+i0P1)b2K~2*o!kzMzKt~>8Q8?1auKeDo6kNE-M&naqAM{I~Sj)=4# zIpq&AN&k+<0zJtW(W~OL_8EpaCl4*2CRkD3zrz9fimyRI8#+*fin8acp#oWHhSJed z*W^GU)}RxnuVNjlA}+Wte360FAx+&YdME06%J~I-+FT6uOm`Agbro7#>k1v~e^ZTA zcER3wntCA=lS3e=y~t;zLPPY3mJ7RM%Ww67t8m)lTOHc&!N9uoQTQHq1WNVW*Iov{ zUVn6dd}(R(h27G-GK^|E!;2LwWC>F)v=%G1h;LSaT4RNZqZk!>IB zyn6}~wQwq(&A>H|7Pk(5jVCy?E2`f3Fs(m(1;Z z`WxlkgPOc-s<}P2WJGJEdqB%sk33jsw|KWI(jvh$VYIQ@GEGQt z7u;d2gc}IAIz^?6IbFx^(K~x7WNy4?1L`HioL+sHIfwFN^p=)~P|prHgql@z2jEm% ztNX^_-7`Xyx&jUbtnIkN!9W{A#RhhwG~0okuTN%Cl?<3)yV%R7a4ow=BL{_eJFs_V476bpY3Vv{q@)CuD4nJVW5q( z56fS$yUeyp=%2CKIVuJtDAA2}n*(z*t^-&?(S;q?7)ub=*-PT23r>d$?= z-FUtDboJ#VmupvNFAg!{6?bNTbNl^w*FVkr5Z5LTPwgUa-^t%&SFg_U5@tty@S$YT zRJ;7kNqX1NKXg&HwGXdQ?Pm|%&bweGG2E>bQ(u}7F~icoxxasSewzNIE4uvJmcF|F z_S^`+J%97z`sZHu6(_r2EVno=HGleW|9rk@MQPw5exxOm3H{lSG1jfdi{KT`|$0{xj#Oh|9s*g;!bHS<5IJE$Z$B-d-^5L0{T!d5F@SypiMt4|NV-(;n#2dMm!x{R>lKL;&g)T;OAoI` zaUtq8NqwAS)br!@huibxN$UOQ&rt3!o*wSbznp&Y;hSIXD!zL6@PK}$zG|3ukg)Cuo5T!{*Vw7^QjdehVGRX3GGED6K0xCCqt4!1HYc9d`^x} zx&ut_?Q$-aB8>?ME-4KL5=0sq2i=YWM1=PN~m7SBroB`fjZj-+%k+r}gRx z#<%!-y?t|ht1JVrM(D+U_x{~%Lj67T)j7k&Yvk>h+rzu%e!X4&de;BN7o(`__pgq1 z(dWDU?TB5i54-pK)%qYyOd}sZ-hEI%DBbJ&wMLwv*7^^kn0Ywv*UQ^(@pS#m&1!x1 z;<0*iJ^!^jbU%0Ip2W{4iTC@auGMX)`%nVfpo=e}6^&wQ+hDR{ zj_q?ywpis|pFt6YdA`?P2OX6UeJnnCuT1PyaX#e}X0$S?FOg55W?Q3Hoh^NFNoy}F z`4Vyr$i&=Wtrx=3<`MK-wGLuD+Y4dboOYTS?kCPZs(ibx(e zk{HdXln^+AECT4+iemEsqJvNtvLOgGQy>Jsg;}RzmaTi&*(-^%e>^12#F3C|P=Hp_ z)&z+&mMicp`N6s|W8h=S4MUt|?|sb5Fv+A4BXOpoIy+lUwl+x^AjWzVqOjnyksxj? z3=m$JSkNjEKqX)=0cuHBDR_4xGmdCvTV#>#W5{&Zficm7k!Xo@ft*d6K!#PqBf7fC zJ*6MMD^u@cW{cdVD|vA)8W1rL2F2ASI}GcV6JX}s8bm>hx3}vL9St2!4H1W zgryLLY1-SOAu{v@QsAsc7jexdl%(ga)dVTz=b$|T!3aJ21#{WwLYR>pHSwKACOOY# zvLD^JP=q5=nl&kDNkHC9um_@FauNzThiX8hX#N02St1V`=_HcOUV50*&hq@~(R%;P8_7{7}H=nghzd@5ck ziJ~CkZ*#3L)qOco6^LTI~yJkEPFDanr z-jankJOJ0;72{PTsg!J;cobj7ObG!DY%If>%Si9Vx_8l7dwGh^egON!~Gu z!PKW(lF2Sqbm0Z!hj69FLn_123kHh_gF(WHJUbHYYT3bsoElF0Nw%nLo$K7_>ek!W z;{l(RTw*%hG~Q+?1zHAFm}Nfhl0(Y-`;t>5hp>^zshefe+5CA!;%`q_u$i|ga^ zxUT)rZ2h-d%9gB-oJO`gy|fn3OdWas&GPWy+8SOB0)Z8BCJZ*-$J4c*L83S>^)7;E_)TbJfEY@S{x z;lfZT_m{ezp(iVN_K3aati=<=B%oz8|2Ddw&PJy;w6WG! zZCG1XZdDgzX9An`C(k<7bZT-MHrKxCBiauyao=?p%9P~Ap-dSY%alVoJ>_8H3(E#_31$yTyM`q%A>_0cy^zx=c5r`^tULwEbbPrI)B^waL*@4vn~bQj-! z{lia({R1%mF8+47dHwLFvkZKZLC^1Q-@mISr2k%iOLLZqFTrYEA7?}pwO>xTharZ_Dh&ZUq0 z{S7~7QvI}k$($7!``|aP;$nu zl!QK-afIQBP6fOD5Yd^qPO`2yF$~UkOp5(H85^h0j{VH0#<^pAWvuVV$<3?)6q*@n z++$-Euk6W~-uod0+l77#^Dr1$&i3A#d5m4`y_uW|f_FPIAqai2lV`}-k3KjP1wrU- z93iN){TMy83xe%PLBNj2kv;j90@<)-Lv{#m=sdd_LX`bBMkWg8-c5Fl;}HdOKN%l} zV+yt-69v5;r(oxfeUDRgF+jlp(rI8m`{rYE!UMYx2hmZ@mpu z><~zF!FvmW#>is|Tpwo_*oz=ACW50gmBb1KI#Lig*H7NM37f9=;7lK*nUG_RqBS<* zz?n=a95||NfMY_p5bL^+k$t$v*b_RGzU$p@(xGDoM??FrccC}4x8k#~Drd!MU1b(W zBWmhAnhMMey`N?`g;jGBu%*zb-rUDw#BD0pNp#PN77SjsKj~geAv15RT?t4d8%Wc( zid~w1M7gY(S|(wfIy3gp&9n8w-X_x@@d6FJvR>vGd&`I&%T*|ph{s$;Q-K>;)8@8Z zPi|!P#`v*AI|ql@gcd&<{1=X4it{)pn>qCrd+`Tgib8ewguWq4zOF zi%$9;&x)Vy-~!f;8)~Qz__p*3*$q)6lA({@M^F`$%emU-$V^c71Deu9(%I&mw)%E4F(z}UIRTt_H@^m&fB>KRcFGpu*Li{9WvP!l}xB*97I zLG7$K1hu@{n^x$+i7psX@Tqrx^eMQeWifH2V9gLE+9m3+3^bJ!13nRXEW2PT3mQvU zlY?X4t0&e6#1ClY2?7|5gLnIO5Gq`@*hO%dX^{mW&rvjOSY>8y944FaCD}p>0-8s{ zCVo0;K#FtGa2koISMv6??-EiP0aci_36qb+&c+6>at&2b7zkyN=HJ~KF2rAlZz2h$`d z!$;LsV8PmXW?V(&BeB=uUo93=844s07?#+%+LP=BpF40i;t(Q+7ZD;*Lhy_R77LXV z!59OExf-(VTJbf_mJ>zIpX7^|xOo%_;af(V2u<37&&7qCJhFag3 zxawk_$zuhALi*skz+dl~GDY|$u=Oyl2UGZg zJh^4a5t}(2FgXoWFm#D~S#pDmX`iW%~J%;$kJqJxh-{lYvjYJ&oBJ2~n zZ|_K4Mo?tV{G6&hp}|ZOVPh)lKLr^bn>XJ zvZ`ErDxRV*Ts+w(M*ed@yL2ynG9Hpnu34(M%Zl?*)34(KiKyp9l1i?8$a83{`6_rNT zKym?_49Gb_Ah(?*lUCiP<ZOy5qQZzwPE=|9?pn7y+B16D! zF(n4L$uA$HO&{kB!8t?le~}@uv9|*`|KUSg2((a7I%bNI5>=|j<&yqHLTxgnxwvp| zM~YEmUHKkPnJNTB%>o2kb0V2H`$&eWzOn1b;~RUXKk7h%Gk6EE%vh>1vN@Obz1<31&U%M zSL?O_9eIpE(oNKCgbn44;d*O~A)#I)(2;_mN<=DR(z+!DEBP@W6N=W@gd-;uNn4T= zB-b}s5k^TQOA>rWO(0`UKGtJT=urAndU;LyR$Hm)(6NF;ssc+-i7H@yX&?GP!v}SS zs;bXGnr7kvjAUr8>SyIiz%5Eysj50GSWPOlb7Wbn`pf!Jl8;TD%&B+k6PbWCa$%UX z3MkUFSVl{tl}dFOgApxxguRF>=kyuN;MA~?X|N<7sWJzWp{diPfmhZmm9Z?hq}Q1d zg@|OFnP-rk5eu|b(J~DJY+y|?+j2d5l3dldy`#b?savh;Q<yy9=TgE+R?egSPMOk`(or+b0h zTGgkKj3|H#vP7=x7tmHvNqV`eU-@6mZQ0_H{=)9u;Q$NB>(lCi+bJxw7Ex2VPpY~0 zX_48deSwliP5OzW&RrO?3zSg0yRulZo=IxpVpFW0Oud-HEH#t{or&!Y81j6aBgUrtAv(RZ)P3$wjeC)u#%kMpR}enQkO4^k?5g%+VN7cZC>E_k;%N z<5;^wXlI~Ej^B|=)zTG$XC+bujz?8j2*n_2fRG~B+7$wbMlphRx&Lbnt-C_1;7E{uo`N?OxHYLV(+4(&*`%fm#I^K<(4`rMNL^cdLf|9SdnZ-8+!K-` zjnLoVhp?&Pw+X@86C$NvT1=x9&tzF7Lv`8>@MooN>6Wr=MwTf(AtM{)gygE85V+$w zSI~N`84(Tfb>D;XPU6bSV>wh32Bo)Y?au*3FBd(8wZx*M4!ZQ1tUV#P1!-53issrA zg8k6;M_IBFqw1cJDw@?jAxdH06QaO6<)a&{Q$7?AX~`ReH)~IblqqQi8Y|wYwmia{ zx+g@>6i82dLb5`{RE}PHLbBE*Q0^nBl&drxWF4gANYf6gs8wOVBJq*)W8D^!jD)2z zm)sGewp1m2V51nF5u+;|A!?m#>jn`f8*!*RLi8AwX6KF&<&LO)>l6joFi2@M!49)- z*t#P`Rp^M&q-#M4En8BhWaQcrl69A@HxAj%E@_NPT?*&%@Y!&RfPiKDl5T;eyGNpn z7-C`_(P|NSvDj5J=m^P%ow{B&r^lm?km?|R)DfbhPe=B(BSh60>Q|U*duyLbOlwC- zWkD@Y9d(50`XbXm*b#Dc|K-#t*&S)rqFrhE2vU(BmX;6^;y@>%1Se~-RymR*hSa2h z7o2Htqwk7+h9=A7tiAfV^VZ@CTPEwwuWXh55!*;|_^Dp=z#iIB7{gRi{K z+P#s2e5NPghUtmRl&9v8_N@#RS({lnT5^t~R~`jhn@pr-JbF49TlXC z7!?c-jw4O+^=!R?rrGN{1IkO%jm8zFhf_782-r}*dV0d5bhXc7fXy5K$_&Wu>GBLT z&=;OzX>%N;RZW?zSpg(dq`VUM|pn&-z{$#W%tmC||I6Sw_1 zKjvCn0=a$sFCKF>bX-()(eW`v)o`y+d9IirDyEl+-w~umtILDIXTLl=fBA6va7e#D zv+4i#mxL>mq^={&n??D$cxKYbmtS4p|0{hhuOj6?kKQmIPb>d*@w^j5%#S4ty!my( zE6LBV-o3f}ZPe>a$TpsZNZs>e=o&~8i2qr=NI2qge*Vehy@j_Q^rTXF`1*c#fl!{_ zrpJ0}RORvE`7NZVpU?p> znU)I1wPS%+^vg=*hXNDf#tV>9TfG0?W&_u@+*{p}Yg$wJ9Pc28^me3QUBn z{*(bwu4EQy_0{@S@sNAc^~>IBWd~EL>MLM5e8fQ5}^ z%?egg-z2^Ob?>T>g&-xSfK*|IikROxA4{;x=i@Mq8rY(OL(yBp&L+z>*4P5?bYFKC+z*pQ<(el{q6PPlkVfUuRd8=eDUJ;7XAwR hlDsZnzWvWZcmZ?oA1?165_b$~{b~2nN6)_g^1r#hQAYp( diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Lock.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Lock.imageset/Contents.json deleted file mode 100644 index 4b52ef2bc..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Lock.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "Lock.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Lock.imageset/Lock.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Lock.imageset/Lock.pdf deleted file mode 100644 index 59e30d6e5efa88aafa69d9a2fc488fd7472958e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9067 zcmeI2O^+P65r*&mEBa!<4zRt=?AO?&a)}yf`XSE~mj0`!yK2NdP zMUHop$cNlKhh5G~vRL0NlJn6wkH5S!QyK;{&g0>SpN4V#^waVBZ@<3XkJsOQ{licD z-3g4(^$SLd)Lo4lgTE{aYQwZCaq}P*?gNPpQC|~Jf)ni zn@6B|vB8^hH{>b$kYX6^GNl;ZvM|nPAEOm0EXG+2WK9U!3FKl*)-iRNmM{mz0-Tq{ zE`D4l6a6wXHBE@-<}gN9b$*3nTpTWn$4qvfSy;vepXeXM6jNT@B9L3GSptyB(Yq*+ z2`noNyUC^{1;#-nB8B*Va>)zir(}%1^K#3{mvY<8iz+CXwmFTN63PuE_$ha<; zL91`HsBf6G*6h$>nn#E%osC{9o#H#S4O+638M~31#aJ=Nkb>{>9qyQsBFsx3v7Qkz z&{o`9-mSgp0Pm6<=|-?Z$KnN`k|V=BdgVxLFFBHtJyv;a7_ogF3mZraWP>!x*uY3N7AC07HjLSea@$6dB!pet&t?}B ze!;r6EjxbYSGlxd<=1!8fE9jYFZPx)XTYkS2B{KzsPf;k?M!x*+6`0PY6=#!#biPv za0wIkN1R_{jLcMLC%kXv9YCi zG({`3i{cD`L`uNdu>xXP(jnm}Ej$2Tq!ZnWJ<1fYN~MGzn#7fg?pOAUg$oPfU5afj z#h5K#Gslcp6?bLk|J_$4-Ba3AvLf@?|yRG|f2IaB2{ zNLAQFbvR7xR5c2vnSyFO0;;$|SIHvLLst+Lug;_X0aTaMz6L1`SkZBvEBxM?S2GgZ z*e0Z$JpOA&(uJ>ZWHzW$^C}3}nOd)RZc50=R!dl9lS3i}Pd-xpNezHR9xqs^DMCnw zO4&}{+lAPVlcySmI??V-VtawfW%gD)mwL*(T&mH^IL4eU2PNv$ilFk!pF%9SOrEnC z?yn#wBr!pbnp#18o;4liXb-u?%<#>oPm!CY03w8pp)wXQMe-OSL>=L&c%umAgGD+L zL1jvvg{htzD=&l^b+P=X%4XYy24$|UDto^n3Om8r#wmo7rABY#sD0`Z6g<+$Can-5 zw$fm#f>+c)6g)YT&pMRdQ!Hq^=~sALG2$W{e>K7tUM_Z=7t}!AP^=ZkE8?M;lJ#qA z0n~n2FV?q!N~;tmb%iU^K$V30sCrWmD%%}c3>(<4NE97hOgrO#9DX{OT-C zDv1PHu=C0fffXpounKig@c3SlJs62Es!~pUM7THrXSYB(NcbDZVQ3DP(R0XSvgQOp z_=*(P4I<(=lIC;B&xv$>HdS+soaot{tRsma4auG}rAbsnQdgS9ead*nenu#A(j+Xa z4{?3PK9Lha*kiS~1aNIboN7qQaw)t^OD#%MiG!kc1Q6v)m$?~2O<&|6>IU;!Q}95t&VB~wZ(jGZ_FmS zbvZ*3OUf0wIw3%s_(Xoe;;KAR6e=q;xkQ*(^%a#8_c9W55zXWnQ9XqX_cKYhpK~Ko zbg}sE4!JbRJ$`FUs@8 zcO*OU>h_B8(pU)>!4Sz7B;iF`eK z*f^iozFj{ZB@pWiO2aRD<~yvH5`7u4ATKqH)OmI0ZEKGi!tQsMc2}^eQU{ z5@EUHLmau8M_1`>t{jpn%PnzwXsv2K#m1mp*6JmP?f-q4N_*Hs1BrH zVO;&E4S;iHv!Pw}KcDPVG$Y!x{dAgySu~b zIDRj`AK+7e5b@2;%Y6mD+P`>x^Lu}ZAe7pV8l+s=eo67@aCh3@v7+p+8~Baj!s4F(fAKjd8ZVxZd z=f1z+|2W76@35vB`8#qAz&#sy{m26H8TlPV`EYoIefcyf@;-15$@T98h&zkljFQ*$ zbBH(Nhmd3-`RIx~KK*vZrKfeezj=MTzaK=se}0T|KRzDb>^~Vle*NN;RmIoO4hQrr h>MQoTe*XGjd(j2TJ)UmvPenVN{NwP^M^C=~^512~`xF2G diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Login.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Login.imageset/Contents.json deleted file mode 100644 index 509ec01f3..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Login.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "Login.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Login.imageset/Login.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Login.imageset/Login.pdf deleted file mode 100644 index f1d3aaf66c02d9c2a8ef0ebfea5c843fb3fc5f28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19249 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 diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/NFT.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/NFT.imageset/Contents.json deleted file mode 100644 index 762deb793..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/NFT.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "NFT.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/NFT.imageset/NFT.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/NFT.imageset/NFT.pdf deleted file mode 100644 index 31794831e9d24804e82ed00131e3eac73bcf8323..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13768 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 Y!hL$aetb6R(Da?>(?=hD{<|;!0brq!_W%F@ diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Network.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Network.imageset/Contents.json deleted file mode 100644 index 30b0cf9c7..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Network.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "Network.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Network.imageset/Network.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Network.imageset/Network.pdf deleted file mode 100644 index ad24230ca1c80c3984b98626cf1d5891a5d500b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12677 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 diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Noun.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Noun.imageset/Contents.json deleted file mode 100644 index f934274a6..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Noun.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "Noun.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Noun.imageset/Noun.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/help/Noun.imageset/Noun.pdf deleted file mode 100644 index 20e4696237bba556236c36224d728479a3087d1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9725 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

!^A~A2qY{I>dAO%I@1D9fc=HF@^ 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 diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/help.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/help.imageset/Contents.json deleted file mode 100644 index 4fe36f6b1..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/help.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "Help.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/help.imageset/Help.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/help.imageset/Help.pdf deleted file mode 100644 index 4f8e4d227902c08bb716386981fbc7621d7d9a24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1879 zcmb7FOHbQC5WerPmUI8jRZIzg^OMTA$GcIFjcX#Tm!B=6Q%(Cf)vfFpZAhWQA!GiWm(ejHc1> zfI)5UUtvSK5Yn&*cE?)w<-b2CiF%m-{hn4*pk~oZ1v~5{4u{4Ma)IJ#A9|88qhoLZ zr)R<<_hxj?GR>f{5tTy0rg$MwZcajkR|Jh6wb5adW>8H-wTiq%TSAm|2Iul{KuWlo z+?;pDW~uWIEDLVhhI#QFwxm=#(2_I+-s(w;8WUc z>+|jzZs%`-#vLmul1ZACDbhOi-P68FJ>+%0F5xb^c1SH|%)5F5uj@TxU<0M8Cw^Dj7S zwFQLBkpjjiXbI9-XFdesZVIm;i|V|zvg(zijkDvhueXnB&vN(PU!okxeYZ;|aJ=1| l97L(sT{l1`JPKUhZ2u;#e*6op_rpjB_lRdlM{hr0{R6iQhP40y diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/Contents.json deleted file mode 100644 index 73c00596a..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/copy_large.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/copy_large.imageset/Contents.json deleted file mode 100644 index 7cd8eaf7e..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/copy_large.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "Copy.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/copy_large.imageset/Copy.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/large/copy_large.imageset/Copy.pdf deleted file mode 100644 index ada796931658ce4b73930477a99607bb0468738b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4296 zcmZu#%Z^(`5Z&Le=uM;qDeZngq$m=Z5QG2`ChQ^>#&eSlnz6xlP~hu1)sO17Vy}A6 z?MKzAs?*i;&$W!pqJ-KTkyk7sg->tXbzY;g^=D&8Q2a`sm2mME2R);eL7G+ITh zh%%;ZY$Pa0A3_jGMyr$qq^0v-S%aln#+-u+!kF%))>7vjZJIIHzm9pkMF*LbGB|Fa zFx4n!GmIHKvaR#c!`NZt#i+S5*33RnyI(u;nq}<6ZkbkJ@ph2HOfh*_%Z$z>Gw&@F z!`2qE1h#7&4d`y6MI39ig9bzipb_nw6}do^C={pyCW<%a;fDne1@ze^C!BPl%*4Fp zwZjosdXWF(%e*<%IL773NT(6(opLgIO4GA%Vd#I+n? zidH=n7)m{37}+hpXBK0&=N}`*M&%N!Zk*V&c^KAHo~@_pr7|Wb>!wP93rcg84I|YQ zc+E&P7|!e##;RY|KsdTP)q471COh;#e0@_gOlv71SuolptUc3sFAa zxFSMENBW4OrGX_`s-Ji|Z$Qe%oANR3;Mo>m4IDPpO0TLT7rqe*;u-_YR9#x

T{# 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 P@TqP&yn6M!zkK;$0Tvk3 diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/wallet.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/wallet.imageset/Contents.json deleted file mode 100644 index 5e974e19c..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/wallet.imageset/Contents.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "images" : [ - { - "filename" : "Wallet.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "template-rendering-intent" : "template" - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/wallet.imageset/Wallet.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/icons/wallet.imageset/Wallet.pdf deleted file mode 100644 index 298db1ca0bfb64951af974b5d5b43e22f6b83e20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2125 zcmZvd&2H2%6ovPGio2=QBH_ew>?BfEiB2g(fGAUT6^oEb+d(r4Oj1;MdXAI$+HJ{V z#`$8O`)m8?>f-XXl7$e8QtH3|5Jab^bap1%ZsT4>7W3p|+ue=#qyg7%)-WF0dM}cT z_V>1F*YD10bsfJogZL$sOs9uZKX}cf=$pz6rje4!THWNu7aU|^)P0V~=s2&fS%_n!mZ31wwgLB~eRRUwN>iLhp}g0F$GJJ1YN$;y@p zj-Xk|)EKKXQc9ZK=0!$X2q%>~Q)!k)td!+sks1*uT50E`?ILKTD$1&;C>YVQGTLNi z>5?2S zf|FYq>qdj;(|K~dpBPTzE}=0Dd12jv*bnG&{!SL(Uji zM)IcX`f;F}Z@5D6BwzphY$>^_@7e`?YB$^Zynm#da1rn!fHTdX{~ViFTDL?0aA?|r z+$FVMnpLwnEP;YnbLAdI@zd$;UhkoCl(D8P2GAAWj_x(sN;3>h$_4aQI@288uK8#a1 NZZnIcqqm9Y+59$YWw-NB``OeL(o3|cf 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 T&#&z`G*aU3lTUvA$8Y`%kqV$s diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/wc_logo.imageset/Contents.json b/Sources/WalletConnectModal/Resources/Assets.xcassets/wc_logo.imageset/Contents.json deleted file mode 100644 index 9797adf2f..000000000 --- a/Sources/WalletConnectModal/Resources/Assets.xcassets/wc_logo.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "WCLOGO.pdf", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Sources/WalletConnectModal/Resources/Assets.xcassets/wc_logo.imageset/WCLOGO.pdf b/Sources/WalletConnectModal/Resources/Assets.xcassets/wc_logo.imageset/WCLOGO.pdf deleted file mode 100644 index 551f66c99ee576c135e65c9129684a8c289a0770..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46930 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%0DB^Dd(|PN_r2Oip951(H=;3pkV{lh zPkW{Jlz<3Mi92a2xM%E@m(qD!+x6_?a - - - - NSPrivacyCollectedDataTypes - - - NSPrivacyCollectedDataType - - NSPrivacyCollectedDataTypeLinked - - NSPrivacyCollectedDataTypeTracking - - NSPrivacyCollectedDataTypePurposes - - - - - - NSPrivacyTracking - - NSPrivacyTrackingDomains - - NSPrivacyAccessedAPITypes - - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryUserDefaults - NSPrivacyAccessedAPITypeReasons - - 1C8F.1 - - - - NSPrivacyAccessedAPIType - - NSPrivacyAccessedAPITypeReasons - - 0A2A.1 - - - - - diff --git a/Sources/WalletConnectModal/Secrets/Secrets.swift b/Sources/WalletConnectModal/Secrets/Secrets.swift deleted file mode 100644 index 5c078458e..000000000 --- a/Sources/WalletConnectModal/Secrets/Secrets.swift +++ /dev/null @@ -1,23 +0,0 @@ -import Foundation - -struct Secrets: Decodable { - let projectID: String - - enum CodingKeys: String, CodingKey { - case projectID = "PROJECT_ID" - } - - static func load() -> Self { - let secretsFileUrl = Bundle.module.url(forResource: "secrets", withExtension: "json") - - do { - guard let secretsFileUrl = secretsFileUrl, let secretsFileData = try? Data(contentsOf: secretsFileUrl) else { - fatalError("No `secrets.json` file found. Make sure to duplicate `secrets.json.sample` and remove the `.sample` extension.") - } - - return try JSONDecoder().decode(Self.self, from: secretsFileData) - } catch { - fatalError("Failed to decode secrets.json") - } - } -} diff --git a/Sources/WalletConnectModal/Secrets/secrets.json.sample b/Sources/WalletConnectModal/Secrets/secrets.json.sample deleted file mode 100644 index 4506e6d3f..000000000 --- a/Sources/WalletConnectModal/Secrets/secrets.json.sample +++ /dev/null @@ -1,3 +0,0 @@ -{ - "PROJECT_ID": "" -} diff --git a/Sources/WalletConnectModal/Styles/Button.swift b/Sources/WalletConnectModal/Styles/Button.swift deleted file mode 100644 index 744adcef2..000000000 --- a/Sources/WalletConnectModal/Styles/Button.swift +++ /dev/null @@ -1,67 +0,0 @@ - -import SwiftUI - -struct CircuralIconButtonStyle: ButtonStyle { - func makeBody(configuration: Configuration) -> some View { - configuration - .label - .frame(width: 28, height: 28) - .background(Color.background1) - .foregroundColor(.foreground1) - .clipShape(Capsule()) - .scaleEffect(configuration.isPressed ? 0.8 : 1) - .animation(.default, value: configuration.isPressed) - } -} - -struct WCMAccentButtonStyle: ButtonStyle { - - func makeBody(configuration: Configuration) -> some View { - configuration - .label - .padding(.vertical, 6) - .padding(.horizontal, 12) - .background(Color.background2) - .foregroundColor(.accent) - .clipShape(Capsule()) - .overlay(Capsule().stroke(Color.thinOverlay, lineWidth: 1)) - .scaleEffect(configuration.isPressed ? 0.9 : 1) - .animation(.default, value: configuration.isPressed) - } -} - -struct WCMMainButtonStyle: ButtonStyle { - - func makeBody(configuration: Configuration) -> some View { - configuration - .label - .padding(.vertical, 6) - .padding(.horizontal, 12) - .background(Color.accent) - .foregroundColor(.foregroundInverse) - .clipShape(Capsule()) - .scaleEffect(configuration.isPressed ? 0.9 : 1) - .animation(.default, value: configuration.isPressed) - } -} - -#if DEBUG -struct ButtonStyle_Previews: PreviewProvider { - - static var previews: some View { - - VStack { - Button("Accent", action: {}) - .buttonStyle(WCMAccentButtonStyle()) - - Button("Main", action: {}) - .buttonStyle(WCMMainButtonStyle()) - - Button("F", action: {}) - .buttonStyle(CircuralIconButtonStyle()) - } - .background(Color.background3) - .previewLayout(.sizeThatFits) - } -} -#endif diff --git a/Sources/WalletConnectModal/UI/Common/ActivityIndicator.swift b/Sources/WalletConnectModal/UI/Common/ActivityIndicator.swift deleted file mode 100644 index 084c45012..000000000 --- a/Sources/WalletConnectModal/UI/Common/ActivityIndicator.swift +++ /dev/null @@ -1,31 +0,0 @@ -import SwiftUI - -#if canImport(UIKit) -struct ActivityIndicator: UIViewRepresentable { - @Binding var isAnimating: Bool - - func makeUIView(context: UIViewRepresentableContext) -> UIActivityIndicatorView { - return UIActivityIndicatorView(style: .large) - } - - func updateUIView(_ uiView: UIActivityIndicatorView, context: UIViewRepresentableContext) { - isAnimating ? uiView.startAnimating() : uiView.stopAnimating() - } -} - -#elseif canImport(AppKit) - -struct ActivityIndicator: NSViewRepresentable { - - @Binding var isAnimating: Bool - - func makeNSView(context: Context) -> NSProgressIndicator { - return NSProgressIndicator() - } - - func updateNSView(_ nsView: NSProgressIndicator, context: Context) { - isAnimating ? nsView.startAnimation(nil) : nsView.stopAnimation(nil) - } -} - -#endif diff --git a/Sources/WalletConnectModal/UI/Common/AsyncImage.swift b/Sources/WalletConnectModal/UI/Common/AsyncImage.swift deleted file mode 100644 index d55e07269..000000000 --- a/Sources/WalletConnectModal/UI/Common/AsyncImage.swift +++ /dev/null @@ -1,70 +0,0 @@ -import Combine -import SwiftUI - -struct AsyncImage: View where Content: View { - final class Loader: ObservableObject { - @Published var data: Data? = nil - - private var cancellables = Set() - - init(_ url: URL?) { - guard let url = url else { return } - - let request = URLRequest(url: url) - URLSession.shared.dataTaskPublisher(for: request) - .map(\.data) - .map { $0 as Data? } - .replaceError(with: nil) - .receive(on: RunLoop.main) - .sink(receiveValue: { data in - withAnimation { - self.data = data - } - }) - .store(in: &cancellables) - } - } - - @ObservedObject private var imageLoader: Loader - private let conditionalContent: ((Image?) -> Content)? - - init(url: URL?) where Content == Image { - self.imageLoader = Loader(url) - self.conditionalContent = nil - } - - init( - url: URL?, - @ViewBuilder content: @escaping (Image) -> I, - @ViewBuilder placeholder: @escaping () -> P - ) where Content == _ConditionalContent, I: View, P: View { - self.imageLoader = Loader(url) - self.conditionalContent = { image in - if let image = image { - return ViewBuilder.buildEither(first: content(image)) - } else { - return ViewBuilder.buildEither(second: placeholder()) - } - } - } - - private var image: Image? { - imageLoader.data - .flatMap { - #if canImport(UIKit) - UIImage(data: $0) - #elseif canImport(AppKit) - NSImage(data: $0) - #endif - } - .flatMap(Image.init) - } - - var body: some View { - if let conditionalContent = conditionalContent { - conditionalContent(image) - } else if let image = image { - image - } - } -} diff --git a/Sources/WalletConnectModal/UI/Common/Toast.swift b/Sources/WalletConnectModal/UI/Common/Toast.swift deleted file mode 100644 index e637cee46..000000000 --- a/Sources/WalletConnectModal/UI/Common/Toast.swift +++ /dev/null @@ -1,135 +0,0 @@ -import SwiftUI - -struct Toast: Equatable { - let style: ToastStyle - let message: String - var duration: Double = 3 - var width: Double = .infinity -} - -enum ToastStyle { - case error - case warning - case success - case info - - var themeColor: Color { - switch self { - case .error: return Color.red - case .warning: return Color.orange - case .info: return Color.blue - case .success: return Color.green - } - } - - var iconFileName: String { - switch self { - case .info: return "info.circle.fill" - case .warning: return "exclamationmark.triangle.fill" - case .success: return "checkmark.circle.fill" - case .error: return "xmark.circle.fill" - } - } -} - -struct ToastView: View { - var style: ToastStyle - var message: String - var width = CGFloat.infinity - var onCancelTapped: () -> Void - - var body: some View { - HStack(alignment: .center, spacing: 12) { - Image(sfSymbolName: style.iconFileName) - .foregroundColor(style.themeColor) - Text(message) - .font(Font.caption) - .foregroundColor(.foreground1) - - Spacer(minLength: 10) - - Button { - onCancelTapped() - } label: { - Image(sfSymbolName: "xmark") - .foregroundColor(style.themeColor) - } - } - .padding() - .frame(minWidth: 0, maxWidth: width) - .background(Color.background2) - .cornerRadius(8) - .padding(.horizontal, 16) - } -} - -struct ToastModifier: ViewModifier { - @Binding var toast: Toast? - @State private var workItem: DispatchWorkItem? - - func body(content: Content) -> some View { - content - .overlay( - ZStack { - mainToastView() - .offset(y: -64) - } - .animation(.spring(), value: toast) - ) - .onChangeBackported(of: toast) { _ in - showToast() - } - } - - @ViewBuilder func mainToastView() -> some View { - if let toast = toast { - VStack { - ToastView( - style: toast.style, - message: toast.message, - width: toast.width - ) { - dismissToast() - } - - Spacer() - .allowsHitTesting(false) - } - } - } - - private func showToast() { - guard let toast = toast else { return } - - #if os(iOS) - UIImpactFeedbackGenerator(style: .light) - .impactOccurred() - #endif - - if toast.duration > 0 { - workItem?.cancel() - - let task = DispatchWorkItem { - dismissToast() - } - - workItem = task - DispatchQueue.main.asyncAfter(deadline: .now() + toast.duration, execute: task) - } - } - - private func dismissToast() { - withAnimation { - toast = nil - } - - workItem?.cancel() - workItem = nil - } -} - -extension View { - func toastView(toast: Binding) -> some View { - modifier(ToastModifier(toast: toast)) - } -} diff --git a/Sources/WalletConnectModal/UI/Common/Web3ModalPicker.swift b/Sources/WalletConnectModal/UI/Common/Web3ModalPicker.swift deleted file mode 100644 index 49ce87219..000000000 --- a/Sources/WalletConnectModal/UI/Common/Web3ModalPicker.swift +++ /dev/null @@ -1,127 +0,0 @@ -import SwiftUI - -struct Web3ModalPicker: View where Data: Hashable, Content: View { - let sources: [Data] - let selection: Data? - let itemBuilder: (Data) -> Content - - @State private var backgroundColor: Color = Color.black.opacity(0.05) - - func pickerBackgroundColor(_ color: Color) -> Web3ModalPicker { - var view = self - view._backgroundColor = State(initialValue: color) - return view - } - - @State private var cornerRadius: CGFloat? - - func cornerRadius(_ cornerRadius: CGFloat) -> Web3ModalPicker { - var view = self - view._cornerRadius = State(initialValue: cornerRadius) - return view - } - - @State private var borderColor: Color? - - func borderColor(_ borderColor: Color) -> Web3ModalPicker { - var view = self - view._borderColor = State(initialValue: borderColor) - return view - } - - @State private var borderWidth: CGFloat? - - func borderWidth(_ borderWidth: CGFloat) -> Web3ModalPicker { - var view = self - view._borderWidth = State(initialValue: borderWidth) - return view - } - - private var customIndicator: AnyView? - - init( - _ sources: [Data], - selection: Data?, - @ViewBuilder itemBuilder: @escaping (Data) -> Content - ) { - self.sources = sources - self.selection = selection - self.itemBuilder = itemBuilder - } - - public var body: some View { - ZStack(alignment: .center) { - if let selection = selection, let selectedIdx = sources.firstIndex(of: selection) { - - GeometryReader { geo in - RoundedRectangle(cornerRadius: cornerRadius ?? 6.0) - .stroke(borderColor ?? .clear, lineWidth: borderWidth ?? 0) - .foregroundColor(.accentColor) - .padding(EdgeInsets(top: borderWidth ?? 2, leading: borderWidth ?? 2, bottom: borderWidth ?? 2, trailing: borderWidth ?? 2)) - .frame(width: geo.size.width / CGFloat(sources.count)) - .animation(.spring().speed(1.5), value: selection) - .offset(x: geo.size.width / CGFloat(sources.count) * CGFloat(selectedIdx), y: 0) - }.frame(height: 32) - } - - HStack(spacing: 0) { - ForEach(sources, id: \.self) { item in - itemBuilder(item) - } - } - } - .background( - RoundedRectangle(cornerRadius: cornerRadius ?? 6.0) - .fill(backgroundColor) - .padding(-5) - ) - } -} - -struct PreviewWeb3ModalPicker: View { - - enum Platform: String, CaseIterable { - case native - case browser - } - - @State private var selectedItem: Platform? = .native - - var body: some View { - Web3ModalPicker( - Platform.allCases, - selection: selectedItem - ) { item in - - HStack { - Image(sfSymbolName: "iphone") - Text(item.rawValue.capitalized) - } - .font(.system(size: 14).weight(.semibold)) - .multilineTextAlignment(.center) - .foregroundColor(selectedItem == item ? .foreground1 : .foreground2) - .frame(maxWidth: .infinity) - .contentShape(Rectangle()) - .padding(.horizontal, 8) - .padding(.vertical, 8) - .onTapGestureBackported { - withAnimation(.easeInOut(duration: 0.15)) { - selectedItem = item - } - } - } - .pickerBackgroundColor(.background2) - .cornerRadius(20) - .borderWidth(1) - .borderColor(.thinOverlay) - .accentColor(.thinOverlay) - .frame(maxWidth: 250) - .padding() - } -} - -struct Web3ModalPicker_Previews: PreviewProvider { - static var previews: some View { - PreviewWeb3ModalPicker() - } -} diff --git a/Sources/WalletConnectModal/UI/WalletImage.swift b/Sources/WalletConnectModal/UI/WalletImage.swift deleted file mode 100644 index 9b142eab0..000000000 --- a/Sources/WalletConnectModal/UI/WalletImage.swift +++ /dev/null @@ -1,35 +0,0 @@ -import SwiftUI - -struct WalletImage: View { - - enum Size: String { - case small = "sm" - case medium = "md" - case large = "lg" - } - - @Environment(\.projectId) var projectId - - var wallet: Wallet? - var size: Size = .medium - - var body: some View { - - AsyncImage(url: imageURL(for: wallet)) { image in - image - .resizable() - .scaledToFit() - } placeholder: { - Color.foreground3 - } - } - - private func imageURL(for wallet: Wallet?) -> URL? { - - guard let wallet else { return nil } - - let urlString = "https://explorer-api.walletconnect.com/v3/logo/\(size.rawValue)/\(wallet.imageId)?projectId=\(projectId)" - - return URL(string: urlString) - } -} diff --git a/Sources/WalletConnectModal/UIKitSupport/WalletConnectModalSheetController.swift b/Sources/WalletConnectModal/UIKitSupport/WalletConnectModalSheetController.swift deleted file mode 100644 index 4fddfe591..000000000 --- a/Sources/WalletConnectModal/UIKitSupport/WalletConnectModalSheetController.swift +++ /dev/null @@ -1,45 +0,0 @@ -import SwiftUI - -#if canImport(UIKit) - -class WalletConnectModalSheetController: UIHostingController { - - @MainActor dynamic required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - init() { - super.init(rootView: ModalContainerView()) - self.modalTransitionStyle = .crossDissolve - self.modalPresentationStyle = .overFullScreen - } - - override func viewDidLoad() { - super.viewDidLoad() - self.view.backgroundColor = .clear - } -} - -#elseif canImport(AppKit) - -class WalletConnectModalSheetController: NSHostingController { - - @MainActor dynamic required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - init() { - super.init(rootView: ModalContainerView()) - // TODO: -// self.modalTransitionStyle = .crossDissolve -// self.modalPresentationStyle = .overFullScreen - } - - override func viewDidLoad() { - super.viewDidLoad() - self.view.wantsLayer = true - self.view.layer?.backgroundColor = NSColor.clear.cgColor - } -} - -#endif diff --git a/Sources/WalletConnectModal/WalletConnectModal.swift b/Sources/WalletConnectModal/WalletConnectModal.swift deleted file mode 100644 index 3bdafbea8..000000000 --- a/Sources/WalletConnectModal/WalletConnectModal.swift +++ /dev/null @@ -1,171 +0,0 @@ -import Foundation -import SwiftUI - -#if canImport(UIKit) -import UIKit -#endif - -#if SWIFT_PACKAGE -public typealias VerifyContext = WalletConnectVerify.VerifyContext -#endif - -/// WalletConnectModal instance wrapper -/// -/// ```Swift -/// let metadata = AppMetadata( -/// name: "Swift dapp", -/// description: "dapp", -/// url: "dapp.wallet.connect", -/// icons: ["https://my_icon.com/1"] -/// ) -/// WalletConnectModal.configure(projectId: PROJECT_ID, metadata: metadata) -/// WalletConnectModal.instance.getSessions() -/// ``` -public class WalletConnectModal { - /// WalletConnectModalt client instance - public static var instance: WalletConnectModalClient = { - guard let config = WalletConnectModal.config else { - fatalError("Error - you must call WalletConnectModal.configure(_:) before accessing the shared instance.") - } - return WalletConnectModalClient( - signClient: Sign.instance, - pairingClient: Pair.instance as! (PairingClientProtocol & PairingInteracting & PairingRegisterer) - ) - }() - - struct Config { - static let sdkVersion: String = "swift-\(EnvironmentInfo.packageVersion)" - static let sdkType = "wcm" - - let projectId: String - var metadata: AppMetadata - var sessionParams: SessionParams - - let recommendedWalletIds: [String] - let excludedWalletIds: [String] - } - - private(set) static var config: Config! - - private init() {} - - /// Wallet instance wallet config method. - /// - Parameters: - /// - metadata: App metadata - public static func configure( - projectId: String, - metadata: AppMetadata, - sessionParams: SessionParams = .default, - recommendedWalletIds: [String] = [], - excludedWalletIds: [String] = [], - accentColor: Color? = nil - ) { - Pair.configure(metadata: metadata) - WalletConnectModal.config = WalletConnectModal.Config( - projectId: projectId, - metadata: metadata, - sessionParams: sessionParams, - recommendedWalletIds: recommendedWalletIds, - excludedWalletIds: excludedWalletIds - ) - - if let accentColor { - Color.accent = accentColor - } - } - - public static func set(sessionParams: SessionParams) { - WalletConnectModal.config.sessionParams = sessionParams - } -} - -#if canImport(UIKit) - -extension WalletConnectModal { - - public static func present(from presentingViewController: UIViewController? = nil) { - guard let vc = presentingViewController ?? topViewController() else { - assertionFailure("No controller found for presenting modal") - return - } - - let modal = WalletConnectModalSheetController() - vc.present(modal, animated: true) - } - - public static func create() -> UIViewController { - return WalletConnectModalSheetController() - } - - private static func topViewController(_ base: UIViewController? = nil) -> UIViewController? { - - let base = base ?? UIApplication - .shared - .connectedScenes - .flatMap { ($0 as? UIWindowScene)?.windows ?? [] } - .last { $0.isKeyWindow }? - .rootViewController - - if let nav = base as? UINavigationController { - return topViewController(nav.visibleViewController) - } - - if let tab = base as? UITabBarController { - if let selected = tab.selectedViewController { - return topViewController(selected) - } - } - - if let presented = base?.presentedViewController { - return topViewController(presented) - } - - return base - } -} - -#elseif canImport(AppKit) - -import AppKit - -extension WalletConnectModal { - - public static func present(from presentingViewController: NSViewController? = nil) { - - let modal = WalletConnectModalSheetController() - presentingViewController!.presentAsModalWindow(modal) - } -} - -#endif - -public struct SessionParams { - public let requiredNamespaces: [String: ProposalNamespace] - public let optionalNamespaces: [String: ProposalNamespace]? - public let sessionProperties: [String: String]? - - public init(requiredNamespaces: [String : ProposalNamespace], optionalNamespaces: [String : ProposalNamespace]? = nil, sessionProperties: [String : String]? = nil) { - self.requiredNamespaces = requiredNamespaces - self.optionalNamespaces = optionalNamespaces - self.sessionProperties = sessionProperties - } - - public static let `default`: Self = { - let methods: Set = ["eth_sendTransaction", "personal_sign", "eth_signTypedData"] - let events: Set = ["chainChanged", "accountsChanged"] - let blockchains = [Blockchain("eip155:1")!] - let namespaces: [String: ProposalNamespace] = [ - "eip155": ProposalNamespace( - chains: blockchains, - methods: methods, - events: events - ) - ] - - return SessionParams( - requiredNamespaces: namespaces, - optionalNamespaces: nil, - sessionProperties: nil - ) - }() -} diff --git a/Sources/WalletConnectModal/WalletConnectModalClient.swift b/Sources/WalletConnectModal/WalletConnectModalClient.swift deleted file mode 100644 index cb16847b9..000000000 --- a/Sources/WalletConnectModal/WalletConnectModalClient.swift +++ /dev/null @@ -1,117 +0,0 @@ -import Combine - -// Web3 Modal Client -/// -/// Cannot be instantiated outside of the SDK -/// -/// Access via `WalletConnectModal.instance` -public class WalletConnectModalClient { - // MARK: - Public Properties - - /// Publisher that sends sessions on every sessions update - /// - /// Event will be emited on controller and non-controller clients. - public var sessionsPublisher: AnyPublisher<[Session], Never> { - signClient.sessionsPublisher.eraseToAnyPublisher() - } - - /// Publisher that sends session when one is settled - /// - /// Event is emited on proposer and responder client when both communicating peers have successfully established a session. - public var sessionSettlePublisher: AnyPublisher { - signClient.sessionSettlePublisher.eraseToAnyPublisher() - } - - /// Publisher that sends session proposal that has been rejected - /// - /// Event will be emited on dApp client only. - public var sessionRejectionPublisher: AnyPublisher<(Session.Proposal, Reason), Never> { - signClient.sessionRejectionPublisher.eraseToAnyPublisher() - } - - /// Publisher that sends deleted session topic - /// - /// Event can be emited on any type of the client. - public var sessionDeletePublisher: AnyPublisher<(String, Reason), Never> { - signClient.sessionDeletePublisher.eraseToAnyPublisher() - } - - /// Publisher that sends response for session request - /// - /// In most cases that event will be emited on dApp client. - public var sessionResponsePublisher: AnyPublisher { - signClient.sessionResponsePublisher.eraseToAnyPublisher() - } - - /// Publisher that sends web socket connection status - public var socketConnectionStatusPublisher: AnyPublisher { - signClient.socketConnectionStatusPublisher.eraseToAnyPublisher() - } - - // MARK: - Private Properties - - private let signClient: SignClient - private let pairingClient: PairingClientProtocol & PairingInteracting & PairingRegisterer - - init( - signClient: SignClient, - pairingClient: PairingClientProtocol & PairingInteracting & PairingRegisterer - ) { - self.signClient = signClient - self.pairingClient = pairingClient - } - - /// For creating new pairing - public func createPairing() async throws -> WalletConnectURI { - try await pairingClient.create() - } - - /// For proposing a session to a wallet. - /// Function will propose a session on existing pairing or create new one if not specified - /// Namespaces from WalletConnectModal.config will be used - public func connect() async throws -> WalletConnectURI { - let pairingURI = try await signClient.connect( - requiredNamespaces: WalletConnectModal.config.sessionParams.requiredNamespaces, - optionalNamespaces: WalletConnectModal.config.sessionParams.optionalNamespaces, - sessionProperties: WalletConnectModal.config.sessionParams.sessionProperties - ) - return pairingURI - } - - - /// For sending JSON-RPC requests to wallet. - /// - Parameters: - /// - params: Parameters defining request and related session - public func request(params: Request) async throws { - try await signClient.request(params: params) - } - - /// For a terminating a session - /// - /// Should Error: - /// - When the session topic is not found - /// - Parameters: - /// - topic: Session topic that you want to delete - public func disconnect(topic: String) async throws { - try await signClient.disconnect(topic: topic) - } - - /// Query sessions - /// - Returns: All sessions - public func getSessions() -> [Session] { - signClient.getSessions() - } - - /// Query pairings - /// - Returns: All pairings - public func getPairings() -> [Pairing] { - pairingClient.getPairings() - } - - /// Delete all stored data such as: pairings, sessions, keys - /// - /// - Note: Will unsubscribe from all topics - public func cleanup() async throws { - try await signClient.cleanup() - } -} diff --git a/Sources/WalletConnectModal/WalletConnectModalImports.swift b/Sources/WalletConnectModal/WalletConnectModalImports.swift deleted file mode 100644 index cf703af54..000000000 --- a/Sources/WalletConnectModal/WalletConnectModalImports.swift +++ /dev/null @@ -1,5 +0,0 @@ -#if !CocoaPods -@_exported import WalletConnectSign -@_exported import WalletConnectPairing -@_exported import WalletConnectRelay -#endif diff --git a/Sources/WalletConnectRouter/Router/RouterImports.swift b/Sources/WalletConnectRouter/Router/RouterImports.swift deleted file mode 100644 index e2e65b0f9..000000000 --- a/Sources/WalletConnectRouter/Router/RouterImports.swift +++ /dev/null @@ -1,3 +0,0 @@ -#if !CocoaPods -@_exported import WalletConnectRouter -#endif diff --git a/Sources/WalletConnectRouter/RouterLegacy/include/module.modulemap b/Sources/WalletConnectRouter/RouterLegacy/include/module.modulemap deleted file mode 100644 index 036065d03..000000000 --- a/Sources/WalletConnectRouter/RouterLegacy/include/module.modulemap +++ /dev/null @@ -1,3 +0,0 @@ -module WalletConnectRouter { - header "Router.h" -} diff --git a/Tests/WalletConnectModalTests/ExplorerAPITests.swift b/Tests/WalletConnectModalTests/ExplorerAPITests.swift deleted file mode 100644 index 26bdb83e9..000000000 --- a/Tests/WalletConnectModalTests/ExplorerAPITests.swift +++ /dev/null @@ -1,49 +0,0 @@ -import TestingUtils -@testable import WalletConnectModal -import XCTest - -final class ExplorerAPITests: XCTestCase { - - func testCorrectMappingOfWalletIds() throws { - - let request = Web3ModalAPI - .getWallets( - params: .init( - page: 2, - entries: 40, - search: "", - projectId: "123", - metadata: .stub(), - recommendedIds: ["foo", "bar"], - excludedIds: ["boo", "far"] - ) - ) - .resolve(for: "www.google.com") - - XCTAssertEqual(request?.allHTTPHeaderFields?["Referer"], "Wallet Connect") - XCTAssertEqual(request?.allHTTPHeaderFields?["x-sdk-version"], WalletConnectModal.Config.sdkVersion) - XCTAssertEqual(request?.allHTTPHeaderFields?["x-sdk-type"], "wcm") - XCTAssertEqual(request?.allHTTPHeaderFields?["x-project-id"], "123") - - XCTAssertEqual(request?.url?.queryParameters, [ - "recommendedIds": "foo,bar", - "page": "2", - "entries": "40", - "platform": "ios", - "excludedIds": "boo,far", - ]) - } -} - -private extension URL { - - var queryParameters: [String: String] { - let urlComponents = URLComponents(url: self, resolvingAgainstBaseURL: false) - guard let queryItems = urlComponents?.queryItems else { return [:] } - var queryParams: [String: String] = [:] - queryItems.forEach { - queryParams[$0.name] = $0.value - } - return queryParams - } -} diff --git a/Tests/WalletConnectModalTests/Helpers/FuncTests.swift b/Tests/WalletConnectModalTests/Helpers/FuncTests.swift deleted file mode 100644 index 5e23eda44..000000000 --- a/Tests/WalletConnectModalTests/Helpers/FuncTests.swift +++ /dev/null @@ -1,10 +0,0 @@ -struct FuncTest { - private(set) var values: [T] = [] - var wasCalled: Bool { !values.isEmpty } - var wasNotCalled: Bool { !wasCalled } - var callsCount: Int { values.count } - var wasCalledOnce: Bool { values.count == 1 } - var currentValue: T? { values.last } - mutating func call(_ value: T) { values.append(value) } - init() {} -} diff --git a/Tests/WalletConnectModalTests/Mocks/ModalSheetInteractorMock.swift b/Tests/WalletConnectModalTests/Mocks/ModalSheetInteractorMock.swift deleted file mode 100644 index 216685982..000000000 --- a/Tests/WalletConnectModalTests/Mocks/ModalSheetInteractorMock.swift +++ /dev/null @@ -1,43 +0,0 @@ -import Combine -import Foundation -import WalletConnectSign -@testable import WalletConnectUtils -@testable import WalletConnectModal -@testable import WalletConnectSign - -final class ModalSheetInteractorMock: ModalSheetInteractor { - - var wallets: [Wallet] - - init(wallets: [Wallet] = Wallet.stubList) { - self.wallets = wallets - } - - func getWallets(page: Int, entries: Int) async throws -> (Int, [Wallet]) { - (1, wallets) - } - - func createPairingAndConnect() async throws -> WalletConnectURI { - .init(topic: "foo", symKey: "bar", relay: .init(protocol: "irn", data: nil), expiryTimestamp: 1706001526) - } - - var sessionSettlePublisher: AnyPublisher { - Result.Publisher(Session(topic: "", pairingTopic: "", peer: .stub(), requiredNamespaces: [:], namespaces: [:], sessionProperties: nil, expiryDate: Date())) - .eraseToAnyPublisher() - } - - var sessionRejectionPublisher: AnyPublisher<(Session.Proposal, Reason), Never> { - let sessionProposal = Session.Proposal( - id: "", - pairingTopic: "", - proposer: AppMetadata(name: "", description: "", url: "", icons: [], redirect: try! AppMetadata.Redirect(native: "", universal: nil)), - requiredNamespaces: [:], - optionalNamespaces: nil, - sessionProperties: nil, - proposal: SessionProposal(relays: [], proposer: Participant(publicKey: "", metadata: try! AppMetadata(name: "", description: "", url: "", icons: [], redirect: AppMetadata.Redirect(native: "", universal: nil))), requiredNamespaces: [:], optionalNamespaces: [:], sessionProperties: [:]) - ) - - return Result.Publisher((sessionProposal, SignReasonCode.userRejectedChains)) - .eraseToAnyPublisher() - } -} diff --git a/Tests/WalletConnectModalTests/ModalViewModelTests.swift b/Tests/WalletConnectModalTests/ModalViewModelTests.swift deleted file mode 100644 index a7ec21f6d..000000000 --- a/Tests/WalletConnectModalTests/ModalViewModelTests.swift +++ /dev/null @@ -1,114 +0,0 @@ -import TestingUtils -@testable import WalletConnectModal -import XCTest - -final class ModalViewModelTests: XCTestCase { - private var sut: ModalViewModel! - - private var openURLFuncTest: FuncTest! - private var canOpenURLFuncTest: FuncTest! - private var expectation: XCTestExpectation! - - override func setUpWithError() throws { - try super.setUpWithError() - - openURLFuncTest = .init() - canOpenURLFuncTest = .init() - - sut = .init( - isShown: .constant(true), - interactor: ModalSheetInteractorMock(wallets: [ - Wallet( - id: "1", - name: "Sample App", - homepage: "https://example.com/cool", - imageId: "0528ee7e-16d1-4089-21e3-bbfb41933100", - order: 1, - mobileLink: "https://example.com/universal/", - desktopLink: "sampleapp://deeplink", - webappLink: "https://sample.com/foo/webapp", - appStore: "" - ), - Wallet( - id: "2", - name: "Awesome App", - homepage: "https://example.com/cool", - imageId: "5195e9db-94d8-4579-6f11-ef553be95100", - order: 2, - mobileLink: "awesomeapp://deeplink", - desktopLink: "awesomeapp://deeplink", - webappLink: "https://awesome.com/awesome/universal/", - appStore: "" - ), - ]), - uiApplicationWrapper: .init( - openURL: { url, _ in - self.openURLFuncTest.call(url) - self.expectation.fulfill() - }, - canOpenURL: { url in - self.canOpenURLFuncTest.call(url) - self.expectation.fulfill() - return true - } - ) - ) - } - - override func tearDownWithError() throws { - sut = nil - openURLFuncTest = nil - canOpenURLFuncTest = nil - try super.tearDownWithError() - } - - func test_onWalletTapped() async throws { - await sut.fetchWallets() - await sut.createURI() - - XCTAssertEqual(sut.uri, "wc:foo@2?symKey=bar&relay-protocol=irn&expiryTimestamp=1706001526") - XCTAssertEqual(sut.wallets.count, 2) - XCTAssertEqual(sut.wallets.map(\.id), ["1", "2"]) - XCTAssertEqual(sut.wallets.map(\.name), ["Sample App", "Awesome App"]) - - expectation = XCTestExpectation(description: "Wait for openUrl to be called using native link") - - sut.navigateToDeepLink(wallet: sut.wallets[1], preferBrowser: false) - XCTWaiter.wait(for: [expectation], timeout: 3) - - XCTAssertEqual( - openURLFuncTest.currentValue, - URL(string: "awesomeapp://deeplinkwc?uri=wc%3Afoo%402%3FsymKey%3Dbar%26relay-protocol%3Dirn%26expiryTimestamp%3D1706001526")! - ) - - expectation = XCTestExpectation(description: "Wait for openUrl to be called using universal link") - - sut.navigateToDeepLink(wallet: sut.wallets[1], preferBrowser: false) - XCTWaiter.wait(for: [expectation], timeout: 3) - - XCTAssertEqual( - openURLFuncTest.currentValue, - URL(string: "awesomeapp://deeplinkwc?uri=wc%3Afoo%402%3FsymKey%3Dbar%26relay-protocol%3Dirn%26expiryTimestamp%3D1706001526")! - ) - - expectation = XCTestExpectation(description: "Wait for openUrl to be called using webapp link") - - sut.navigateToDeepLink(wallet: sut.wallets[1], preferBrowser: true) - XCTWaiter.wait(for: [expectation], timeout: 3) - - XCTAssertEqual( - openURLFuncTest.currentValue, - URL(string: "https://awesome.com/awesome/universal/wc?uri=wc%3Afoo%402%3FsymKey%3Dbar%26relay-protocol%3Dirn%26expiryTimestamp%3D1706001526")! - ) - - expectation = XCTestExpectation(description: "Wait for openUrl to be called using native link") - - sut.navigateToDeepLink(wallet: sut.wallets[1], preferBrowser: true) - XCTWaiter.wait(for: [expectation], timeout: 3) - - XCTAssertEqual( - openURLFuncTest.currentValue, - URL(string: "https://awesome.com/awesome/universal/wc?uri=wc%3Afoo%402%3FsymKey%3Dbar%26relay-protocol%3Dirn%26expiryTimestamp%3D1706001526")! - ) - } -} diff --git a/reown-swift.podspec b/reown-swift.podspec index 91b4d7800..d26737fe0 100644 --- a/reown-swift.podspec +++ b/reown-swift.podspec @@ -98,8 +98,8 @@ Pod::Spec.new do |spec| ss.dependency 'WalletConnectSwiftV2/Events' end - spec.subspec 'WalletConnectRouter' do |ss| - ss.source_files = 'Sources/WalletConnectRouter/**/*.{h,m,swift}' + spec.subspec 'ReownRouter' do |ss| + ss.source_files = 'Sources/ReownRouter/**/*.{h,m,swift}' ss.platform = :ios end @@ -141,11 +141,5 @@ Pod::Spec.new do |spec| spec.subspec 'HTTPClient' do |ss| ss.source_files = 'Sources/HTTPClient/**/*.{h,m,swift}' end - - spec.subspec 'WalletConnectModal' do |ss| - ss.source_files = 'Sources/WalletConnectModal/**/*.{h,m,swift}' - ss.dependency 'WalletConnectSwiftV2/WalletConnectSign' - ss.dependency 'DSF_QRCode', '~> 16.1.1' - ss.platform = :ios - end + end