diff --git a/lib/app/shared/constants/urls.dart b/lib/app/shared/constants/urls.dart index e2d74a7a3..7c3ac1519 100644 --- a/lib/app/shared/constants/urls.dart +++ b/lib/app/shared/constants/urls.dart @@ -21,8 +21,6 @@ class Urls { /// email pass static const String emailPassUrl = 'https://issuer.talao.co/emailpass'; - static const String emailPassUrlJWTVCJSON = - 'https://issuer.talao.co/emailpass?format=jwt_vc_json'; /// tezotopia voucher static const String tezotopiaVoucherUrl = @@ -133,14 +131,14 @@ class Urls { static String ethPrice(String symbol) => '$cryptoCompareBaseUrl/data/price?fsym=$symbol&tsyms=USD'; - /// TZKT + // TZKT static const tzktMainnetUrl = 'https://api.tzkt.io'; static const tzktGhostnetUrl = 'https://api.ghostnet.tzkt.io'; - /// Moralis + //Moralis static const moralisBaseUrl = 'https://deep-index.moralis.io/api/v2'; - /// Infura + //Infura static const infuraBaseUrl = 'https://mainnet.infura.io/v3/'; static const objktUrl = 'https://objkt.com/'; @@ -154,24 +152,24 @@ class Urls { static const over65AIValidationUrl = 'https://issuer.talao.co/ai/over65'; static const ageRangeAIValidationUrl = 'https://issuer.talao.co/ai/agerange'; - /// Matrix home server + //Matrix home server static const matrixHomeServer = 'https://matrix.talao.co'; static const getNonce = 'https://talao.co/matrix/nonce'; static const registerToMatrix = 'https://talao.co/matrix/register'; - /// deeplink + //deeplink static const appDeepLink = 'https://app.altme.io/app/download'; - /// ID360 + //ID360 static const getCodeForId360 = 'https://talao.co/id360/get_code'; static const authenticateForId360 = 'https://talao.co/id360/authenticate'; - /// Discover + //Discover static const discoverCoinsWebView = 'https://discover-coins-part.webflow.io/'; static const discoverNftsWebView = 'https://discover-coins-part.webflow.io/prod-nota-available/nft-noir'; - /// wallet provider + // wallet provider static const walletProvider = 'https://wallet-provider.talao.co'; static const walletTestProvider = 'https://preprod.wallet-provider.talao.co'; } diff --git a/lib/app/shared/enum/type/credential_subject_type/credential_subject_type.dart b/lib/app/shared/enum/type/credential_subject_type/credential_subject_type.dart index 6babd77a9..27debc610 100644 --- a/lib/app/shared/enum/type/credential_subject_type/credential_subject_type.dart +++ b/lib/app/shared/enum/type/credential_subject_type/credential_subject_type.dart @@ -1,5 +1,5 @@ import 'package:altme/app/app.dart'; -import 'package:altme/dashboard/home/home.dart'; +import 'package:altme/dashboard/dashboard.dart'; import 'package:flutter/material.dart'; import 'package:oidc4vc/oidc4vc.dart'; diff --git a/lib/app/shared/enum/type/credential_subject_type/credential_subject_type_extension.dart b/lib/app/shared/enum/type/credential_subject_type/credential_subject_type_extension.dart index 0960cc140..f7c5d86a9 100644 --- a/lib/app/shared/enum/type/credential_subject_type/credential_subject_type_extension.dart +++ b/lib/app/shared/enum/type/credential_subject_type/credential_subject_type_extension.dart @@ -583,13 +583,13 @@ extension CredentialSubjectTypeExtension on CredentialSubjectType { case CredentialSubjectType.tezVoucher: case CredentialSubjectType.diplomaCard: case CredentialSubjectType.twitterCard: + return true; + case CredentialSubjectType.walletCredential: case CredentialSubjectType.tezosAssociatedWallet: case CredentialSubjectType.ethereumAssociatedWallet: case CredentialSubjectType.fantomAssociatedWallet: case CredentialSubjectType.polygonAssociatedWallet: case CredentialSubjectType.binanceAssociatedWallet: - return true; - case CredentialSubjectType.walletCredential: case CredentialSubjectType.tezosPooAddress: case CredentialSubjectType.ethereumPooAddress: case CredentialSubjectType.fantomPooAddress: @@ -626,13 +626,6 @@ extension CredentialSubjectTypeExtension on CredentialSubjectType { List get getVCFormatType { switch (this) { - case CredentialSubjectType.ethereumAssociatedWallet: - case CredentialSubjectType.fantomAssociatedWallet: - case CredentialSubjectType.polygonAssociatedWallet: - case CredentialSubjectType.binanceAssociatedWallet: - case CredentialSubjectType.tezosAssociatedWallet: - return VCFormatType.values; - case CredentialSubjectType.over13: case CredentialSubjectType.over15: case CredentialSubjectType.over21: @@ -640,11 +633,11 @@ extension CredentialSubjectTypeExtension on CredentialSubjectType { case CredentialSubjectType.over65: case CredentialSubjectType.gender: case CredentialSubjectType.ageRange: - case CredentialSubjectType.tezosPooAddress: - case CredentialSubjectType.ethereumPooAddress: - case CredentialSubjectType.fantomPooAddress: - case CredentialSubjectType.polygonPooAddress: - case CredentialSubjectType.binancePooAddress: + case CredentialSubjectType.ethereumAssociatedWallet: + case CredentialSubjectType.fantomAssociatedWallet: + case CredentialSubjectType.polygonAssociatedWallet: + case CredentialSubjectType.binanceAssociatedWallet: + case CredentialSubjectType.tezosAssociatedWallet: case CredentialSubjectType.defiCompliance: case CredentialSubjectType.tezotopiaMembership: case CredentialSubjectType.phonePass: @@ -672,6 +665,11 @@ extension CredentialSubjectTypeExtension on CredentialSubjectType { case CredentialSubjectType.diplomaCard: case CredentialSubjectType.twitterCard: case CredentialSubjectType.walletCredential: + case CredentialSubjectType.tezosPooAddress: + case CredentialSubjectType.ethereumPooAddress: + case CredentialSubjectType.fantomPooAddress: + case CredentialSubjectType.polygonPooAddress: + case CredentialSubjectType.binancePooAddress: case CredentialSubjectType.certificateOfEmployment: case CredentialSubjectType.defaultCredential: case CredentialSubjectType.linkedInCard: @@ -699,7 +697,7 @@ extension CredentialSubjectTypeExtension on CredentialSubjectType { } } - DiscoverDummyCredential dummyCredential(VCFormatType vcFormatType) { + DiscoverDummyCredential dummyCredential(ProfileSetting profileSetting) { String? image; String? link; String? websiteLink; @@ -708,6 +706,12 @@ extension CredentialSubjectTypeExtension on CredentialSubjectType { ResponseString? howToGetIt; ResponseString? longDescription; + final vcFormatType = profileSetting + .selfSovereignIdentityOptions.customOidc4vcProfile.vcFormatType; + + final oidc4vcDraftType = profileSetting + .selfSovereignIdentityOptions.customOidc4vcProfile.oidc4vciDraft; + switch (this) { case CredentialSubjectType.defiCompliance: image = ImageStrings.dummyDefiComplianceCard; @@ -745,16 +749,9 @@ extension CredentialSubjectTypeExtension on CredentialSubjectType { case CredentialSubjectType.emailPass: image = ImageStrings.dummyEmailPassCard; - switch (vcFormatType) { - case VCFormatType.ldpVc: - link = Urls.emailPassUrl; - case VCFormatType.jwtVcJson: - link = Urls.emailPassUrlJWTVCJSON; - case VCFormatType.jwtVc: - case VCFormatType.jwtVcJsonLd: - case VCFormatType.vcSdJWT: - link = ''; - } + link = '${Urls.emailPassUrl}' + '?draft=${oidc4vcDraftType.numbering}' + 'format=${vcFormatType.value}'; whyGetThisCard = ResponseString.RESPONSE_STRING_emailPassWhyGetThisCard; expirationDateDetails = @@ -961,7 +958,11 @@ extension CredentialSubjectTypeExtension on CredentialSubjectType { case CredentialSubjectType.phonePass: image = ImageStrings.dummyPhonePassCard; - link = Urls.phonePassUrl; + + link = '${Urls.phonePassUrl}' + '?draft=${oidc4vcDraftType.numbering}' + 'format=${vcFormatType.value}'; + whyGetThisCard = ResponseString.RESPONSE_STRING_phoneProofWhyGetThisCard; expirationDateDetails = diff --git a/lib/credentials/cubit/credentials_cubit.dart b/lib/credentials/cubit/credentials_cubit.dart index ba4383fb7..c419c0d6d 100644 --- a/lib/credentials/cubit/credentials_cubit.dart +++ b/lib/credentials/cubit/credentials_cubit.dart @@ -890,7 +890,7 @@ class CredentialsCubit extends Cubit { // add dummies from the category dummies[category]?.addAll( requiredDummySubjects - .map((item) => item.dummyCredential(vcFormatType)) + .map((item) => item.dummyCredential(profileSetting)) .toList(), ); } diff --git a/lib/dashboard/home/tab_bar/credentials/detail/view/credentials_details_page.dart b/lib/dashboard/home/tab_bar/credentials/detail/view/credentials_details_page.dart index ac5591c6e..d068063f5 100644 --- a/lib/dashboard/home/tab_bar/credentials/detail/view/credentials_details_page.dart +++ b/lib/dashboard/home/tab_bar/credentials/detail/view/credentials_details_page.dart @@ -170,14 +170,11 @@ class _CredentialsDetailsViewState extends State { reversedList.removeLast(); } - final vcFormatType = context - .read() - .state - .model - .profileSetting - .selfSovereignIdentityOptions - .customOidc4vcProfile - .vcFormatType; + final profileSetting = + context.read().state.model.profileSetting; + + final vcFormatType = profileSetting + .selfSovereignIdentityOptions.customOidc4vcProfile.vcFormatType; return BasePage( title: widget.readOnly ? l10n.linkedInProfile : l10n.cardDetails, @@ -196,7 +193,7 @@ class _CredentialsDetailsViewState extends State { CredentialDisplay( credentialModel: widget.credentialModel, credDisplayType: CredDisplayType.Detail, - vcFormatType: vcFormatType, + profileSetting: profileSetting, ), const SizedBox(height: 20), Column( diff --git a/lib/dashboard/home/tab_bar/credentials/oid4c4vc_pick/oid4c4vc_credential_pick/view/oid4c4vc_credential_pick_page.dart b/lib/dashboard/home/tab_bar/credentials/oid4c4vc_pick/oid4c4vc_credential_pick/view/oid4c4vc_credential_pick_page.dart index 99999aa1d..2a784cbfc 100644 --- a/lib/dashboard/home/tab_bar/credentials/oid4c4vc_pick/oid4c4vc_credential_pick/view/oid4c4vc_credential_pick_page.dart +++ b/lib/dashboard/home/tab_bar/credentials/oid4c4vc_pick/oid4c4vc_credential_pick/view/oid4c4vc_credential_pick_page.dart @@ -114,17 +114,16 @@ class Oidc4vcCredentialPickView extends StatelessWidget { getCredTypeFromName(credential) ?? CredentialSubjectType.defaultCredential; - final vcFormatType = context - .read() - .state - .model - .profileSetting + final profileSetting = + context.read().state.model.profileSetting; + + final vcFormatType = profileSetting .selfSovereignIdentityOptions .customOidc4vcProfile .vcFormatType; final DiscoverDummyCredential discoverDummyCredential = - credentialSubjectType.dummyCredential(vcFormatType); + credentialSubjectType.dummyCredential(profileSetting); Display? display; @@ -166,7 +165,7 @@ class Oidc4vcCredentialPickView extends StatelessWidget { display: display, ), credDisplayType: CredDisplayType.List, - vcFormatType: vcFormatType, + profileSetting: profileSetting, displyalDescription: false, ) else diff --git a/lib/dashboard/home/tab_bar/credentials/receive/view/credentials_receive_page.dart b/lib/dashboard/home/tab_bar/credentials/receive/view/credentials_receive_page.dart index f3394776f..68e3ba108 100644 --- a/lib/dashboard/home/tab_bar/credentials/receive/view/credentials_receive_page.dart +++ b/lib/dashboard/home/tab_bar/credentials/receive/view/credentials_receive_page.dart @@ -62,14 +62,11 @@ class _CredentialsReceivePageState extends State { final textColor = Theme.of(context).colorScheme.valueColor; - final vcFormatType = context - .read() - .state - .model - .profileSetting - .selfSovereignIdentityOptions - .customOidc4vcProfile - .vcFormatType; + final profileSetting = + context.read().state.model.profileSetting; + + final vcFormatType = profileSetting + .selfSovereignIdentityOptions.customOidc4vcProfile.vcFormatType; return BasePage( title: l10n.credentialReceiveTitle, @@ -96,7 +93,7 @@ class _CredentialsReceivePageState extends State { CredentialDisplay( credentialModel: credentialModel, credDisplayType: CredDisplayType.Detail, - vcFormatType: vcFormatType, + profileSetting: profileSetting, ), if (outputDescriptors != null) ...[ const SizedBox(height: 30), 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 8b821d0e0..6e8d88dbc 100644 --- a/lib/dashboard/home/tab_bar/credentials/widgets/credential_display.dart +++ b/lib/dashboard/home/tab_bar/credentials/widgets/credential_display.dart @@ -8,13 +8,13 @@ class CredentialDisplay extends StatelessWidget { super.key, required this.credentialModel, required this.credDisplayType, - required this.vcFormatType, + required this.profileSetting, this.displyalDescription = true, }); final CredentialModel credentialModel; final CredDisplayType credDisplayType; - final VCFormatType vcFormatType; + final ProfileSetting profileSetting; final bool displyalDescription; @override @@ -68,7 +68,7 @@ class CredentialDisplay extends StatelessWidget { CredentialSubjectType.defaultCredential; final DiscoverDummyCredential discoverDummyCredential = - credentialSubjectType.dummyCredential(vcFormatType); + credentialSubjectType.dummyCredential(profileSetting); return Opacity( opacity: 0.5, diff --git a/lib/dashboard/home/tab_bar/credentials/widgets/list_item.dart b/lib/dashboard/home/tab_bar/credentials/widgets/list_item.dart index 496eb8eed..5364df7ee 100644 --- a/lib/dashboard/home/tab_bar/credentials/widgets/list_item.dart +++ b/lib/dashboard/home/tab_bar/credentials/widgets/list_item.dart @@ -84,14 +84,9 @@ class CredentialsDisplayItem extends StatelessWidget { @override Widget build(BuildContext context) { - final vcFormatType = context - .read() - .state - .model - .profileSetting - .selfSovereignIdentityOptions - .customOidc4vcProfile - .vcFormatType; + final profileSetting = + context.read().state.model.profileSetting; + return _BaseItem( enabled: true, onTap: onTap, @@ -99,7 +94,7 @@ class CredentialsDisplayItem extends StatelessWidget { ? CredentialDisplay( credentialModel: credentialModel, credDisplayType: CredDisplayType.List, - vcFormatType: vcFormatType, + profileSetting: profileSetting, ) : DisplaySelectionElement( credentialModel: credentialModel, @@ -122,21 +117,16 @@ class DisplaySelectionElement extends StatelessWidget { @override Widget build(BuildContext context) { //final credential = Credential.fromJsonOrDummy(credentialModel.data); - final vcFormatType = context - .read() - .state - .model - .profileSetting - .selfSovereignIdentityOptions - .customOidc4vcProfile - .vcFormatType; + final profileSetting = + context.read().state.model.profileSetting; + return CredentialSelectionPadding( child: Column( children: [ CredentialDisplay( credentialModel: credentialModel, credDisplayType: CredDisplayType.List, - vcFormatType: vcFormatType, + profileSetting: profileSetting, ), Align( alignment: Alignment.centerRight, diff --git a/lib/dashboard/missing_creentials/cubit/missing_credentials_cubit.dart b/lib/dashboard/missing_creentials/cubit/missing_credentials_cubit.dart index 41ea65a25..32a5e5ab0 100644 --- a/lib/dashboard/missing_creentials/cubit/missing_credentials_cubit.dart +++ b/lib/dashboard/missing_creentials/cubit/missing_credentials_cubit.dart @@ -35,7 +35,9 @@ class MissingCredentialsCubit extends Cubit { final List dummyCredentials = []; - final vcFormatType = profileCubit.state.model.profileSetting + final profileSetting = profileCubit.state.model.profileSetting; + + final vcFormatType = profileSetting .selfSovereignIdentityOptions.customOidc4vcProfile.vcFormatType; if (credentialManifest != null) { @@ -69,7 +71,7 @@ class MissingCredentialsCubit extends Cubit { if (credentialSubjectType != null) { dummyCredentials.add( - credentialSubjectType.dummyCredential(vcFormatType), + credentialSubjectType.dummyCredential(profileSetting), ); } } @@ -92,7 +94,7 @@ class MissingCredentialsCubit extends Cubit { if (credentialSubjectType != null) { dummyCredentials - .add(credentialSubjectType.dummyCredential(vcFormatType)); + .add(credentialSubjectType.dummyCredential(profileSetting)); } } } diff --git a/packages/oidc4vc/lib/src/oidc4vci_draft_type.dart b/packages/oidc4vc/lib/src/oidc4vci_draft_type.dart index 1062ab06f..07d8da253 100644 --- a/packages/oidc4vc/lib/src/oidc4vci_draft_type.dart +++ b/packages/oidc4vc/lib/src/oidc4vci_draft_type.dart @@ -20,4 +20,15 @@ extension OIDC4VCIDraftTypeX on OIDC4VCIDraftType { return 'Draft 13'; } } + + String get numbering { + switch (this) { + case OIDC4VCIDraftType.draft11: + return '11'; + case OIDC4VCIDraftType.draft12: + return '12'; + case OIDC4VCIDraftType.draft13: + return '13'; + } + } } diff --git a/pubspec.lock b/pubspec.lock index 9f95356b3..eb716dc40 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1385,6 +1385,30 @@ packages: relative: true source: path version: "1.0.0+1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.dev" + source: hosted + version: "2.0.1" linkify: dependency: transitive description: @@ -1469,18 +1493,18 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" matrix: dependency: "direct main" description: @@ -1509,10 +1533,10 @@ packages: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" mime: dependency: "direct main" description: @@ -1660,10 +1684,10 @@ packages: dependency: "direct main" description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_drawing: dependency: transitive description: