Skip to content

Commit 6571f3c

Browse files
committed
feat(network): add localStorage provider
1 parent 33d505c commit 6571f3c

File tree

4 files changed

+50
-4
lines changed

4 files changed

+50
-4
lines changed

packages/sado-sdk/src/Network/Network.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ export type NetworkProvider = {
2929
get(): Network;
3030
};
3131

32-
export type Network = "mainnet" | "testnet" | "regtest";
32+
export type Network = (typeof VALID_NETWORK)[number];
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { DEFAULT_NETWORK, isValidNetwork, Network, NetworkProvider } from "../Network";
2+
3+
export class LocalStorageProvider implements NetworkProvider {
4+
/**
5+
* Instantiates a new LocalStorageProvider instance.
6+
*
7+
* @param value - Initial network value.
8+
*/
9+
constructor(value?: string) {
10+
if (value !== undefined) {
11+
if (!isValidNetwork(value)) {
12+
throw new Error(`Invalid network: ${value}`);
13+
}
14+
this.set(value);
15+
}
16+
}
17+
18+
get storage() {
19+
const storage = globalThis.localStorage;
20+
if (storage === undefined) {
21+
throw new Error("LocalStorageProvider > could not retrieve storage, globalThis.localStorage is not available");
22+
}
23+
return storage;
24+
}
25+
26+
set(value: Network) {
27+
this.storage.setItem("network", value);
28+
}
29+
30+
get(): Network {
31+
const network = this.storage.getItem("network");
32+
if (network !== null) {
33+
if (isValidNetwork(network)) {
34+
return network;
35+
}
36+
this.storage.removeItem("network");
37+
}
38+
return DEFAULT_NETWORK;
39+
}
40+
}

packages/sado-sdk/src/Network/Providers/MemoryProvider.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1-
import { DEFAULT_NETWORK, isValidNetwork, Network } from "../Network";
1+
import { DEFAULT_NETWORK, isValidNetwork, Network, NetworkProvider } from "../Network";
22

3-
export class NetworkMemoryProvider {
3+
export class NetworkMemoryProvider implements NetworkProvider {
44
#value: Network = DEFAULT_NETWORK;
55

6+
/**
7+
* Instantiates a new NetworkMemoryProvider instance.
8+
*
9+
* @param value - Initial network value.
10+
*/
611
constructor(value?: string) {
712
if (value !== undefined) {
813
if (!isValidNetwork(value)) {
914
throw new Error(`Invalid network: ${value}`);
1015
}
11-
this.#value = value;
16+
this.set(value);
1217
}
1318
}
1419

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from "./Network";
2+
export { LocalStorageProvider } from "./Providers/LocalStorageProvider";
23
export { NetworkMemoryProvider } from "./Providers/MemoryProvider";

0 commit comments

Comments
 (0)