Skip to content

Commit 4bae558

Browse files
committed
Merge branch 'develop' of https://github.com/corpus-io/dm3 into 718-configurable-image
2 parents da6bb73 + fbc592a commit 4bae558

File tree

5 files changed

+107
-2
lines changed

5 files changed

+107
-2
lines changed

.github/workflows/pord-deploy.yml

+1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ jobs:
4141
echo "REACT_APP_RESOLVER_BACKEND=https://${{ secrets.HOST_DOMAIN}}/resolver-handler" >> ./.env.react
4242
echo "REACT_APP_USER_ENS_SUBDOMAIN=.user.dm3.eth" >> ./.env.react
4343
echo "REACT_APP_WALLET_CONNECT_PROJECT_ID=${{ secrets.REACT_APP_WALLET_CONNECT_PROJECT_ID }}" >> ./.env.react
44+
echo "REACT_APP_MAINNET_PROVIDER_RPC={{ secrets.MAINNET_PROVIDER_URL}}" >> ./.env.react
4445
echo "REACT_APP_CHAIN_ID=${{ vars.CHAIN_ID }}" >> ./.env.react
4546
cat ./.env.react >> ./.env
4647
echo "RESOLVER_ADDR=0xae6646c22D8eE6479eE0a39Bf63B9bD9e57bAD9d" >> ./.env

.github/workflows/staging-deploy.yml

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ jobs:
4343
echo "REACT_APP_COMMIT_HASH=${{ env.sha_short }}" >> ./.env.react
4444
echo "REACT_APP_BRANCH=${{ env.branch }}" >> ./.env.react
4545
echo "REACT_APP_BUILD_TIME=${{ env.now }}" >> ./.env.react
46+
echo "REACT_APP_MAINNET_PROVIDER_RPC={{ secrets.MAINNET_PROVIDER_URL}}" >> ./.env.react
4647
echo "REACT_APP_CHAIN_ID=${{ vars.CHAIN_ID }}" >> ./.env.react
4748
cat ./.env.react >> ./.env
4849
echo "RESOLVER_ADDR=0xae6646c22D8eE6479eE0a39Bf63B9bD9e57bAD9d" >> ./.env

packages/messenger-widget/src/hooks/mainnetprovider/_useMainnetProvider.tsx

+15-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,28 @@ import { getCachedProvider } from './cache/providerCache';
44

55
export const _useMainnetProvider = (): ethers.providers.JsonRpcProvider => {
66
const url = process.env.REACT_APP_MAINNET_PROVIDER_RPC;
7+
const chainID = process.env.REACT_APP_CHAIN_ID;
8+
9+
if (chainID !== '1' && chainID !== '5') {
10+
throw new Error(
11+
'Chain ID is not set to please use either goerli or mainnet',
12+
);
13+
}
714
if (!url) {
815
throw new Error('Mainnet provider not set in env');
916
}
1017

11-
const provider = new ethers.providers.JsonRpcProvider(url, {
18+
const goerliProvider = new ethers.providers.JsonRpcProvider(url, {
19+
name: 'goerli',
20+
chainId: 5,
21+
});
22+
23+
const mainnetProvider = new ethers.providers.JsonRpcProvider(url, {
1224
name: 'mainnet',
1325
chainId: 1,
1426
});
27+
// Mainnet provider provides access to a mainnet provider. On testnet that would be goerli
28+
const provider = chainID === '1' ? mainnetProvider : goerliProvider;
1529

1630
return getCachedProvider(provider);
1731
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
//Hook to interact with the storage.
2+
//Will be initialized with the deliveryServiceToken and the initialUserDb after the user has logged in.
3+
4+
import {
5+
UserDB,
6+
createTimestamp,
7+
sync as getAcknoledgements,
8+
} from '@dm3-org/dm3-lib-storage';
9+
import { syncAcknoledgment } from '@dm3-org/dm3-lib-delivery-api';
10+
11+
import { useContext, useEffect, useMemo, useState } from 'react';
12+
import { useMainnetProvider } from '../mainnetprovider/useMainnetProvider';
13+
import { AuthContext } from '../../context/AuthContext';
14+
import { log } from '@dm3-org/dm3-lib-shared';
15+
import { Account } from '@dm3-org/dm3-lib-profile';
16+
17+
export declare enum SyncProcessState {
18+
Uninitialized = 'UNINITIALIZED',
19+
Idle = 'IDLE',
20+
Running = 'RUNNING',
21+
Failed = 'FAILED',
22+
}
23+
24+
//Handels storage sync and offers an interface for other hooks to interact with the storage
25+
export const useStorage = (
26+
account: Account | undefined,
27+
_initialUserDb: UserDB | undefined,
28+
deliveryServiceToken: string | undefined,
29+
) => {
30+
const [syncProcessState, setSyncProcessState] = useState<SyncProcessState>(
31+
SyncProcessState.Uninitialized,
32+
);
33+
34+
//Not sure if its needed; however since its part of older lib functions if have included it.
35+
// Might be subject of removal
36+
const [lastMessagePull, setLastMessagePull] = useState<number>(0);
37+
38+
const [userDb, setUserDb] = useState<UserDB | undefined>(undefined);
39+
40+
const mainnetProvider = useMainnetProvider();
41+
42+
useEffect(() => {
43+
//Called to initialize the storage
44+
if (!deliveryServiceToken || !_initialUserDb) {
45+
return;
46+
}
47+
setUserDb(_initialUserDb);
48+
_sync();
49+
}, [_initialUserDb, deliveryServiceToken]);
50+
51+
const _sync = async () => {
52+
if (!deliveryServiceToken || !userDb || !account) {
53+
log('[sync] not logged in yet', 'info');
54+
return;
55+
}
56+
57+
const syncTime = createTimestamp();
58+
//Write current storage object to the delivery service
59+
//Acknowledgements the delivery service that the storage has been written are beeing returned
60+
const { acknoledgments } = await getAcknoledgements(
61+
userDb,
62+
deliveryServiceToken,
63+
);
64+
syncAcknoledgment(
65+
mainnetProvider,
66+
account,
67+
acknoledgments,
68+
deliveryServiceToken,
69+
lastMessagePull,
70+
);
71+
72+
//Sync has been completed
73+
setSyncProcessState(SyncProcessState.Idle);
74+
};
75+
76+
const addMessage = async (message: any) => {};
77+
return {
78+
syncProcessState,
79+
addMessage,
80+
userDb,
81+
};
82+
};

packages/messenger-widget/src/views/Home/Home.tsx

+8-1
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,19 @@ import { MainnetProviderContextProvider } from '../../context/ProviderContext';
2525
import { GlobalContext } from '../../utils/context-utils';
2626
import './Home.css';
2727

28+
//Use different chains depending on the environment. Note that gnosis mainnet is used for both setups
29+
// because there is no spaceId testnet deploymend yet
30+
const _chains =
31+
process.env.REACT_APP_CHAIN_ID === '1'
32+
? [mainnet, gnosis]
33+
: [goerli, gnosis];
34+
2835
export function Home(props: Dm3Props) {
2936
// fetches context api data
3037
const { state, dispatch } = useContext(GlobalContext);
3138

3239
const { chains, publicClient } = configureChains(
33-
[mainnet, gnosis],
40+
[..._chains],
3441
[
3542
jsonRpcProvider({
3643
rpc: () => ({

0 commit comments

Comments
 (0)