/
masa.ts
71 lines (65 loc) · 1.7 KB
/
masa.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import {
Environment,
environments,
Masa,
NetworkName,
} from '@masa-finance/masa-sdk';
import { ethers, Wallet } from 'ethers';
import { ArweaveConfig } from '../provider/masa-context-provider';
const getChainName = (chainId: number): string => {
switch (chainId) {
case 1:
return 'mainnet';
case 5:
return 'goerli';
case 44787:
return 'alfajores';
case 42220:
return 'celo';
case 137:
return 'polygon';
case 80001:
return 'mumbai';
default:
return 'goerli';
}
};
export const createRandomWallet = (): Wallet | null => {
console.info('Creating random wallet!');
const wallet = ethers.Wallet.createRandom();
if (typeof window !== 'undefined') {
if (typeof window?.ethereum !== 'undefined') {
return wallet.connect(
new ethers.providers.Web3Provider(window?.ethereum)
);
} else {
return null;
}
} else {
return null;
}
};
export const createNewMasa = (
newWallet,
env: string,
arweaveConfig?: ArweaveConfig
): Masa | null => {
const signer = newWallet ? newWallet : createRandomWallet();
if (!signer) return null;
const environment = environments.find((e: Environment) => e.name === env);
if (!environment) return null;
return new Masa({
wallet: signer,
apiUrl: environment.apiUrl,
defaultNetwork: getChainName(
signer?.provider?._network?.chainId ?? 5
) as NetworkName,
environment: environment.environment,
arweave: {
host: arweaveConfig?.host || 'arweave.net',
port: parseInt(arweaveConfig?.port || '443'),
protocol: arweaveConfig?.protocol || 'https',
logging: (!!arweaveConfig?.logging as boolean) || false,
},
});
};