Skip to content

Commit

Permalink
iOS – Seed export (#413)
Browse files Browse the repository at this point in the history
## Purpose

Add ability to export the seed (in UI called Wallet private key) as a
hex string.
This is to be used by those users who have no ability to copy their seed
phrase (because it is not stored in their app)
  • Loading branch information
ramakser authored Sep 12, 2024
1 parent 381941f commit 3ff9602
Show file tree
Hide file tree
Showing 23 changed files with 501 additions and 19 deletions.
66 changes: 48 additions & 18 deletions ConcordiumWallet.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -632,6 +632,14 @@
5088BABB2C6CA2030056CFD0 /* TermsAndConditionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BAB92C6CA2030056CFD0 /* TermsAndConditionsView.swift */; };
5088BABC2C6CA2030056CFD0 /* TermsAndConditionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BAB92C6CA2030056CFD0 /* TermsAndConditionsView.swift */; };
5088BABD2C6CA2030056CFD0 /* TermsAndConditionsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BAB92C6CA2030056CFD0 /* TermsAndConditionsView.swift */; };
5088BAC02C91EF7D0056CFD0 /* RevealPrivateKeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BABF2C91EF7D0056CFD0 /* RevealPrivateKeyView.swift */; };
5088BAC12C91EF7D0056CFD0 /* RevealPrivateKeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BABF2C91EF7D0056CFD0 /* RevealPrivateKeyView.swift */; };
5088BAC22C91EF7D0056CFD0 /* RevealPrivateKeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BABF2C91EF7D0056CFD0 /* RevealPrivateKeyView.swift */; };
5088BAC32C91EF7D0056CFD0 /* RevealPrivateKeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BABF2C91EF7D0056CFD0 /* RevealPrivateKeyView.swift */; };
5088BAC62C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BAC52C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift */; };
5088BAC72C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BAC52C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift */; };
5088BAC82C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BAC52C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift */; };
5088BAC92C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5088BAC52C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift */; };
509749C42C19A0BA00D28D6B /* UnshiedSunsetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509749C32C19A0BA00D28D6B /* UnshiedSunsetView.swift */; };
509749C52C19A0BA00D28D6B /* UnshiedSunsetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509749C32C19A0BA00D28D6B /* UnshiedSunsetView.swift */; };
509749C62C19A0BA00D28D6B /* UnshiedSunsetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509749C32C19A0BA00D28D6B /* UnshiedSunsetView.swift */; };
Expand Down Expand Up @@ -3066,6 +3074,8 @@
19C2EFED051EE58467949EAA /* AddRecipientPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AddRecipientPresenter.swift; sourceTree = "<group>"; };
19C2EFF2620E0CD7DECE642A /* ChoiceArData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChoiceArData.swift; sourceTree = "<group>"; };
5088BAB92C6CA2030056CFD0 /* TermsAndConditionsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TermsAndConditionsView.swift; sourceTree = "<group>"; };
5088BABF2C91EF7D0056CFD0 /* RevealPrivateKeyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RevealPrivateKeyView.swift; sourceTree = "<group>"; };
5088BAC52C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftUIRequestPasswordDelegate.swift; sourceTree = "<group>"; };
509749C32C19A0BA00D28D6B /* UnshiedSunsetView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnshiedSunsetView.swift; sourceTree = "<group>"; };
50F8F98A2C620FCC004447CA /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = "<group>"; };
52055F762552B83D0071F7CA /* IdentityCardView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = IdentityCardView.xib; sourceTree = "<group>"; };
Expand Down Expand Up @@ -4327,6 +4337,22 @@
path = Network;
sourceTree = "<group>";
};
5088BABE2C91EF620056CFD0 /* RevealPrivateKey */ = {
isa = PBXGroup;
children = (
5088BABF2C91EF7D0056CFD0 /* RevealPrivateKeyView.swift */,
);
path = RevealPrivateKey;
sourceTree = "<group>";
};
5088BAC42C921B440056CFD0 /* RequestPasswordDelegate */ = {
isa = PBXGroup;
children = (
5088BAC52C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift */,
);
path = RequestPasswordDelegate;
sourceTree = "<group>";
};
509749C22C199B7400D28D6B /* UnshiedSunset */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -4939,6 +4965,8 @@
7FF07AE323EAE09B00F1FC04 /* Views */ = {
isa = PBXGroup;
children = (
5088BAC42C921B440056CFD0 /* RequestPasswordDelegate */,
5088BABE2C91EF620056CFD0 /* RevealPrivateKey */,
509749C22C199B7400D28D6B /* UnshiedSunset */,
0111D7212A2DFE7000E05D35 /* WalletConnect */,
19C2E50D27878D62320AE14B /* ScanQR */,
Expand Down Expand Up @@ -6733,6 +6761,7 @@
89B34A292892B6B10059891C /* RecoveryPhraseInputPresenter.swift in Sources */,
7F48C27D244E17D100997684 /* SubmissionStatus.swift in Sources */,
01AB17DE2AA1F5F50078237F /* SendFundTokenSelection.swift in Sources */,
5088BAC62C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift in Sources */,
C94ED728246302160071A4FB /* TransactionDetailInfoCellView.swift in Sources */,
01A91AAB2A8E7D9C00735D23 /* CIS2TokensMetadataItem.swift in Sources */,
078967082742F0890031EA9F /* KeyboardDismissableBaseViewController.swift in Sources */,
Expand Down Expand Up @@ -6772,6 +6801,7 @@
52A6A77E24F909CD00138D83 /* IDObjectRequestWrapper.swift in Sources */,
7F48C1DC244DCD0B00997684 /* IdentityConfirmedViewController.swift in Sources */,
7F48C274244E17D100997684 /* MakeCreateTransferRequest.swift in Sources */,
5088BAC02C91EF7D0056CFD0 /* RevealPrivateKeyView.swift in Sources */,
891B19D328A3819700F4B0D6 /* SubmitSeedAccountPresenter.swift in Sources */,
89D46871289D21D2007D3FC8 /* SeedIdentityStatusView.swift in Sources */,
527DE350257378DC00333E65 /* ReleaseScheduleCell.swift in Sources */,
Expand Down Expand Up @@ -7030,6 +7060,7 @@
FA0CAAED2934ECE40009D5F8 /* UserDefaultsQueue.swift in Sources */,
7F85B6FB246A9A7C00ED09B8 /* KeychainWrapper.swift in Sources */,
7F85B6FC246A9A7C00ED09B8 /* MenuItemCellView.swift in Sources */,
5088BAC82C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift in Sources */,
64DB66D325DE6A1300F4C605 /* AboutViewController.swift in Sources */,
070D625F27B3DF0500B6903C /* OnboardingCarouselWebContentViewController.swift in Sources */,
7F85B6FE246A9A7C00ED09B8 /* UIButton+StoryboardLocalization.swift in Sources */,
Expand Down Expand Up @@ -7418,6 +7449,7 @@
CD3E4A912A5588D700D7FBF3 /* SignMessagePayload.swift in Sources */,
7FF9191E2511505C00B1032B /* ImportViewController.swift in Sources */,
509749C62C19A0BA00D28D6B /* UnshiedSunsetView.swift in Sources */,
5088BAC22C91EF7D0056CFD0 /* RevealPrivateKeyView.swift in Sources */,
7F85B7B1246A9A7C00ED09B8 /* TransactionDetailInfoCellView.swift in Sources */,
7F85B7B2246A9A7C00ED09B8 /* TransactionsLoadingHandler.swift in Sources */,
89D46844289BF99C007D3FC8 /* SeedIDRequest.swift in Sources */,
Expand Down Expand Up @@ -7624,6 +7656,7 @@
FA0CAAEE2934ECE40009D5F8 /* UserDefaultsQueue.swift in Sources */,
7F85B7F9246A9AB600ED09B8 /* Origin.swift in Sources */,
7F85B7FA246A9AB600ED09B8 /* KeychainWrapper.swift in Sources */,
5088BAC92C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift in Sources */,
64DB66D425DE6A1300F4C605 /* AboutViewController.swift in Sources */,
070D626027B3DF0500B6903C /* OnboardingCarouselWebContentViewController.swift in Sources */,
7F85B7FB246A9AB600ED09B8 /* MenuItemCellView.swift in Sources */,
Expand Down Expand Up @@ -8012,6 +8045,7 @@
CD3E4A922A5588D700D7FBF3 /* SignMessagePayload.swift in Sources */,
7FF9191F2511505C00B1032B /* ImportViewController.swift in Sources */,
509749C72C19A0BA00D28D6B /* UnshiedSunsetView.swift in Sources */,
5088BAC32C91EF7D0056CFD0 /* RevealPrivateKeyView.swift in Sources */,
7F85B8AE246A9AB600ED09B8 /* AccountDetailsPresenter.swift in Sources */,
7F85B8AF246A9AB600ED09B8 /* TransactionViewModel.swift in Sources */,
89D46845289BF99C007D3FC8 /* SeedIDRequest.swift in Sources */,
Expand Down Expand Up @@ -8352,6 +8386,7 @@
7FEB7BEF2409111400D3E0EC /* PreIdentityObject.swift in Sources */,
89D467C3289AAD4A007D3FC8 /* PrivateIDObjectData.swift in Sources */,
C938F531241E789A00ECAD47 /* CreateAccountCoordinator.swift in Sources */,
5088BAC72C921B670056CFD0 /* SwiftUIRequestPasswordDelegate.swift in Sources */,
C9BB9FE12444AB3900AE0884 /* GeneralFormatter.swift in Sources */,
89D46801289BA089007D3FC8 /* SeedMobileWallet.swift in Sources */,
01145A3E2B03A4F8008331F5 /* Double+Rounding.swift in Sources */,
Expand Down Expand Up @@ -8643,6 +8678,7 @@
01CFC6AC2A43308C007F9747 /* ContractUpdatePayloadEntity.swift in Sources */,
19C2E0C5C3B047A2DC0D44D7 /* AccountDetailsPresenter.swift in Sources */,
89D46818289BC9DC007D3FC8 /* OnboardingCarouselView.swift in Sources */,
5088BAC12C91EF7D0056CFD0 /* RevealPrivateKeyView.swift in Sources */,
19C2E0045F94FFFE728C6603 /* TransactionViewModel.swift in Sources */,
C94ED727246302160071A4FB /* TransactionDetailInfoCellView.swift in Sources */,
19C2E2E6817B5D3C16E135CE /* TransactionsLoadingHandler.swift in Sources */,
Expand Down Expand Up @@ -8854,7 +8890,7 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Dependencies",
);
MARKETING_VERSION = 1.5.1;
MARKETING_VERSION = 1.5.2;
MOCK = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -DMOCK";
PRODUCT_BUNDLE_IDENTIFIER = software.concordium.mobilewallet.seedphrase.mocked;
Expand Down Expand Up @@ -8887,7 +8923,7 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Dependencies",
);
MARKETING_VERSION = 1.5.1;
MARKETING_VERSION = 1.5.2;
MOCK = YES;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -DMOCK";
PRODUCT_BUNDLE_IDENTIFIER = software.concordium.mobilewallet.seedphrase.mocked;
Expand All @@ -8905,11 +8941,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "ConcordiumWallet/Resources/Entitlements/Concordium ID.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 64;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = K762RM4LQ3;
DEVELOPMENT_TEAM = K762RM4LQ3;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = "ConcordiumWallet/Resources/ConcordiumWalletTestNet-Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "TestNet Seed Phrase Wallet";
Expand All @@ -8923,12 +8957,11 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Dependencies",
);
MARKETING_VERSION = 1.5.1;
MARKETING_VERSION = 1.5.2;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -DTESTNET";
PRODUCT_BUNDLE_IDENTIFIER = software.concordium.mobilewallet.seedphrase.testnet;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore software.concordium.mobilewallet.seedphrase.testnet";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG ENABLE_GTU_DROP";
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/ConcordiumWallet-Briding-Header-File.h";
SWIFT_VERSION = 5.0;
Expand All @@ -8943,11 +8976,9 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = "ConcordiumWallet/Resources/Entitlements/Concordium ID.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 64;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = K762RM4LQ3;
DEVELOPMENT_TEAM = K762RM4LQ3;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = "ConcordiumWallet/Resources/ConcordiumWalletTestNet-Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "TestNet Seed Phrase Wallet";
Expand All @@ -8961,12 +8992,11 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Dependencies",
);
MARKETING_VERSION = 1.5.1;
MARKETING_VERSION = 1.5.2;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -DTESTNET";
PRODUCT_BUNDLE_IDENTIFIER = software.concordium.mobilewallet.seedphrase.testnet;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore software.concordium.mobilewallet.seedphrase.testnet";
SWIFT_ACTIVE_COMPILATION_CONDITIONS = ENABLE_GTU_DROP;
SWIFT_OBJC_BRIDGING_HEADER = "$(SRCROOT)/ConcordiumWallet-Briding-Header-File.h";
SWIFT_VERSION = 5.0;
Expand Down Expand Up @@ -8997,7 +9027,7 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Dependencies",
);
MARKETING_VERSION = 1.5.1;
MARKETING_VERSION = 1.5.2;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -DMAINNET";
PRODUCT_BUNDLE_IDENTIFIER = software.concordium.mobilewallet.seedphrase.mainnet;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down Expand Up @@ -9033,7 +9063,7 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Dependencies",
);
MARKETING_VERSION = 1.5.1;
MARKETING_VERSION = 1.5.2;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -DMAINNET";
PRODUCT_BUNDLE_IDENTIFIER = software.concordium.mobilewallet.seedphrase.mainnet;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down Expand Up @@ -9187,7 +9217,7 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Dependencies",
);
MARKETING_VERSION = 1.5.1;
MARKETING_VERSION = 1.5.2;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -DSTAGINGNET";
PRODUCT_BUNDLE_IDENTIFIER = software.concordium.mobilewallet.seedphrase.stagenet;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down Expand Up @@ -9222,7 +9252,7 @@
"$(PROJECT_DIR)",
"$(PROJECT_DIR)/Dependencies",
);
MARKETING_VERSION = 1.5.1;
MARKETING_VERSION = 1.5.2;
OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -DSTAGINGNET";
PRODUCT_BUNDLE_IDENTIFIER = software.concordium.mobilewallet.seedphrase.stagenet;
PRODUCT_NAME = "$(TARGET_NAME)";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
{
"originHash" : "06ce748ca616ce913f1f54d3edabe35c86d6b8a020d222ae86472feb433d8e60",
"pins" : [
{
"identity" : "bigint",
"kind" : "remoteSourceControl",
"location" : "https://github.com/attaswift/BigInt.git",
"state" : {
"revision" : "0ed110f7555c34ff468e72e1686e59721f2b0da6",
"version" : "5.3.0"
}
},
{
"identity" : "concordium-wallet-crypto-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/Concordium/concordium-wallet-crypto-swift",
"state" : {
"revision" : "f7728a5274aae63e1bd5204ba455dfaf740f57a9",
"version" : "0.24.0-0"
}
},
{
"identity" : "matomo-sdk-ios",
"kind" : "remoteSourceControl",
"location" : "https://github.com/matomo-org/matomo-sdk-ios.git",
"state" : {
"revision" : "15a645e11eaa8053f93749d73ced03da1e56fd01",
"version" : "7.5.2"
}
},
{
"identity" : "mnemonicswift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/zcash-hackworks/MnemonicSwift",
"state" : {
"revision" : "716a2c32ac2bbd8a1499ac834077df42b75edc85",
"version" : "2.2.4"
}
},
{
"identity" : "qrcode",
"kind" : "remoteSourceControl",
"location" : "https://github.com/WalletConnect/QRCode",
"state" : {
"revision" : "263f280d2c8144adfb0b6676109846cfc8dd552b",
"version" : "14.3.1"
}
},
{
"identity" : "realm-core",
"kind" : "remoteSourceControl",
"location" : "https://github.com/realm/realm-core.git",
"state" : {
"revision" : "f1e962cd447f8b69f8f7cf46a188b1c6246923c5",
"version" : "13.17.0"
}
},
{
"identity" : "realm-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/realm/realm-swift",
"state" : {
"revision" : "0155caac1a0830a9fbaaffe5866b909fad3a6fc4",
"version" : "10.41.1"
}
},
{
"identity" : "sdwebimage",
"kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/SDWebImage.git",
"state" : {
"revision" : "f6afa0132961d593f07970d84e2d8b588c29ea04",
"version" : "5.19.1"
}
},
{
"identity" : "sdwebimagesvgcoder",
"kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/SDWebImageSVGCoder.git",
"state" : {
"revision" : "950167445ab703740569869c8b7510efc9d09a26",
"version" : "1.7.0"
}
},
{
"identity" : "sdwebimageswiftui",
"kind" : "remoteSourceControl",
"location" : "https://github.com/SDWebImage/SDWebImageSwiftUI.git",
"state" : {
"revision" : "b7af5e6bd9c2987e41730400d1baad13d74a141a",
"version" : "3.0.4"
}
},
{
"identity" : "starscream",
"kind" : "remoteSourceControl",
"location" : "https://github.com/daltoniam/Starscream.git",
"state" : {
"revision" : "a063fda2b8145a231953c20e7a646be254365396",
"version" : "3.1.2"
}
},
{
"identity" : "swift-crypto",
"kind" : "remoteSourceControl",
"location" : "https://github.com/apple/swift-crypto.git",
"state" : {
"revision" : "60f13f60c4d093691934dc6cfdf5f508ada1f894",
"version" : "2.6.0"
}
},
{
"identity" : "swift-qrcode-generator",
"kind" : "remoteSourceControl",
"location" : "https://github.com/dagronf/swift-qrcode-generator",
"state" : {
"revision" : "5ca09b6a2ad190f94aa3d6ddef45b187f8c0343b",
"version" : "1.0.3"
}
},
{
"identity" : "swiftcbor",
"kind" : "remoteSourceControl",
"location" : "https://github.com/unrelentingtech/SwiftCBOR",
"state" : {
"revision" : "418dab41b09a5da0d45d7b788c59085979ff4dae",
"version" : "0.4.7"
}
},
{
"identity" : "swiftimagereadwrite",
"kind" : "remoteSourceControl",
"location" : "https://github.com/dagronf/SwiftImageReadWrite",
"state" : {
"revision" : "5596407d1cf61b953b8e658fa8636a471df3c509",
"version" : "1.1.6"
}
},
{
"identity" : "walletconnectswiftv2",
"kind" : "remoteSourceControl",
"location" : "https://github.com/WalletConnect/WalletConnectSwiftV2.git",
"state" : {
"revision" : "84b09a13b48d08f1092a7494e2ad70cbb92545c2",
"version" : "1.6.11"
}
}
],
"version" : 3
}
7 changes: 7 additions & 0 deletions ConcordiumWallet/Extensions/UIApplication+Helper.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,10 @@ extension UIApplication {
}
}
}


extension UIApplication {
func topMostViewController() -> UIViewController? {
return self.keyWindow?.rootViewController?.topMostViewController()
}
}
Loading

0 comments on commit 3ff9602

Please sign in to comment.