diff --git a/lib/app/shared/helper_functions/helper_functions.dart b/lib/app/shared/helper_functions/helper_functions.dart index 71b2f7d76..e3722acd7 100644 --- a/lib/app/shared/helper_functions/helper_functions.dart +++ b/lib/app/shared/helper_functions/helper_functions.dart @@ -19,64 +19,6 @@ import 'package:key_generator/key_generator.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:secure_storage/secure_storage.dart'; -Future openBlockchainExplorer( - BlockchainNetwork network, - String txHash, -) async { - if (network is TezosNetwork) { - await LaunchUrl.launch( - 'https://tzkt.io/$txHash', - ); - } else if (network is PolygonNetwork) { - await LaunchUrl.launch( - 'https://polygonscan.com/tx/$txHash', - ); - } else if (network is BinanceNetwork) { - await LaunchUrl.launch( - 'https://www.bscscan.com/tx/$txHash', - ); - } else if (network is FantomNetwork) { - await LaunchUrl.launch( - 'https://ftmscan.com/tx/$txHash', - ); - } else if (network is EthereumNetwork) { - await LaunchUrl.launch( - 'https://etherscan.io/tx/$txHash', - ); - } else { - UnimplementedError(); - } -} - -Future openAddressBlockchainExplorer( - BlockchainNetwork network, - String address, -) async { - if (network is TezosNetwork) { - await LaunchUrl.launch( - 'https://tzkt.io/$address/operations', - ); - } else if (network is PolygonNetwork) { - await LaunchUrl.launch( - 'https://polygonscan.com/address/$address', - ); - } else if (network is BinanceNetwork) { - await LaunchUrl.launch( - 'https://www.bscscan.com/address/$address', - ); - } else if (network is FantomNetwork) { - await LaunchUrl.launch( - 'https://ftmscan.com/address/$address', - ); - } else if (network is EthereumNetwork) { - await LaunchUrl.launch( - 'https://etherscan.io/address/$address', - ); - } else { - UnimplementedError(); - } -} - String generateDefaultAccountName( int accountIndex, List accountNameList, @@ -104,10 +46,6 @@ String getIssuerDid({required Uri uriToCheck}) { return did; } -bool isPolygonssuer(CredentialModel credentialModel) { - return credentialModel.issuer.contains('did:polygonid'); -} - bool isValidPrivateKey(String value) { bool isEthereumPrivateKey = false; if (RegExp(r'^(0x)?[0-9a-f]{64}$', caseSensitive: false).hasMatch(value)) { @@ -331,16 +269,6 @@ Future getRandomP256PrivateKey( } } -bool isVerifiableDiplomaType(CredentialModel credentialModel) { - return credentialModel.credentialPreview.type.contains('VerifiableDiploma'); -} - -bool isPolygonIdCard(CredentialModel credentialModel) { - return credentialModel.credentialPreview.credentialSubjectModel.id - ?.contains('did:polygonid:polygon:') ?? - false; -} - Map decodePayload({ required JWTDecode jwtDecode, required String token, diff --git a/lib/app/shared/models/blockchain_network/blockchain_network.dart b/lib/app/shared/models/blockchain_network/blockchain_network.dart index 1b917bea2..8986e71c0 100644 --- a/lib/app/shared/models/blockchain_network/blockchain_network.dart +++ b/lib/app/shared/models/blockchain_network/blockchain_network.dart @@ -46,4 +46,56 @@ class BlockchainNetwork extends Equatable { 'rpcNodeUrl: $rpcNodeUrl, apiKey: $apiKey ,title:$title ' ',subTitle:$subTitle, type: $type}'; } + + Future openBlockchainExplorer(String txHash) async { + if (this is TezosNetwork) { + await LaunchUrl.launch( + 'https://tzkt.io/$txHash', + ); + } else if (this is PolygonNetwork) { + await LaunchUrl.launch( + 'https://polygonscan.com/tx/$txHash', + ); + } else if (this is BinanceNetwork) { + await LaunchUrl.launch( + 'https://www.bscscan.com/tx/$txHash', + ); + } else if (this is FantomNetwork) { + await LaunchUrl.launch( + 'https://ftmscan.com/tx/$txHash', + ); + } else if (this is EthereumNetwork) { + await LaunchUrl.launch( + 'https://etherscan.io/tx/$txHash', + ); + } else { + UnimplementedError(); + } + } + + Future openAddressBlockchainExplorer(String address) async { + if (this is TezosNetwork) { + await LaunchUrl.launch( + 'https://tzkt.io/$address/operations', + ); + } else if (this is PolygonNetwork) { + await LaunchUrl.launch( + 'https://polygonscan.com/address/$address', + ); + } else if (this is BinanceNetwork) { + await LaunchUrl.launch( + 'https://www.bscscan.com/address/$address', + ); + } else if (this is FantomNetwork) { + await LaunchUrl.launch( + 'https://ftmscan.com/address/$address', + ); + } else if (this is EthereumNetwork) { + await LaunchUrl.launch( + 'https://etherscan.io/address/$address', + ); + } else { + UnimplementedError(); + } + } } diff --git a/lib/credentials/cubit/credentials_cubit.dart b/lib/credentials/cubit/credentials_cubit.dart index 396588bf9..9f9f746fb 100644 --- a/lib/credentials/cubit/credentials_cubit.dart +++ b/lib/credentials/cubit/credentials_cubit.dart @@ -60,11 +60,8 @@ class CredentialsCubit extends Cubit { /// manually categorizing default credential for (final credential in savedCredentials) { - final isDefaultCredential = credential - .credentialPreview.credentialSubjectModel.credentialSubjectType == - CredentialSubjectType.defaultCredential; - - if (isDefaultCredential && isVerifiableDiplomaType(credential)) { + if (credential.isDefaultCredential && + credential.isVerifiableDiplomaType) { final updatedCredential = credential.copyWith( credentialPreview: credential.credentialPreview.copyWith( credentialSubjectModel: @@ -74,7 +71,7 @@ class CredentialsCubit extends Cubit { ), ); updatedCredentials.add(updatedCredential); - } else if (isDefaultCredential && isPolygonIdCard(credential)) { + } else if (credential.isDefaultCredential && credential.isPolygonIdCard) { final updatedCredential = credential.copyWith( credentialPreview: credential.credentialPreview.copyWith( credentialSubjectModel: @@ -206,11 +203,7 @@ class CredentialsCubit extends Cubit { }) async { late final List credentials; - final isDefaultCredential = credential - .credentialPreview.credentialSubjectModel.credentialSubjectType == - CredentialSubjectType.defaultCredential; - - if (isDefaultCredential && isVerifiableDiplomaType(credential)) { + if (credential.isDefaultCredential && credential.isVerifiableDiplomaType) { final updatedCredential = credential.copyWith( credentialPreview: credential.credentialPreview.copyWith( credentialSubjectModel: @@ -222,7 +215,7 @@ class CredentialsCubit extends Cubit { await replaceCredential(credential: updatedCredential); await credentialsRepository.insert(updatedCredential); credentials = List.of(state.credentials)..add(updatedCredential); - } else if (isDefaultCredential && isPolygonIdCard(credential)) { + } else if (credential.isDefaultCredential && credential.isPolygonIdCard) { final updatedCredential = credential.copyWith( credentialPreview: credential.credentialPreview.copyWith( credentialSubjectModel: diff --git a/lib/dashboard/home/tab_bar/credentials/detail/cubit/credential_details_cubit.dart b/lib/dashboard/home/tab_bar/credentials/detail/cubit/credential_details_cubit.dart index 03cb5741a..a4fb4b68b 100644 --- a/lib/dashboard/home/tab_bar/credentials/detail/cubit/credential_details_cubit.dart +++ b/lib/dashboard/home/tab_bar/credentials/detail/cubit/credential_details_cubit.dart @@ -94,7 +94,7 @@ class CredentialDetailsCubit extends Cubit { status: AppStatus.idle, ), ); - } else if (isPolygonssuer(item)) { + } else if (item.isPolygonssuer) { final mnemonic = await secureStorageProvider.get(SecureStorageKeys.ssiMnemonic); await polygonIdCubit.initialise(); diff --git a/lib/dashboard/home/tab_bar/credentials/models/credential_model/credential_model.dart b/lib/dashboard/home/tab_bar/credentials/models/credential_model/credential_model.dart index d07d3d5e1..b5ca0aece 100644 --- a/lib/dashboard/home/tab_bar/credentials/models/credential_model/credential_model.dart +++ b/lib/dashboard/home/tab_bar/credentials/models/credential_model/credential_model.dart @@ -193,6 +193,20 @@ class CredentialModel extends Equatable { return map['id'] as String?; } + bool get isPolygonssuer => issuer.contains('did:polygonid'); + + bool get isVerifiableDiplomaType => + credentialPreview.type.contains('VerifiableDiploma'); + + bool get isPolygonIdCard => + credentialPreview.credentialSubjectModel.id + ?.contains('did:polygonid:polygon:') ?? + false; + + bool get isDefaultCredential => + credentialPreview.credentialSubjectModel.credentialSubjectType == + CredentialSubjectType.defaultCredential; + @override List get props => [ id, diff --git a/lib/dashboard/home/tab_bar/credentials/widgets/credential_display.dart b/lib/dashboard/home/tab_bar/credentials/widgets/credential_display.dart index f4dc889b8..b7dcbad2f 100644 --- a/lib/dashboard/home/tab_bar/credentials/widgets/credential_display.dart +++ b/lib/dashboard/home/tab_bar/credentials/widgets/credential_display.dart @@ -71,7 +71,7 @@ class CredentialDisplay extends StatelessWidget { } case CredentialSubjectType.defaultCredential: - if (isPolygonIdCard(credentialModel)) { + if (credentialModel.isPolygonIdCard) { return DefaultPolygonIdCardWidget(credentialModel: credentialModel); } else { switch (credDisplayType) { diff --git a/lib/dashboard/home/tab_bar/credentials/widgets/credential_manifest_widgets/credential_manifest_card.dart b/lib/dashboard/home/tab_bar/credentials/widgets/credential_manifest_widgets/credential_manifest_card.dart index 6d30943c2..f8495711a 100644 --- a/lib/dashboard/home/tab_bar/credentials/widgets/credential_manifest_widgets/credential_manifest_card.dart +++ b/lib/dashboard/home/tab_bar/credentials/widgets/credential_manifest_widgets/credential_manifest_card.dart @@ -15,7 +15,7 @@ class CredentialManifestCard extends StatelessWidget { @override Widget build(BuildContext context) { - final textColor = isVerifiableDiplomaType(credentialModel) + final textColor = credentialModel.isVerifiableDiplomaType ? Colors.white : getColorFromCredential(outputDescriptor.styles?.text, Colors.black); final credential = Credential.fromJsonOrDummy(credentialModel.data); diff --git a/lib/dashboard/home/tab_bar/credentials/widgets/credential_widget/default_credential_detail_widget.dart b/lib/dashboard/home/tab_bar/credentials/widgets/credential_widget/default_credential_detail_widget.dart index 6fd3ca62e..04be2cff7 100644 --- a/lib/dashboard/home/tab_bar/credentials/widgets/credential_widget/default_credential_detail_widget.dart +++ b/lib/dashboard/home/tab_bar/credentials/widgets/credential_widget/default_credential_detail_widget.dart @@ -74,7 +74,7 @@ class DefaultCredentialDetailWidget extends StatelessWidget { decoration: BaseBoxDecoration( borderRadius: BorderRadius.circular(Sizes.credentialBorderRadius), color: backgroundColor, - gradient: isVerifiableDiplomaType(credentialModel) + gradient: credentialModel.isVerifiableDiplomaType ? const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, diff --git a/lib/dashboard/home/tab_bar/credentials/widgets/credential_widget/default_credential_list_widget.dart b/lib/dashboard/home/tab_bar/credentials/widgets/credential_widget/default_credential_list_widget.dart index 54524d654..305e72bdc 100644 --- a/lib/dashboard/home/tab_bar/credentials/widgets/credential_widget/default_credential_list_widget.dart +++ b/lib/dashboard/home/tab_bar/credentials/widgets/credential_widget/default_credential_list_widget.dart @@ -53,7 +53,7 @@ class DefaultCredentialListWidget extends StatelessWidget { child: DecoratedBox( decoration: BaseBoxDecoration( color: backgroundColor, - gradient: isVerifiableDiplomaType(credentialModel) + gradient: credentialModel.isVerifiableDiplomaType ? const LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, diff --git a/lib/dashboard/home/tab_bar/nft/view/nft_details_page.dart b/lib/dashboard/home/tab_bar/nft/view/nft_details_page.dart index 2c8cfd245..f1d4a1d68 100644 --- a/lib/dashboard/home/tab_bar/nft/view/nft_details_page.dart +++ b/lib/dashboard/home/tab_bar/nft/view/nft_details_page.dart @@ -217,10 +217,11 @@ class _NftDetailsViewState extends State { size: Sizes.icon, ), onPressed: () { - openAddressBlockchainExplorer( - context.read().state.network, - nftModel.contractAddress, - ); + context + .read() + .state + .network + .openAddressBlockchainExplorer(nftModel.contractAddress); }, ), ], @@ -265,10 +266,11 @@ class _NftDetailsViewState extends State { size: Sizes.icon, ), onPressed: () { - openAddressBlockchainExplorer( - context.read().state.network, - nftModel.creators!.first, - ); + context + .read() + .state + .network + .openAddressBlockchainExplorer(nftModel.creators!.first); }, ), ], @@ -296,10 +298,11 @@ class _NftDetailsViewState extends State { size: Sizes.icon, ), onPressed: () { - openAddressBlockchainExplorer( - context.read().state.network, - nftModel.publishers!.first, - ); + context + .read() + .state + .network + .openAddressBlockchainExplorer(nftModel.publishers!.first); }, ), ], @@ -348,10 +351,11 @@ class _NftDetailsViewState extends State { size: Sizes.icon, ), onPressed: () { - openAddressBlockchainExplorer( - context.read().state.network, - nftModel.contractAddress, - ); + context + .read() + .state + .network + .openAddressBlockchainExplorer(nftModel.contractAddress); }, ), ], @@ -378,10 +382,11 @@ class _NftDetailsViewState extends State { size: Sizes.icon, ), onPressed: () { - openAddressBlockchainExplorer( - context.read().state.network, - nftModel.minterAddress!, - ); + context + .read() + .state + .network + .openAddressBlockchainExplorer(nftModel.minterAddress!); }, ), ], diff --git a/lib/dashboard/home/tab_bar/tokens/confirm_token_transaction/view/confirm_token_transaction_page.dart b/lib/dashboard/home/tab_bar/tokens/confirm_token_transaction/view/confirm_token_transaction_page.dart index dc3f7974c..458b4b889 100644 --- a/lib/dashboard/home/tab_bar/tokens/confirm_token_transaction/view/confirm_token_transaction_page.dart +++ b/lib/dashboard/home/tab_bar/tokens/confirm_token_transaction/view/confirm_token_transaction_page.dart @@ -136,7 +136,7 @@ class _ConfirmWithdrawalViewState extends State { onTrasactionHashTap: () { final network = context.read().state.network; if (state.transactionHash != null) { - openBlockchainExplorer(network, state.transactionHash!); + network.openBlockchainExplorer(state.transactionHash!); } }, onDoneButtonClick: () { diff --git a/lib/dashboard/home/tab_bar/tokens/send_receive_home/widgets/recent_transactions.dart b/lib/dashboard/home/tab_bar/tokens/send_receive_home/widgets/recent_transactions.dart index d680b3866..cb7220635 100644 --- a/lib/dashboard/home/tab_bar/tokens/send_receive_home/widgets/recent_transactions.dart +++ b/lib/dashboard/home/tab_bar/tokens/send_receive_home/widgets/recent_transactions.dart @@ -55,10 +55,8 @@ class RecentTransactions extends StatelessWidget { .read() .state .network; - openBlockchainExplorer( - network, - operations[index].hash, - ); + network + .openBlockchainExplorer(operations[index].hash); }, ), separatorBuilder: (_, __) {