@eluvio/elv-client-js 3.2.19 → 3.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eluvio/elv-client-js",
3
- "version": "3.2.19",
3
+ "version": "3.2.20",
4
4
  "description": "Javascript client for the Eluvio Content Fabric",
5
5
  "main": "src/index.js",
6
6
  "author": "Kevin Talmadge",
@@ -23,6 +23,7 @@ let WalletConfiguration = {
23
23
  }
24
24
  },
25
25
  __MARKETPLACE_ORDER: [
26
+ "PREVIEW",
26
27
  "dolly-marketplace",
27
28
  "oc-marketplace",
28
29
  "maskverse-marketplace",
@@ -16,7 +16,7 @@ const embedded = inBrowser && window.top !== window.self;
16
16
  * See the Modules section on the sidebar for all client methods unrelated to login and authorization
17
17
  */
18
18
  class ElvWalletClient {
19
- constructor({appId, client, network, mode, marketplaceInfo, storeAuthToken}) {
19
+ constructor({appId, client, network, mode, marketplaceInfo, previewMarketplaceHash, storeAuthToken}) {
20
20
  this.appId = appId;
21
21
 
22
22
  this.client = client;
@@ -31,6 +31,8 @@ class ElvWalletClient {
31
31
  this.storeAuthToken = storeAuthToken;
32
32
 
33
33
  this.selectedMarketplaceInfo = marketplaceInfo;
34
+ this.previewMarketplaceId = previewMarketplaceHash ? Utils.DecodeVersionHash(previewMarketplaceHash).objectId : undefined;
35
+ this.previewMarketplaceHash = previewMarketplaceHash;
34
36
 
35
37
  this.availableMarketplaces = {};
36
38
  this.availableMarketplacesById = {};
@@ -82,6 +84,7 @@ class ElvWalletClient {
82
84
  network="main",
83
85
  mode="production",
84
86
  marketplaceParams,
87
+ previewMarketplaceId,
85
88
  storeAuthToken=true
86
89
  }) {
87
90
  let { tenantSlug, marketplaceSlug, marketplaceId, marketplaceHash } = (marketplaceParams || {});
@@ -94,6 +97,11 @@ class ElvWalletClient {
94
97
 
95
98
  const client = await ElvClient.FromNetworkName({networkName: network, assumeV3: true});
96
99
 
100
+ let previewMarketplaceHash = previewMarketplaceId;
101
+ if(previewMarketplaceHash && !previewMarketplaceHash.startsWith("hq__")) {
102
+ previewMarketplaceHash = await client.LatestVersionHash({objectId: previewMarketplaceId});
103
+ }
104
+
97
105
  const walletClient = new ElvWalletClient({
98
106
  appId,
99
107
  client,
@@ -105,6 +113,7 @@ class ElvWalletClient {
105
113
  marketplaceId: marketplaceHash ? client.utils.DecodeVersionHash(marketplaceHash).objectId : marketplaceId,
106
114
  marketplaceHash
107
115
  },
116
+ previewMarketplaceHash,
108
117
  storeAuthToken
109
118
  });
110
119
 
@@ -565,14 +574,13 @@ class ElvWalletClient {
565
574
 
566
575
 
567
576
 
568
- // If marketplace slug is specified, load only that marketplace. Otherwise load all
569
577
  async LoadAvailableMarketplaces(forceReload=false) {
570
578
  if(!forceReload && Object.keys(this.availableMarketplaces) > 0) {
571
579
  return;
572
580
  }
573
581
 
574
582
  const mainSiteHash = await this.client.LatestVersionHash({objectId: this.mainSiteId});
575
- const metadata = await this.client.ContentObjectMetadata({
583
+ let metadata = await this.client.ContentObjectMetadata({
576
584
  versionHash: mainSiteHash,
577
585
  metadataSubtree: "public/asset_metadata/tenants",
578
586
  resolveLinks: true,
@@ -594,13 +602,74 @@ class ElvWalletClient {
594
602
  ]
595
603
  });
596
604
 
605
+ // If preview marketplace is specified, load it appropriately
606
+ if(this.previewMarketplaceId) {
607
+ let previewTenantSlug = "PREVIEW";
608
+ let previewMarketplaceSlug, previewMarketplaceMetadata;
609
+ Object.keys(metadata || {}).forEach(tenantSlug =>
610
+ Object.keys(metadata[tenantSlug].marketplaces || {}).forEach(marketplaceSlug => {
611
+ const versionHash = metadata[tenantSlug].marketplaces[marketplaceSlug]["."].source;
612
+ const objectId = this.utils.DecodeVersionHash(versionHash).objectId;
613
+
614
+ if(objectId === this.previewMarketplaceId) {
615
+ // Marketplace exists in site meta
616
+ previewTenantSlug = tenantSlug;
617
+ previewMarketplaceSlug = marketplaceSlug;
618
+
619
+ // Deployed marketplace is same as preview marketplace
620
+ if(versionHash === this.previewMarketplaceHash) {
621
+ previewMarketplaceMetadata = metadata[tenantSlug].marketplaces[marketplaceSlug];
622
+ }
623
+ }
624
+ })
625
+ );
626
+
627
+ // Marketplace not present in branch, or preview version is different - Load metadata directly
628
+ if(!previewMarketplaceMetadata) {
629
+ previewMarketplaceMetadata = await this.client.ContentObjectMetadata({
630
+ versionHash: this.previewMarketplaceHash,
631
+ metadataSubtree: "public/asset_metadata",
632
+ produceLinkUrls: true,
633
+ authorizationToken: this.publicStaticToken,
634
+ noAuth: true,
635
+ select: [
636
+ "slug",
637
+ "info/tenant_id",
638
+ "info/tenant_name",
639
+ "info/branding",
640
+ ],
641
+ remove: [
642
+ "info/branding/custom_css"
643
+ ]
644
+ });
645
+
646
+ if(!previewMarketplaceSlug) {
647
+ previewMarketplaceSlug = previewMarketplaceMetadata.slug;
648
+ }
649
+ }
650
+
651
+ previewMarketplaceMetadata["."] = {
652
+ source: this.previewMarketplaceHash
653
+ };
654
+
655
+ previewMarketplaceMetadata.info["."] = {
656
+ source: this.previewMarketplaceHash
657
+ };
658
+
659
+ previewMarketplaceMetadata.info.branding.preview = true;
660
+ previewMarketplaceMetadata.info.branding.show = true;
661
+
662
+ metadata[previewTenantSlug] = metadata[previewTenantSlug] || {};
663
+ metadata[previewTenantSlug].marketplaces = metadata[previewTenantSlug].marketplaces || {};
664
+ metadata[previewTenantSlug].marketplaces[previewMarketplaceSlug] = previewMarketplaceMetadata;
665
+ }
666
+
597
667
  let availableMarketplaces = { ...(this.availableMarketplaces || {}) };
598
668
  let availableMarketplacesById = { ...(this.availableMarketplacesById || {}) };
599
669
  Object.keys(metadata || {}).forEach(tenantSlug => {
600
670
  try {
601
- availableMarketplaces[tenantSlug] = {
602
- versionHash: metadata[tenantSlug]["."].source
603
- };
671
+ availableMarketplaces[tenantSlug] = metadata[tenantSlug]["."] ?
672
+ { versionHash: metadata[tenantSlug]["."].source } : { };
604
673
 
605
674
  Object.keys(metadata[tenantSlug].marketplaces || {}).forEach(marketplaceSlug => {
606
675
  try {
@@ -642,11 +711,17 @@ class ElvWalletClient {
642
711
  }
643
712
 
644
713
  // Get the hash of the currently linked marketplace
645
- async LatestMarketplaceHash({tenantSlug, marketplaceSlug}) {
714
+ async LatestMarketplaceHash({marketplaceParams}) {
715
+ const marketplaceInfo = await this.MarketplaceInfo({marketplaceParams});
716
+
717
+ if(this.previewMarketplaceId && this.previewMarketplaceId === marketplaceInfo.marketplaceId) {
718
+ return this.availableMarketplaces[marketplaceInfo.tenantSlug][marketplaceInfo.marketplaceSlug]["."].source;
719
+ }
720
+
646
721
  const mainSiteHash = await this.client.LatestVersionHash({objectId: this.mainSiteId});
647
722
  const marketplaceLink = await this.client.ContentObjectMetadata({
648
723
  versionHash: mainSiteHash,
649
- metadataSubtree: UrlJoin("/public", "asset_metadata", "tenants", tenantSlug, "marketplaces", marketplaceSlug),
724
+ metadataSubtree: UrlJoin("/public", "asset_metadata", "tenants", marketplaceInfo.tenantSlug, "marketplaces", marketplaceInfo.marketplaceSlug),
650
725
  resolveLinks: false
651
726
  });
652
727
 
@@ -657,7 +732,7 @@ class ElvWalletClient {
657
732
  const marketplaceInfo = this.MarketplaceInfo({marketplaceParams});
658
733
 
659
734
  const marketplaceId = marketplaceInfo.marketplaceId;
660
- const marketplaceHash = await this.LatestMarketplaceHash({tenantSlug: marketplaceInfo.tenantSlug, marketplaceSlug: marketplaceInfo.marketplaceSlug});
735
+ const marketplaceHash = await this.LatestMarketplaceHash({marketplaceParams});
661
736
 
662
737
  if(this.cachedMarketplaces[marketplaceId] && this.cachedMarketplaces[marketplaceId].versionHash !== marketplaceHash) {
663
738
  delete this.cachedMarketplaces[marketplaceId];
@@ -711,6 +786,10 @@ class ElvWalletClient {
711
786
  marketplace.marketplaceId = marketplaceId;
712
787
  marketplace.versionHash = marketplaceHash;
713
788
 
789
+ if(this.previewMarketplaceId && marketplaceId === this.previewMarketplaceId) {
790
+ marketplace.branding.preview = true;
791
+ }
792
+
714
793
  // Generate embed URLs for pack opening animations
715
794
  ["purchase_animation", "purchase_animation__mobile", "reveal_animation", "reveal_animation_mobile"].forEach(key => {
716
795
  try {