@talismn/balances 0.0.0-pr660-20230328111733 → 0.0.0-pr660-20230328121248

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/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @talismn/balances
2
2
 
3
- ## 0.0.0-pr660-20230328111733
3
+ ## 0.0.0-pr660-20230328121248
4
4
 
5
5
  ### Patch Changes
6
6
 
@@ -12,11 +12,11 @@
12
12
  - Updated dependencies [fa4d115f]
13
13
  - Updated dependencies [79f6ccf6]
14
14
  - Updated dependencies [c24dc1fb]
15
- - @talismn/chain-connector@0.0.0-pr660-20230328111733
16
- - @talismn/util@0.0.0-pr660-20230328111733
17
- - @talismn/token-rates@0.0.0-pr660-20230328111733
18
- - @talismn/chaindata-provider@0.0.0-pr660-20230328111733
19
- - @talismn/chain-connector-evm@0.0.0-pr660-20230328111733
15
+ - @talismn/chain-connector@0.0.0-pr660-20230328121248
16
+ - @talismn/util@0.0.0-pr660-20230328121248
17
+ - @talismn/token-rates@0.0.0-pr660-20230328121248
18
+ - @talismn/chaindata-provider@0.0.0-pr660-20230328121248
19
+ - @talismn/chain-connector-evm@0.0.0-pr660-20230328121248
20
20
 
21
21
  ## 0.3.3
22
22
 
@@ -1,13 +1,7 @@
1
1
  import { Dexie } from "dexie";
2
2
  import { BalanceJson } from "./types";
3
- type BalancesDbMeta = {
4
- id: string;
5
- value: string;
6
- };
7
3
  export declare class TalismanBalancesDatabase extends Dexie {
8
4
  balances: Dexie.Table<BalanceJson, string>;
9
- meta: Dexie.Table<BalancesDbMeta, string>;
10
5
  constructor();
11
6
  }
12
7
  export declare const db: TalismanBalancesDatabase;
13
- export {};
@@ -12,10 +12,13 @@ export declare const createTypeRegistryCache: () => {
12
12
  getOrCreateTypeRegistry: (chainId: ChainId, metadataRpc?: `0x${string}`) => Registry;
13
13
  };
14
14
  export declare const filterMirrorTokens: (balance: Balance, i: number, balances: Balance[]) => boolean;
15
+ export declare const getValidSubscriptionIds: () => Set<string>;
16
+ export declare const createSubscriptionId: () => string;
17
+ export declare const deleteSubscriptionId: () => void;
15
18
  /**
16
19
  * Sets all balance statuses from `live-${string}` to either `live` or `cached`
17
20
  */
18
- export declare const deriveStatuses: (latestSubscriptionId: string | undefined, balances: BalanceJson[]) => BalanceJson[];
21
+ export declare const deriveStatuses: (validSubscriptionIds: string[], balances: BalanceJson[]) => BalanceJson[];
19
22
  /**
20
23
  * Used by a variety of balance modules to help encode and decode substrate state calls.
21
24
  */
