From 39645e0b5e906ddc4725e8ad3c2c9da058428bb5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 03:47:31 +0000 Subject: [PATCH 01/54] Bump ts-loader from 9.4.2 to 9.4.4 Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 9.4.2 to 9.4.4. - [Release notes](https://github.com/TypeStrong/ts-loader/releases) - [Changelog](https://github.com/TypeStrong/ts-loader/blob/main/CHANGELOG.md) - [Commits](https://github.com/TypeStrong/ts-loader/compare/v9.4.2...v9.4.4) --- updated-dependencies: - dependency-name: ts-loader dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 22f20fe1..72d388da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18349,9 +18349,9 @@ "dev": true }, "node_modules/ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "dependencies": { "chalk": "^4.1.0", @@ -33897,9 +33897,9 @@ } }, "ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "requires": { "chalk": "^4.1.0", From 2bd6abd115effb8b55f829c7a4c893e2891379e6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 03:47:46 +0000 Subject: [PATCH 02/54] Bump @types/create-hash from 1.2.2 to 1.2.3 Bumps [@types/create-hash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/create-hash) from 1.2.2 to 1.2.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/create-hash) --- updated-dependencies: - dependency-name: "@types/create-hash" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 22f20fe1..99a2ef69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4817,9 +4817,9 @@ } }, "node_modules/@types/create-hash": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/create-hash/-/create-hash-1.2.2.tgz", - "integrity": "sha512-Fg8/kfMJObbETFU/Tn+Y0jieYewryLrbKwLCEIwPyklZZVY2qB+64KFjhplGSw+cseZosfFXctXO+PyIYD8iZQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/create-hash/-/create-hash-1.2.3.tgz", + "integrity": "sha512-dh2NzQVdUY3+C3+ZnQ1T6JEa4RdyiWfTcL/MX/XfE8dCT//TG9rYDliDgPr3SJ9qnVek9Lzn1HCU/pH+KzrJXg==", "dev": true, "dependencies": { "@types/node": "*" @@ -23376,9 +23376,9 @@ } }, "@types/create-hash": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/create-hash/-/create-hash-1.2.2.tgz", - "integrity": "sha512-Fg8/kfMJObbETFU/Tn+Y0jieYewryLrbKwLCEIwPyklZZVY2qB+64KFjhplGSw+cseZosfFXctXO+PyIYD8iZQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/create-hash/-/create-hash-1.2.3.tgz", + "integrity": "sha512-dh2NzQVdUY3+C3+ZnQ1T6JEa4RdyiWfTcL/MX/XfE8dCT//TG9rYDliDgPr3SJ9qnVek9Lzn1HCU/pH+KzrJXg==", "dev": true, "requires": { "@types/node": "*" From 8120b227456e02018490a38dc8c1f3f84bacd1f3 Mon Sep 17 00:00:00 2001 From: Nick Taras Date: Fri, 22 Sep 2023 16:07:30 +1000 Subject: [PATCH 03/54] added logic to manage showing of a rety txt btn when a collection fails to load. --- index.html | 390 +++++++++++++++-------------- src/client/tokenStore.ts | 17 +- src/client/views/select-issuers.ts | 25 +- src/theme/theme_dark.scss | 2 +- src/utils/index.ts | 2 + 5 files changed, 218 insertions(+), 218 deletions(-) diff --git a/index.html b/index.html index 21972878..d1e9358f 100644 --- a/index.html +++ b/index.html @@ -20,90 +20,90 @@ window.negotiator = new negotiator.Client({ type: "active", issuers: [ - { - onChain: true, - fungible: true, - chain: "eth", - blockchain: "evm", - collectionID: "socios", - contract: "0x3506424F91fD33084466F402d5D97f05F8e3b4AF", - oAuth2options: { - consumerKey: "YOUR_CONSUMER_KEY", - partnerTag: "YOUR_PARTNER_TAG", - endpoints: { - redirectURI: { - path: "http://localhost:5000/user-login-callback", - params: {} - }, - userBalance: { - path: 'http://localhost:5000/user-balance', - params: {} - }, - userNfts: { - path: 'http://localhost:5000/user-nfts', - params: {} - }, - userLogout: { - path: 'http://localhost:5000/user-logout', - params: {} - }, - }, - }, - }, - { - hideToggle: true, - noTokenMsg: - "

If you hold a Devcon ticket, please visit your magicLink email again and open the link in this browser.

You may reload this page after and try again.

", - onChain: false, - tokenName: "devcon6", - collectionID: "devcon6", - title: "Devcon VI Ticket Attestation", - image: "https://devcon-vi.attest.tickets/img/nft_bg.png", - tokenOrigin: "https://devcon-vi.attest.tickets/outlet.html", - attestationOrigin: "https://test.attestation.id/", - tokenUrlName: "ticket", - cryptoVerify: "https://form.smarttokenlabs.com", - tokenSecretName: "secret", - tokenIdName: "mail", - unsignedTokenDataName: "ticket", - whitelistDialogRenderer: (permissionTxt, acceptBtn, denyBtn) => { - return ` -
-
- devcon -
-
-

${permissionTxt}

- ${acceptBtn} - ${denyBtn} -
-
- `; - }, - signedTokenWhitelist: [ - "https://devcon-vi.attest.tickets/", - "https://dev.loc", - "https://devconnect.loc/", - "https://devconnect.antopolbus.rv.ua/", - "https://perks.antopolbus.rv.ua/", - "https://stage-perks.smarttokenlabs.com/", - "http://localhost:5000/", + // { + // onChain: true, + // fungible: true, + // chain: "eth", + // blockchain: "evm", + // collectionID: "socios", + // contract: "0x3506424F91fD33084466F402d5D97f05F8e3b4AF", + // oAuth2options: { + // consumerKey: "YOUR_CONSUMER_KEY", + // partnerTag: "YOUR_PARTNER_TAG", + // endpoints: { + // redirectURI: { + // path: "http://localhost:5000/user-login-callback", + // params: {} + // }, + // userBalance: { + // path: 'http://localhost:5000/user-balance', + // params: {} + // }, + // userNfts: { + // path: 'http://localhost:5000/user-nfts', + // params: {} + // }, + // userLogout: { + // path: 'http://localhost:5000/user-logout', + // params: {} + // }, + // }, + // }, + // }, + // { + // hideToggle: true, + // noTokenMsg: + // "

If you hold a Devcon ticket, please visit your magicLink email again and open the link in this browser.

You may reload this page after and try again.

", + // onChain: false, + // tokenName: "devcon6", + // collectionID: "devcon6", + // title: "Devcon VI Ticket Attestation", + // image: "https://devcon-vi.attest.tickets/img/nft_bg.png", + // tokenOrigin: "https://devcon-vi.attest.tickets/outlet.html", + // attestationOrigin: "https://test.attestation.id/", + // tokenUrlName: "ticket", + // cryptoVerify: "https://form.smarttokenlabs.com", + // tokenSecretName: "secret", + // tokenIdName: "mail", + // unsignedTokenDataName: "ticket", + // whitelistDialogRenderer: (permissionTxt, acceptBtn, denyBtn) => { + // return ` + //
+ //
+ // devcon + //
+ //
+ //

${permissionTxt}

+ // ${acceptBtn} + // ${denyBtn} + //
+ //
+ // `; + // }, + // signedTokenWhitelist: [ + // "https://devcon-vi.attest.tickets/", + // "https://dev.loc", + // "https://devconnect.loc/", + // "https://devconnect.antopolbus.rv.ua/", + // "https://perks.antopolbus.rv.ua/", + // "https://stage-perks.smarttokenlabs.com/", + // "http://localhost:5000/", - "https://hashkey.smarttokenlabs.com/", - "https://fayre-devcon.webflow.io/", - "https://fenbushi-devcon.webflow.io/", - "https://metasearch-devcon.webflow.io/", - "https://conspicuis-devcon.webflow.io/", - "https://devcon-vi.brandextender.io/", - "https://www.edcon.io/", - ], - itemStorageKey: "devconnectTokens", - base64senderPublicKeys: { - 4: "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEAGJAHCiHbrCNAY9fAMdom4dGD6v/KkTIgRCkwLCjXFTkXWGrCEXHaZ8kWwdqlu0oYCrNQ2vdlqOl0s26/LzO8A==|MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE-N-jGYo1OuO77XItd3zT-oIhZEVC44uqOhtJkmBsBNDTp3Seu_vmuLB-b4whNeFNBuJTsT7AHUiUe3JOwCcegA==", - }, - base64attestorPubKey: - "MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////////////////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABL+y43T1OJFScEep69/yTqpqnV/jzONz9Sp4TEHyAJ7IPN9+GHweCX1hT4OFxt152sBN3jJc1s0Ymzd8pNGZNoQ=", - }, + // "https://hashkey.smarttokenlabs.com/", + // "https://fayre-devcon.webflow.io/", + // "https://fenbushi-devcon.webflow.io/", + // "https://metasearch-devcon.webflow.io/", + // "https://conspicuis-devcon.webflow.io/", + // "https://devcon-vi.brandextender.io/", + // "https://www.edcon.io/", + // ], + // itemStorageKey: "devconnectTokens", + // base64senderPublicKeys: { + // 4: "MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAEAGJAHCiHbrCNAY9fAMdom4dGD6v/KkTIgRCkwLCjXFTkXWGrCEXHaZ8kWwdqlu0oYCrNQ2vdlqOl0s26/LzO8A==|MFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE-N-jGYo1OuO77XItd3zT-oIhZEVC44uqOhtJkmBsBNDTp3Seu_vmuLB-b4whNeFNBuJTsT7AHUiUe3JOwCcegA==", + // }, + // base64attestorPubKey: + // "MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////////////////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABL+y43T1OJFScEep69/yTqpqnV/jzONz9Sp4TEHyAJ7IPN9+GHweCX1hT4OFxt152sBN3jJc1s0Ymzd8pNGZNoQ=", + // }, { collectionID: "devcon", onChain: false, @@ -111,7 +111,7 @@ tokenIdName: "id", image: "https://raw.githubusercontent.com/TokenScript/token-negotiator/main/mock-images/devcon.svg", - tokenOrigin: "http://localhost:3000/", + tokenOrigin: "http://localhost:3002/", attestationOrigin: "https://test.attestation.id/", base64senderPublicKeys: { 6: "MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////////////////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABGMxHraqggr2keTXszIcchTjYjH5WXpDaBOYgXva82mKcGnKgGRORXSmcjWN2suUCMkLQj3UNlZCFWF10wIrrlw=", @@ -166,52 +166,52 @@ // base64attestorPubKey: // "MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////////////////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABL+y43T1OJFScEep69/yTqpqnV/jzONz9Sp4TEHyAJ7IPN9+GHweCX1hT4OFxt152sBN3jJc1s0Ymzd8pNGZNoQ=", // }, - // { - // hideToggle : false, - // noTokenMsg: "

If you have a token please:

1. Open your magic link inside this browser.
2. Refresh this page.

", - // collectionID: 'devcon', - // title: "Devcon", - // onChain: false, - // tokenOrigin: "http://localhost:3002/", - // attestationOrigin: "https://attestation.id/", - // unEndPoint: "https://crypto-verify.herokuapp.com/use-devcon-ticket", - // image: "https://raw.githubusercontent.com/TokenScript/token-negotiator/main/mock-images/devcon.svg", - // base64senderPublicKeys: - // { - // "AttestationDAO" : 'MFYwEAYHKoZIzj0CAQYFK...' - // }, - // base64attestorPubKey: "MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////////////////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABL+y43T1OJFScEep69/yTqpqnV/jzONz9Sp4TEHyAJ7IPN9+GHweCX1hT4OFxt152sBN3jJc1s0Ymzd8pNGZNoQ=" - // }, - // { - // collectionID: "crypto-cowboy-country", - // tokenProgram: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - // collectionAddress: - // "bf0aae3dd0078a9feb975f1e3242ddcb7774d551c7fd2a3f07a89c827ed606b2", - // updateAuthority: "CCCUzWanUNegjGby11DjujDvPaNN68jd9Rimwk2MZzqZ", - // onChain: true, - // symbol: "CCC", - // chain: "mainnet", - // blockchain: "solana", - // }, - // { - // collectionID: "penthouse-panther-club", - // collectionAddress: "ff846ef2eed57e5367cf8826e63f4d53fe28d28aa67417accb6e4b48cbd19136", - // updateAuthority: "92oYPmrr1BHznizuZmpKZ3MFRadMFYRTCxo9Pf34mZKX", - // tokenProgram: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", - // onChain: true, - // symbol: "PPC", - // chain: "mainnet", - // blockchain: "solana", - // }, - // { - // hideToggle : false, - // collectionID: "pixel", - // collectionAddress: "166424b16c4c7f40eb852f9eb2d0d6869a9ed7ac54a8e6afbd516676bfbbeb19", - // onChain: true, - // symbol: "PIXEL", - // chain: "mainnet", - // blockchain: "solana", - // }, + { + hideToggle: false, + noTokenMsg: "

If you have a token please:

1. Open your magic link inside this browser.
2. Refresh this page.

", + collectionID: 'devcon', + title: "Devcon", + onChain: false, + tokenOrigin: "http://localhost:3002/", + attestationOrigin: "https://attestation.id/", + unEndPoint: "https://crypto-verify.herokuapp.com/use-devcon-ticket", + image: "https://raw.githubusercontent.com/TokenScript/token-negotiator/main/mock-images/devcon.svg", + base64senderPublicKeys: + { + "AttestationDAO": 'MFYwEAYHKoZIzj0CAQYFK...' + }, + base64attestorPubKey: "MIIBMzCB7AYHKoZIzj0CATCB4AIBATAsBgcqhkjOPQEBAiEA/////////////////////////////////////v///C8wRAQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHBEEEeb5mfvncu6xVoGKVzocLBwKb/NstzijZWfKBWxb4F5hIOtp3JqPEZV2k+/wOEQio/Re0SKaFVBmcR9CP+xDUuAIhAP////////////////////66rtzmr0igO7/SXozQNkFBAgEBA0IABL+y43T1OJFScEep69/yTqpqnV/jzONz9Sp4TEHyAJ7IPN9+GHweCX1hT4OFxt152sBN3jJc1s0Ymzd8pNGZNoQ=" + }, + { + collectionID: "crypto-cowboy-country", + tokenProgram: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + collectionAddress: + "bf0aae3dd0078a9feb975f1e3242ddcb7774d551c7fd2a3f07a89c827ed606b2", + updateAuthority: "CCCUzWanUNegjGby11DjujDvPaNN68jd9Rimwk2MZzqZ", + onChain: true, + symbol: "CCC", + chain: "mainnet", + blockchain: "solana", + }, + { + collectionID: "penthouse-panther-club", + collectionAddress: "ff846ef2eed57e5367cf8826e63f4d53fe28d28aa67417accb6e4b48cbd19136", + updateAuthority: "92oYPmrr1BHznizuZmpKZ3MFRadMFYRTCxo9Pf34mZKX", + tokenProgram: "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA", + onChain: true, + symbol: "PPC", + chain: "mainnet", + blockchain: "solana", + }, + { + hideToggle: false, + collectionID: "pixel", + collectionAddress: "166424b16c4c7f40eb852f9eb2d0d6869a9ed7ac54a8e6afbd516676bfbbeb19", + onChain: true, + symbol: "PIXEL", + chain: "mainnet", + blockchain: "solana", + }, { onChain: true, collectionID: "expansion-punks", @@ -236,73 +236,79 @@ chain: "bsc", blockchain: "evm", }, - // { - // onChain: true, - // collectionID: "tt", - // contract: '0x76be3b62873462d2142405439777e971754e8e77', - // chain: 'eth', - // blockchain: "evm", - // }, - // { onChain: true, collectionID: "Perion", contract: '0x96af92ae2d822a0f191455ceca4d4e7ee227668e', chain: 'mumbai', blockchain: "evm" }, - // { collectionID: 'COOLCATS-#2426-14', onChain: true, contract: '0x3C7e352481F4b2fdEc1e642a3f0018661c77513D', chain: 'eth', openSeaSlug: 'devcon-vi-suit-up-collection' }, - // { collectionID: 'Town-Hall', onChain: true, contract: '0x81b30ff521D1fEB67EDE32db726D95714eb00637', chain: 'Optimism' }, - // { - // collectionID: "Blusteak Kangaroo #64", - // onChain: true, - // contract: "0xa996F7F3BC647EebC98C684aB0A302c9b85d2FA1", - // chain: "Avalanche", - // }, - // { - // collectionID: "Alone Pirate", - // onChain: true, - // contract: "0x36535ec384B94342558e37282527b5052587af6A", - // chain: "Arbitrum", - // }, - // { - // collectionID: "NBA", - // onChain: true, - // contract: "A.0b2a3299cc857e29.TopShot", - // chain: "mainnet", - // blockchain: "flow", - // }, - // { - // onChain: true, - // erc: 20, - // fungible: true, - // collectionID: "polygon", - // contract: '0x52459834ca561cb55411699e9c2143683bcf865f', - // chain: 'matic', - // blockchain: "evm", - // // Add fungible as a boolean - // // symbol: 'USX' - // }, - // { - // contract: "0x107065a122f92636a1358a70a0efe0f1a080a7e5", - // onChain: true, - // fungible: true, - // collectionID: "USX", - // chain: "matic", - // }, - // { - // contract: "0x429f49faec3d568ef83ec803e02df78e25d5ee7d", - // onChain: true, - // fungible: true, - // collectionID: "Ella", - // chain: "matic", - // }, - // { - // contract: "0xaaa5b9e6c589642f98a1cda99b9d024b8407285a", - // onChain: true, - // fungible: true, - // collectionID: "TITAN", - // chain: "matic", - // }, + { + onChain: true, + collectionID: "tt", + contract: '0x76be3b62873462d2142405439777e971754e8e77', + chain: 'eth', + blockchain: "evm", + }, + { onChain: true, collectionID: "Perion", contract: '0x96af92ae2d822a0f191455ceca4d4e7ee227668e', chain: 'mumbai', blockchain: "evm" }, + { collectionID: 'COOLCATS-#2426-14', onChain: true, contract: '0x3C7e352481F4b2fdEc1e642a3f0018661c77513D', chain: 'eth', openSeaSlug: 'devcon-vi-suit-up-collection' }, + { collectionID: 'Town-Hall', onChain: true, contract: '0x81b30ff521D1fEB67EDE32db726D95714eb00637', chain: 'Optimism' }, + { + collectionID: "Blusteak Kangaroo #64", + onChain: true, + contract: "0xa996F7F3BC647EebC98C684aB0A302c9b85d2FA1", + chain: "Avalanche", + }, + { + collectionID: "Alone Pirate", + onChain: true, + contract: "0x36535ec384B94342558e37282527b5052587af6A", + chain: "Arbitrum", + }, + { + collectionID: "NBA", + onChain: true, + contract: "A.0b2a3299cc857e29.TopShot", + chain: "mainnet", + blockchain: "flow", + }, + { + onChain: true, + erc: 20, + fungible: true, + collectionID: "polygon", + contract: '0x52459834ca561cb55411699e9c2143683bcf865f', + chain: 'matic', + blockchain: "evm", + // Add fungible as a boolean + // symbol: 'USX' + }, + { + contract: "0x107065a122f92636a1358a70a0efe0f1a080a7e5", + onChain: true, + fungible: true, + collectionID: "USX", + chain: "matic", + }, + { + contract: "0x429f49faec3d568ef83ec803e02df78e25d5ee7d", + onChain: true, + fungible: true, + collectionID: "Ella", + chain: "matic", + }, + { + contract: "0xaaa5b9e6c589642f98a1cda99b9d024b8407285a", + onChain: true, + fungible: true, + collectionID: "TITAN", + chain: "matic", + }, ], uiOptions: { openingHeading: "Open a new world of perks, benefits and opportunities with your attestation, collectible or token.", issuerHeading: "Get discount with Ticket", - repeatAction: "try again", + repeatAction: "Retry", + dismissAction: 'Dismiss', + loadAction: 'Load Collection', + noTokensFoundEvent: 'No Tokens Found', + balancesFoundEvent: 'Balance Found', + nftsFoundEvent: 'Token(s) Found', + openingAction: "Let's Go!", theme: theme, position: "top-right", }, diff --git a/src/client/tokenStore.ts b/src/client/tokenStore.ts index 42796a24..df2ff0fd 100644 --- a/src/client/tokenStore.ts +++ b/src/client/tokenStore.ts @@ -4,11 +4,11 @@ import { logger } from '../utils' import { DecodedToken } from '../outlet/ticketStorage' interface IssuerLookup { - [collectionID: string]: TokenConfig & { timestamp: number } + [collectionID: string]: TokenConfig & { timestamp: number; status?: string } } interface TokenLookup { - [issuer: string]: { timestamp: number; tokens: TokenData[] | null } + [issuer: string]: { loadAttempts: number; timestamp: number; tokens: TokenData[] | null } } export interface TokenData { @@ -59,7 +59,7 @@ export class TokenStore { } for (let collectionId in tokenStoreData.tokenData) { - const tokenData = tokenStoreData.tokenData[collectionId] as { timestamp: number; tokens: [] } + const tokenData = tokenStoreData.tokenData[collectionId] as { timestamp: number; tokens: []; loadAttempts: number } if (tokenData.timestamp + this.tokenPersistenceTTL * 1000 > Date.now()) { this.tokenData[collectionId] = tokenData @@ -182,11 +182,18 @@ export class TokenStore { } public setTokens(issuer: string, tokens: TokenData[] | DecodedToken[]) { - this.tokenData[issuer] = { timestamp: Date.now(), tokens } + this.tokenData[issuer] = { timestamp: Date.now(), tokens, loadAttempts: this.getCollectionLoadAttempts(issuer) } + this.saveTokenStore() + if (this.autoEnableTokens) this.selectedTokens[issuer] = { tokens: tokens } + } + public setIncrementCollectionLoadAttempts(issuer: string) { + this.tokenData[issuer].loadAttempts = this.tokenData[issuer]?.loadAttempts >= 0 ? (this.tokenData[issuer].loadAttempts += 1) : 0 this.saveTokenStore() + } - if (this.autoEnableTokens) this.selectedTokens[issuer] = { tokens: tokens } + public getCollectionLoadAttempts(issuer: string) { + return this.tokenData[issuer]?.loadAttempts ?? 0 } public getSelectedTokens() { diff --git a/src/client/views/select-issuers.ts b/src/client/views/select-issuers.ts index 68e4cf29..1364c5a6 100644 --- a/src/client/views/select-issuers.ts +++ b/src/client/views/select-issuers.ts @@ -161,6 +161,7 @@ export class SelectIssuers extends AbstractView { this.issuerListContainer.addEventListener('click', (e: any) => { if (e.target.classList.contains('connect-btn-tn')) { this.connectTokenIssuer(e) + this.client.getTokenStore().setIncrementCollectionLoadAttempts(e.target.dataset.issuer); } else if (e.target.classList.contains('tokens-btn-tn')) { const issuer = e.target.parentNode.dataset.issuer this.navigateToTokensView(issuer) @@ -170,10 +171,11 @@ export class SelectIssuers extends AbstractView { issuerConnectMarkup(title: string, image: string | undefined, issuer: string, tokens: any[], data: Issuer) { let buttonText = '' - + const collectLoadAttempts = this.client.getTokenStore().getCollectionLoadAttempts(issuer); + let issuerButtonText = this.params.options.loadAction ?? "Load Collection"; + if (collectLoadAttempts >= 1) issuerButtonText = this.params.options.repeatAction ?? 'Retry'; // @ts-ignore if (tokens?.length) buttonText = data?.fungible ? this.params.options.balanceFoundEvent ?? 'Balance found' : `${tokens.length} ${this.params.options?.nftsFoundEvent ?? 'Token(s) Available'}` - return `