@@ -49,15 +49,14 @@ class TalismanBalancesDatabase extends dexie.Dexie {
49
49
  super("TalismanBalances");
50
50
 
51
51
  // https://dexie.org/docs/Tutorial/Design#database-versioning
52
- this.version(2).stores({
52
+ this.version(1).stores({
53
53
  // You only need to specify properties that you wish to index.
54
54
  // The object store will allow any properties on your stored objects but you can only query them by indexed properties
55
55
  // https://dexie.org/docs/API-Reference#declare-database
56
56
  //
57
57
  // Never index properties containing images, movies or large (huge) strings. Store them in IndexedDB, yes! but just don’t index them!
58
58
  // https://dexie.org/docs/Version/Version.stores()#warning
59
- balances: "id, source, status, address, tokenId",
60
- meta: "id"
59
+ balances: "id, source, status, address, tokenId"
61
60
  });
62
61
 
63
62
  // this.on("ready", async () => {})
@@ -68,7 +67,7 @@ const db = new TalismanBalancesDatabase();
68
67
 
69
68
  var packageJson = {
70
69
  name: "@talismn/balances",
71
- version: "0.0.0-pr660-20230328111733",
70
+ version: "0.0.0-pr660-20230328121248",
72
71
  author: "Talisman",
73
72
  homepage: "https://talisman.xyz",
74
73
  license: "UNLICENSED",
@@ -162,17 +161,41 @@ const filterMirrorTokens = (balance, i, balances) => {
162
161
  const mirrorOf = balance.token?.mirrorOf;
163
162
  return !mirrorOf || !balances.find(b => b.tokenId === mirrorOf);
164
163
  };
164
+ const getValidSubscriptionIds = () => {
165
+ return new Set(localStorage.getItem("TalismanBalancesSubscriptionIds")?.split(",") ?? []);
166
+ };
167
+ const createSubscriptionId = () => {
168
+ // delete current id (if exists)
169
+ deleteSubscriptionId();
170
+
171
+ // create new id
172
+ const subscriptionId = Date.now().toString();
173
+ sessionStorage.setItem("TalismanBalancesSubscriptionId", subscriptionId);
174
+
175
+ // add to list of current ids
176
+ const subscriptionIds = getValidSubscriptionIds();
177
+ subscriptionIds.add(subscriptionId);
178
+ localStorage.setItem("TalismanBalancesSubscriptionIds", [...subscriptionIds].filter(Boolean).join(","));
179
+ return subscriptionId;
180
+ };
181
+ const deleteSubscriptionId = () => {
182
+ const subscriptionId = sessionStorage.getItem("TalismanBalancesSubscriptionId");
183
+ if (!subscriptionId) return;
184
+ const subscriptionIds = getValidSubscriptionIds();
185
+ subscriptionIds.delete(subscriptionId);
186
+ localStorage.setItem("TalismanBalancesSubscriptionIds", [...subscriptionIds].filter(Boolean).join(","));
187
+ };
165
188
 
166
189
  /**
167
190
  * Sets all balance statuses from `live-${string}` to either `live` or `cached`
168
191
  */
169
- const deriveStatuses = (latestSubscriptionId, balances) => balances.map(balance => {
192
+ const deriveStatuses = (validSubscriptionIds, balances) => balances.map(balance => {
170
193
  if (balance.status === "live" || balance.status === "cache" || balance.status === "stale") return balance;
171
- if (!latestSubscriptionId) return {
194
+ if (validSubscriptionIds.length < 1) return {
172
195
  ...balance,
173
196
  status: "cache"
174
197
  };
175
- if (balance.status.slice("live-".length) !== latestSubscriptionId) return {
198
+ if (!validSubscriptionIds.includes(balance.status.slice("live-".length))) return {
176
199
  ...balance,
177
200
  status: "cache"
178
201
  };
@@ -701,10 +724,13 @@ exports.StorageHelper = StorageHelper;
701
724
  exports.SumBalancesFormatter = SumBalancesFormatter;
702
725
  exports.TalismanBalancesDatabase = TalismanBalancesDatabase;
703
726
  exports.balances = balances;
727
+ exports.createSubscriptionId = createSubscriptionId;
704
728
  exports.createTypeRegistryCache = createTypeRegistryCache;
705
729
  exports.db = db;
730
+ exports.deleteSubscriptionId = deleteSubscriptionId;
706
731
  exports.deriveStatuses = deriveStatuses;
707
732
  exports.excludeFromFeePayableLocks = excludeFromFeePayableLocks;
708
733
  exports.excludeFromTransferableAmount = excludeFromTransferableAmount;
709
734
  exports.filterMirrorTokens = filterMirrorTokens;
735
+ exports.getValidSubscriptionIds = getValidSubscriptionIds;
710
736
  exports.includeInTotalExtraAmount = includeInTotalExtraAmount;
@@ -49,15 +49,14 @@ class TalismanBalancesDatabase extends dexie.Dexie {
49
49
  super("TalismanBalances");
50
50
 
51
51
  // https://dexie.org/docs/Tutorial/Design#database-versioning
52
- this.version(2).stores({
52
+ this.version(1).stores({
53
53
  // You only need to specify properties that you wish to index.
54
54
  // The object store will allow any properties on your stored objects but you can only query them by indexed properties
55
55
  // https://dexie.org/docs/API-Reference#declare-database
56
56
  //
57
57
  // Never index properties containing images, movies or large (huge) strings. Store them in IndexedDB, yes! but just don’t index them!
58
58
  // https://dexie.org/docs/Version/Version.stores()#warning
59
- balances: "id, source, status, address, tokenId",
60
- meta: "id"
59
+ balances: "id, source, status, address, tokenId"
61
60
  });
62
61
 
63
62
  // this.on("ready", async () => {})
@@ -68,7 +67,7 @@ const db = new TalismanBalancesDatabase();
68
67
 
69
68
  var packageJson = {
70
69
  name: "@talismn/balances",
71
- version: "0.0.0-pr660-20230328111733",
70
+ version: "0.0.0-pr660-20230328121248",
72
71
  author: "Talisman",
73
72
  homepage: "https://talisman.xyz",
74
73
  license: "UNLICENSED",
@@ -162,17 +161,41 @@ const filterMirrorTokens = (balance, i, balances) => {
162
161
  const mirrorOf = balance.token?.mirrorOf;
163
162
  return !mirrorOf || !balances.find(b => b.tokenId === mirrorOf);
164
163
  };
164
+ const getValidSubscriptionIds = () => {
165
+ return new Set(localStorage.getItem("TalismanBalancesSubscriptionIds")?.split(",") ?? []);
166
+ };
167
+ const createSubscriptionId = () => {
168
+ // delete current id (if exists)
169
+ deleteSubscriptionId();
170
+
171
+ // create new id
172
+ const subscriptionId = Date.now().toString();
173
+ sessionStorage.setItem("TalismanBalancesSubscriptionId", subscriptionId);
174
+
175
+ // add to list of current ids
176
+ const subscriptionIds = getValidSubscriptionIds();
177
+ subscriptionIds.add(subscriptionId);
178
+ localStorage.setItem("TalismanBalancesSubscriptionIds", [...subscriptionIds].filter(Boolean).join(","));
179
+ return subscriptionId;
180
+ };
181
+ const deleteSubscriptionId = () => {
182
+ const subscriptionId = sessionStorage.getItem("TalismanBalancesSubscriptionId");
183
+ if (!subscriptionId) return;
184
+ const subscriptionIds = getValidSubscriptionIds();
185
+ subscriptionIds.delete(subscriptionId);
186
+ localStorage.setItem("TalismanBalancesSubscriptionIds", [...subscriptionIds].filter(Boolean).join(","));
187
+ };
165
188
 
166
189
  /**
167
190
  * Sets all balance statuses from `live-${string}` to either `live` or `cached`
168
191
  */
169
- const deriveStatuses = (latestSubscriptionId, balances) => balances.map(balance => {
192
+ const deriveStatuses = (validSubscriptionIds, balances) => balances.map(balance => {
170
193
  if (balance.status === "live" || balance.status === "cache" || balance.status === "stale") return balance;
171
- if (!latestSubscriptionId) return {
194
+ if (validSubscriptionIds.length < 1) return {
172
195
  ...balance,
173
196
  status: "cache"
174
197
  };
175
- if (balance.status.slice("live-".length) !== latestSubscriptionId) return {
198
+ if (!validSubscriptionIds.includes(balance.status.slice("live-".length))) return {
176
199
  ...balance,
177
200
  status: "cache"
178
201
  };
@@ -701,10 +724,13 @@ exports.StorageHelper = StorageHelper;
701
724
  exports.SumBalancesFormatter = SumBalancesFormatter;
702
725
  exports.TalismanBalancesDatabase = TalismanBalancesDatabase;
703
726
  exports.balances = balances;
727
+ exports.createSubscriptionId = createSubscriptionId;
704
728
  exports.createTypeRegistryCache = createTypeRegistryCache;
705
729
  exports.db = db;
730
+ exports.deleteSubscriptionId = deleteSubscriptionId;
706
731
  exports.deriveStatuses = deriveStatuses;
707
732
  exports.excludeFromFeePayableLocks = excludeFromFeePayableLocks;
708
733
  exports.excludeFromTransferableAmount = excludeFromTransferableAmount;
709
734
  exports.filterMirrorTokens = filterMirrorTokens;
735
+ exports.getValidSubscriptionIds = getValidSubscriptionIds;
710
736
  exports.includeInTotalExtraAmount = includeInTotalExtraAmount;
@@ -41,15 +41,14 @@ class TalismanBalancesDatabase extends Dexie {
41
41
  super("TalismanBalances");
42
42
 
43
43
  // https://dexie.org/docs/Tutorial/Design#database-versioning
44
- this.version(2).stores({
44
+ this.version(1).stores({
45
45
  // You only need to specify properties that you wish to index.
46
46
  // The object store will allow any properties on your stored objects but you can only query them by indexed properties
47
47
  // https://dexie.org/docs/API-Reference#declare-database
48
48
  //
49
49
  // Never index properties containing images, movies or large (huge) strings. Store them in IndexedDB, yes! but just don’t index them!
50
50
  // https://dexie.org/docs/Version/Version.stores()#warning
51
- balances: "id, source, status, address, tokenId",
52
- meta: "id"
51
+ balances: "id, source, status, address, tokenId"
53
52
  });
54
53
 
55
54
  // this.on("ready", async () => {})
@@ -60,7 +59,7 @@ const db = new TalismanBalancesDatabase();
60
59
 
61
60
  var packageJson = {
62
61
  name: "@talismn/balances",
63
- version: "0.0.0-pr660-20230328111733",
62
+ version: "0.0.0-pr660-20230328121248",
64
63
  author: "Talisman",
65
64
  homepage: "https://talisman.xyz",
66
65
  license: "UNLICENSED",
@@ -154,17 +153,41 @@ const filterMirrorTokens = (balance, i, balances) => {
154
153
  const mirrorOf = balance.token?.mirrorOf;
155
154
  return !mirrorOf || !balances.find(b => b.tokenId === mirrorOf);
156
155
  };
156
+ const getValidSubscriptionIds = () => {
157
+ return new Set(localStorage.getItem("TalismanBalancesSubscriptionIds")?.split(",") ?? []);
158
+ };
159
+ const createSubscriptionId = () => {
160
+ // delete current id (if exists)
161
+ deleteSubscriptionId();
162
+
163
+ // create new id
164
+ const subscriptionId = Date.now().toString();
165
+ sessionStorage.setItem("TalismanBalancesSubscriptionId", subscriptionId);
166
+
167
+ // add to list of current ids
168
+ const subscriptionIds = getValidSubscriptionIds();
169
+ subscriptionIds.add(subscriptionId);
170
+ localStorage.setItem("TalismanBalancesSubscriptionIds", [...subscriptionIds].filter(Boolean).join(","));
171
+ return subscriptionId;
172
+ };
173
+ const deleteSubscriptionId = () => {
174
+ const subscriptionId = sessionStorage.getItem("TalismanBalancesSubscriptionId");
175
+ if (!subscriptionId) return;
176
+ const subscriptionIds = getValidSubscriptionIds();
177
+ subscriptionIds.delete(subscriptionId);
178
+ localStorage.setItem("TalismanBalancesSubscriptionIds", [...subscriptionIds].filter(Boolean).join(","));
179
+ };
157
180
 
158
181
  /**
159
182
  * Sets all balance statuses from `live-${string}` to either `live` or `cached`
160
183
  */
161
- const deriveStatuses = (latestSubscriptionId, balances) => balances.map(balance => {
184
+ const deriveStatuses = (validSubscriptionIds, balances) => balances.map(balance => {
162
185
  if (balance.status === "live" || balance.status === "cache" || balance.status === "stale") return balance;
163
- if (!latestSubscriptionId) return {
186
+ if (validSubscriptionIds.length < 1) return {
164
187
  ...balance,
165
188
  status: "cache"
166
189
  };
167
- if (balance.status.slice("live-".length) !== latestSubscriptionId) return {
190
+ if (!validSubscriptionIds.includes(balance.status.slice("live-".length))) return {
168
191
  ...balance,
169
192
  status: "cache"
170
193
  };
@@ -683,4 +706,4 @@ class SumBalancesFormatter {
683
706
  }
684
707
  }
685
708
 
686
- export { Balance, BalanceFormatter, BalanceStatusLive, Balances, DefaultBalanceModule, FiatSumBalancesFormatter, StorageHelper, SumBalancesFormatter, TalismanBalancesDatabase, balances, createTypeRegistryCache, db, deriveStatuses, excludeFromFeePayableLocks, excludeFromTransferableAmount, filterMirrorTokens, includeInTotalExtraAmount };
709
+ export { Balance, BalanceFormatter, BalanceStatusLive, Balances, DefaultBalanceModule, FiatSumBalancesFormatter, StorageHelper, SumBalancesFormatter, TalismanBalancesDatabase, balances, createSubscriptionId, createTypeRegistryCache, db, deleteSubscriptionId, deriveStatuses, excludeFromFeePayableLocks, excludeFromTransferableAmount, filterMirrorTokens, getValidSubscriptionIds, includeInTotalExtraAmount };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/balances",
3
- "version": "0.0.0-pr660-20230328111733",
3
+ "version": "0.0.0-pr660-20230328121248",
4
4
  "author": "Talisman",
5
5
  "homepage": "https://talisman.xyz",
6
6
  "license": "UNLICENSED",
@@ -27,11 +27,11 @@
27
27
  "clean": "rm -rf dist && rm -rf .turbo rm -rf node_modules"
28
28
  },
29
29
  "dependencies": {
30
- "@talismn/chain-connector": "^0.0.0-pr660-20230328111733",
31
- "@talismn/chain-connector-evm": "^0.0.0-pr660-20230328111733",
32
- "@talismn/chaindata-provider": "^0.0.0-pr660-20230328111733",
33
- "@talismn/token-rates": "^0.0.0-pr660-20230328111733",
34
- "@talismn/util": "^0.0.0-pr660-20230328111733",
30
+ "@talismn/chain-connector": "^0.0.0-pr660-20230328121248",
31
+ "@talismn/chain-connector-evm": "^0.0.0-pr660-20230328121248",
32
+ "@talismn/chaindata-provider": "^0.0.0-pr660-20230328121248",
33
+ "@talismn/token-rates": "^0.0.0-pr660-20230328121248",
34
+ "@talismn/util": "^0.0.0-pr660-20230328121248",
35
35
  "anylogger": "^1.0.11",
36
36
  "dexie": "^3.2.3"
37
37
  },