forked from cerc-io/laconic-wallet-web
Compare commits
5 Commits
4d5fd722fb
...
162efe377c
Author | SHA1 | Date | |
---|---|---|---|
|
162efe377c | ||
504badebb8 | |||
cd0f6fa5d2 | |||
7273165e2c | |||
581eccd81a |
1
.npmrc
Normal file
1
.npmrc
Normal file
@ -0,0 +1 @@
|
||||
@cerc-io:registry=https://git.vdb.to/api/packages/cerc-io/npm/
|
@ -3,7 +3,7 @@
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@cerc-io/registry-sdk": "^0.2.3",
|
||||
"@cerc-io/registry-sdk": "^0.2.5",
|
||||
"@cosmjs/amino": "^0.32.3",
|
||||
"@cosmjs/crypto": "^0.32.3",
|
||||
"@cosmjs/proto-signing": "^0.32.3",
|
||||
|
@ -23,7 +23,6 @@ import AddSession from './screens/AddSession';
|
||||
import WalletConnect from './screens/WalletConnect';
|
||||
import ApproveTransaction from './screens/ApproveTransaction';
|
||||
import { StackParamsList } from './types';
|
||||
import { web3wallet } from './utils/wallet-connect/WalletConnectUtils';
|
||||
import { EIP155_SIGNING_METHODS } from './utils/wallet-connect/EIP155Data';
|
||||
import { getSignParamsMessage } from './utils/wallet-connect/helpers';
|
||||
import ApproveTransfer from './screens/ApproveTransfer';
|
||||
@ -40,7 +39,7 @@ const App = (): React.JSX.Element => {
|
||||
const navigation =
|
||||
useNavigation<StackNavigationProp<StackParamsList>>();
|
||||
|
||||
const { setActiveSessions } = useWalletConnect();
|
||||
const { web3wallet, setActiveSessions } = useWalletConnect();
|
||||
const { accounts, setCurrentIndex } = useAccounts();
|
||||
const { networksData, selectedNetwork, setSelectedNetwork } = useNetworks();
|
||||
const [modalVisible, setModalVisible] = useState(false);
|
||||
@ -62,7 +61,7 @@ const App = (): React.JSX.Element => {
|
||||
setModalVisible(true);
|
||||
setCurrentProposal(proposal);
|
||||
},
|
||||
[accounts],
|
||||
[accounts, web3wallet],
|
||||
);
|
||||
|
||||
const onSessionRequest = useCallback(
|
||||
@ -196,13 +195,14 @@ const App = (): React.JSX.Element => {
|
||||
setSelectedNetwork,
|
||||
setCurrentIndex,
|
||||
selectedNetwork,
|
||||
web3wallet
|
||||
],
|
||||
);
|
||||
|
||||
const onSessionDelete = useCallback(() => {
|
||||
const sessions = web3wallet!.getActiveSessions();
|
||||
setActiveSessions(sessions);
|
||||
}, [setActiveSessions]);
|
||||
}, [setActiveSessions, web3wallet]);
|
||||
|
||||
useEffect(() => {
|
||||
web3wallet?.on('session_proposal', onSessionProposal);
|
||||
|
@ -11,7 +11,7 @@ import styles from '../styles/stylesheet';
|
||||
import HDPathDialog from './HDPathDialog';
|
||||
import AccountDetails from './AccountDetails';
|
||||
import { useAccounts } from '../context/AccountsContext';
|
||||
import { web3wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import { useWalletConnect } from '../context/WalletConnectContext';
|
||||
import { useNetworks } from '../context/NetworksContext';
|
||||
import ConfirmDialog from './ConfirmDialog';
|
||||
import { getNamespaces } from '../utils/wallet-connect/helpers';
|
||||
@ -26,6 +26,8 @@ const Accounts = () => {
|
||||
useAccounts();
|
||||
const { networksData, selectedNetwork, setNetworksData, setSelectedNetwork } =
|
||||
useNetworks();
|
||||
|
||||
const {web3wallet} = useWalletConnect();
|
||||
const [expanded, setExpanded] = useState(false);
|
||||
const [isAccountCreating, setIsAccountCreating] = useState(false);
|
||||
const [hdDialog, setHdDialog] = useState(false);
|
||||
@ -74,7 +76,7 @@ const Accounts = () => {
|
||||
// Call the updateSessions function when the 'accounts' dependency changes
|
||||
updateSessions();
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [accounts]);
|
||||
}, [accounts, web3wallet]);
|
||||
|
||||
const addAccountHandler = async () => {
|
||||
setIsAccountCreating(true);
|
||||
|
@ -7,7 +7,6 @@ import { buildApprovedNamespaces, getSdkError } from '@walletconnect/utils';
|
||||
|
||||
import { PairingModalProps } from '../types';
|
||||
import styles from '../styles/stylesheet';
|
||||
import { web3wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import { useAccounts } from '../context/AccountsContext';
|
||||
import { useWalletConnect } from '../context/WalletConnectContext';
|
||||
import { useNetworks } from '../context/NetworksContext';
|
||||
@ -86,7 +85,7 @@ const PairingModal = ({
|
||||
});
|
||||
}, [currentProposal]);
|
||||
|
||||
const { setActiveSessions } = useWalletConnect();
|
||||
const { setActiveSessions, web3wallet } = useWalletConnect();
|
||||
|
||||
useEffect(() => {
|
||||
const getSupportedNamespaces = async () => {
|
||||
@ -131,6 +130,7 @@ const PairingModal = ({
|
||||
currentIndex,
|
||||
setCurrentProposal,
|
||||
setModalVisible,
|
||||
web3wallet
|
||||
]);
|
||||
|
||||
const namespaces = useMemo(() => {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import React from 'react';
|
||||
import { Button, Dialog, Portal, Text } from 'react-native-paper';
|
||||
import { Dialog, DialogTitle, DialogContent, DialogActions, Button, Typography } from '@mui/material';
|
||||
|
||||
const TxErrorDialog = ({
|
||||
error,
|
||||
@ -11,17 +11,15 @@ const TxErrorDialog = ({
|
||||
hideDialog: () => void;
|
||||
}) => {
|
||||
return (
|
||||
<Portal>
|
||||
<Dialog visible={visible} onDismiss={hideDialog}>
|
||||
<Dialog.Title>Transaction Error</Dialog.Title>
|
||||
<Dialog.Content>
|
||||
<Text variant="bodyMedium">{error}</Text>
|
||||
</Dialog.Content>
|
||||
<Dialog.Actions>
|
||||
<Button onPress={hideDialog}>OK</Button>
|
||||
</Dialog.Actions>
|
||||
</Dialog>
|
||||
</Portal>
|
||||
<Dialog open={visible} onClose={hideDialog}>
|
||||
<DialogTitle>Transaction Error</DialogTitle>
|
||||
<DialogContent>
|
||||
<Typography variant="body1">{error}</Typography>
|
||||
</DialogContent>
|
||||
<DialogActions>
|
||||
<Button onClick={hideDialog}>OK</Button>
|
||||
</DialogActions>
|
||||
</Dialog>
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -1,14 +1,16 @@
|
||||
import React, { createContext, useContext, useEffect, useState } from 'react';
|
||||
|
||||
import { SessionTypes } from '@walletconnect/types';
|
||||
import { IWeb3Wallet } from '@walletconnect/web3wallet';
|
||||
|
||||
import { WalletConnectContextProps } from '../types';
|
||||
import { web3wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import useInitialization from '../hooks/useInitialization';
|
||||
|
||||
const WalletConnectContext = createContext<WalletConnectContextProps>({
|
||||
activeSessions: {},
|
||||
setActiveSessions: () => {},
|
||||
web3wallet: {} as IWeb3Wallet,
|
||||
setWeb3wallet: () => {},
|
||||
});
|
||||
|
||||
const useWalletConnect = () => {
|
||||
@ -17,12 +19,14 @@ const useWalletConnect = () => {
|
||||
};
|
||||
|
||||
const WalletConnectProvider = ({ children }: { children: React.ReactNode }) => {
|
||||
useInitialization();
|
||||
const [web3wallet, setWeb3wallet] = useState<IWeb3Wallet | undefined>();
|
||||
|
||||
useInitialization(setWeb3wallet);
|
||||
|
||||
useEffect(() => {
|
||||
const sessions = (web3wallet && web3wallet.getActiveSessions()) || {};
|
||||
setActiveSessions(sessions);
|
||||
}, []);
|
||||
}, [web3wallet]);
|
||||
|
||||
const [activeSessions, setActiveSessions] = useState<
|
||||
Record<string, SessionTypes.Struct>
|
||||
@ -33,6 +37,8 @@ const WalletConnectProvider = ({ children }: { children: React.ReactNode }) => {
|
||||
value={{
|
||||
activeSessions,
|
||||
setActiveSessions,
|
||||
web3wallet,
|
||||
setWeb3wallet,
|
||||
}}>
|
||||
{children}
|
||||
</WalletConnectContext.Provider>
|
||||
|
@ -1,17 +1,23 @@
|
||||
import { useCallback, useEffect, useState } from 'react';
|
||||
|
||||
import { IWeb3Wallet } from '@walletconnect/web3wallet';
|
||||
|
||||
import { createWeb3Wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
|
||||
export default function useInitialization() {
|
||||
export default function useInitialization(
|
||||
setWeb3wallet: React.Dispatch<React.SetStateAction<IWeb3Wallet | undefined>>,
|
||||
) {
|
||||
const [initialized, setInitialized] = useState(false);
|
||||
|
||||
const onInitialize = useCallback(async () => {
|
||||
try {
|
||||
await createWeb3Wallet();
|
||||
const web3walletInstance = await createWeb3Wallet();
|
||||
setWeb3wallet(web3walletInstance);
|
||||
setInitialized(true);
|
||||
} catch (err: unknown) {
|
||||
console.error('Error for initializing', err);
|
||||
}
|
||||
}, []);
|
||||
}, [setWeb3wallet]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!initialized) {
|
||||
|
@ -15,14 +15,7 @@ import { WalletConnectProvider } from './context/WalletConnectContext';
|
||||
globalThis.Buffer = Buffer;
|
||||
|
||||
const linking = {
|
||||
prefixes: ['https://wallet.laconic.com'],
|
||||
config: {
|
||||
screens: {
|
||||
SignRequest: {
|
||||
path: 'sign/:namespace/:chaindId/:address/:message',
|
||||
},
|
||||
},
|
||||
},
|
||||
prefixes: ['https://wallet.laconic.com']
|
||||
};
|
||||
|
||||
const theme = {
|
||||
|
@ -409,6 +409,7 @@ const AddNetwork = () => {
|
||||
mode="contained"
|
||||
loading={isSubmitting}
|
||||
disabled={isSubmitting}
|
||||
style={styles.networksButton}
|
||||
onPress={handleSubmit(submit)}>
|
||||
{isSubmitting ? 'Adding' : 'Submit'}
|
||||
</Button>
|
||||
|
@ -1,4 +1,4 @@
|
||||
import React, { useState } from 'react';
|
||||
import React, { useCallback, useState } from 'react';
|
||||
import { View } from 'react-native';
|
||||
import { Button, Text, TextInput } from 'react-native-paper';
|
||||
|
||||
@ -8,6 +8,7 @@ import { NativeStackNavigationProp } from '@react-navigation/native-stack';
|
||||
import { web3WalletPair } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import styles from '../styles/stylesheet';
|
||||
import { StackParamsList } from '../types';
|
||||
import { useWalletConnect } from '../context/WalletConnectContext';
|
||||
|
||||
const AddSession = () => {
|
||||
const navigation =
|
||||
@ -15,11 +16,17 @@ const AddSession = () => {
|
||||
|
||||
const [currentWCURI, setCurrentWCURI] = useState<string>('');
|
||||
|
||||
const pair = async () => {
|
||||
const pairing = await web3WalletPair({ uri: currentWCURI });
|
||||
const {web3wallet} = useWalletConnect();
|
||||
|
||||
const pair = useCallback(async () => {
|
||||
if (!web3wallet) {
|
||||
return;
|
||||
}
|
||||
|
||||
const pairing = await web3WalletPair(web3wallet, { uri: currentWCURI });
|
||||
navigation.navigate('WalletConnect');
|
||||
return pairing;
|
||||
};
|
||||
}, [currentWCURI, navigation, web3wallet]);
|
||||
|
||||
return (
|
||||
<View style={styles.appContainer}>
|
||||
|
@ -23,7 +23,7 @@ import {
|
||||
approveWalletConnectRequest,
|
||||
rejectWalletConnectRequest,
|
||||
} from '../utils/wallet-connect/wallet-connect-requests';
|
||||
import { web3wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import { useWalletConnect } from '../context/WalletConnectContext';
|
||||
import { MEMO } from './ApproveTransfer';
|
||||
import TxErrorDialog from '../components/TxErrorDialog';
|
||||
import AccountDetails from '../components/AccountDetails';
|
||||
@ -50,7 +50,7 @@ const ApproveTransaction = ({ route }: ApproveTransactionProps) => {
|
||||
const [account, setAccount] = useState<Account>();
|
||||
const [cosmosStargateClient, setCosmosStargateClient] =
|
||||
useState<LaconicClient>();
|
||||
const [cosmosGasLimit, setCosmosGasLimit] = useState<string>();
|
||||
const [cosmosGasLimit, setCosmosGasLimit] = useState<string>('');
|
||||
const [fees, setFees] = useState<string>();
|
||||
const [txError, setTxError] = useState<string>();
|
||||
const [isTxErrorDialogOpen, setIsTxErrorDialogOpen] = useState(false);
|
||||
@ -65,6 +65,8 @@ const ApproveTransaction = ({ route }: ApproveTransactionProps) => {
|
||||
);
|
||||
const namespace = requestedNetwork!.namespace;
|
||||
|
||||
const { web3wallet } = useWalletConnect();
|
||||
|
||||
useEffect(() => {
|
||||
if (namespace !== COSMOS) {
|
||||
return;
|
||||
@ -106,7 +108,7 @@ const ApproveTransaction = ({ route }: ApproveTransactionProps) => {
|
||||
};
|
||||
|
||||
setClient();
|
||||
}, [account, requestedNetwork, chainId, namespace, requestEventId, topic]);
|
||||
}, [account, requestedNetwork, chainId, namespace, requestEventId, topic, web3wallet]);
|
||||
|
||||
const retrieveData = useCallback(
|
||||
async (requestAddress: string) => {
|
||||
@ -158,7 +160,7 @@ const ApproveTransaction = ({ route }: ApproveTransactionProps) => {
|
||||
}
|
||||
};
|
||||
getCosmosGas();
|
||||
}, [cosmosStargateClient, transactionMessage, requestEventId, topic]);
|
||||
}, [cosmosStargateClient, transactionMessage, requestEventId, topic, web3wallet]);
|
||||
|
||||
useEffect(() => {
|
||||
const gasPrice = GasPrice.fromString(
|
||||
@ -199,7 +201,7 @@ const ApproveTransaction = ({ route }: ApproveTransactionProps) => {
|
||||
denom: requestedNetwork!.nativeDenom!,
|
||||
},
|
||||
],
|
||||
gas: cosmosGasLimit!,
|
||||
gas: cosmosGasLimit,
|
||||
},
|
||||
txMsg: transactionMessage,
|
||||
};
|
||||
|
@ -33,7 +33,7 @@ import {
|
||||
rejectWalletConnectRequest,
|
||||
WalletConnectRequests,
|
||||
} from '../utils/wallet-connect/wallet-connect-requests';
|
||||
import { web3wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import { useWalletConnect } from '../context/WalletConnectContext';
|
||||
import DataBox from '../components/DataBox';
|
||||
import { getPathKey } from '../utils/misc';
|
||||
import { useNetworks } from '../context/NetworksContext';
|
||||
@ -53,6 +53,7 @@ type SignRequestProps = NativeStackScreenProps<
|
||||
|
||||
const ApproveTransfer = ({ route }: SignRequestProps) => {
|
||||
const { networksData } = useNetworks();
|
||||
const { web3wallet } = useWalletConnect();
|
||||
|
||||
const requestSession = route.params.requestSessionData;
|
||||
const requestName = requestSession.peer.metadata.name;
|
||||
@ -69,8 +70,8 @@ const ApproveTransfer = ({ route }: SignRequestProps) => {
|
||||
const [isTxLoading, setIsTxLoading] = useState(false);
|
||||
const [cosmosStargateClient, setCosmosStargateClient] =
|
||||
useState<SigningStargateClient>();
|
||||
const [fees, setFees] = useState<string>();
|
||||
const [cosmosGasLimit, setCosmosGasLimit] = useState<string>();
|
||||
const [fees, setFees] = useState<string>('');
|
||||
const [cosmosGasLimit, setCosmosGasLimit] = useState<string>('');
|
||||
const [txError, setTxError] = useState<string>();
|
||||
const [isTxErrorDialogOpen, setIsTxErrorDialogOpen] = useState(false);
|
||||
const [ethGasPrice, setEthGasPrice] = useState<BigNumber | null>();
|
||||
@ -211,7 +212,7 @@ const ApproveTransfer = ({ route }: SignRequestProps) => {
|
||||
// If requested chain is EVM compatible, set loading to false when ethMaxFee and ethPriorityFee have been populated
|
||||
(ethMaxFee !== undefined && ethMaxPriorityFee !== undefined) ||
|
||||
// Or if requested chain is a cosmos chain, set loading to false when cosmosGasLimit has been populated
|
||||
cosmosGasLimit !== undefined
|
||||
!cosmosGasLimit
|
||||
) {
|
||||
setIsLoading(false);
|
||||
}
|
||||
@ -310,11 +311,11 @@ const ApproveTransfer = ({ route }: SignRequestProps) => {
|
||||
// This amount is total fees required for transaction
|
||||
amount: [
|
||||
{
|
||||
amount: fees!,
|
||||
amount: fees,
|
||||
denom: requestedNetwork!.nativeDenom!,
|
||||
},
|
||||
],
|
||||
gas: cosmosGasLimit!,
|
||||
gas: cosmosGasLimit,
|
||||
},
|
||||
sendMsg,
|
||||
memo: MEMO,
|
||||
|
@ -187,6 +187,7 @@ const EditNetwork = ({ route }: EditNetworkProps) => {
|
||||
mode="contained"
|
||||
loading={isSubmitting}
|
||||
disabled={isSubmitting}
|
||||
style={styles.networksButton}
|
||||
onPress={handleSubmit(submit)}>
|
||||
{isSubmitting ? 'Adding' : 'Submit'}
|
||||
</Button>
|
||||
|
@ -16,7 +16,6 @@ import styles from '../styles/stylesheet';
|
||||
import { useAccounts } from '../context/AccountsContext';
|
||||
import { useWalletConnect } from '../context/WalletConnectContext';
|
||||
import { NetworksDataState, StackParamsList } from '../types';
|
||||
import { web3wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import { useNetworks } from '../context/NetworksContext';
|
||||
|
||||
const WCLogo = () => {
|
||||
@ -33,7 +32,7 @@ const HomeScreen = () => {
|
||||
|
||||
const { networksData, selectedNetwork, setSelectedNetwork, setNetworksData } =
|
||||
useNetworks();
|
||||
const { setActiveSessions } = useWalletConnect();
|
||||
const { setActiveSessions, web3wallet } = useWalletConnect();
|
||||
|
||||
const navigation =
|
||||
useNavigation<NativeStackNavigationProp<StackParamsList>>();
|
||||
@ -115,6 +114,7 @@ const HomeScreen = () => {
|
||||
setCurrentIndex,
|
||||
setNetworksData,
|
||||
setSelectedNetwork,
|
||||
web3wallet
|
||||
]);
|
||||
|
||||
const updateNetwork = (networkData: NetworksDataState) => {
|
||||
|
@ -19,7 +19,7 @@ import {
|
||||
rejectWalletConnectRequest,
|
||||
WalletConnectRequests,
|
||||
} from '../utils/wallet-connect/wallet-connect-requests';
|
||||
import { web3wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import { useWalletConnect } from '../context/WalletConnectContext';
|
||||
import { EIP155_SIGNING_METHODS } from '../utils/wallet-connect/EIP155Data';
|
||||
import { useNetworks } from '../context/NetworksContext';
|
||||
import { COSMOS_METHODS } from '../utils/wallet-connect/COSMOSData';
|
||||
@ -28,6 +28,7 @@ type SignRequestProps = NativeStackScreenProps<StackParamsList, 'SignRequest'>;
|
||||
|
||||
const SignRequest = ({ route }: SignRequestProps) => {
|
||||
const { networksData } = useNetworks();
|
||||
const {web3wallet} = useWalletConnect();
|
||||
|
||||
const requestSession = route.params.requestSessionData;
|
||||
const requestName = requestSession?.peer?.metadata?.name;
|
||||
@ -48,7 +49,7 @@ const SignRequest = ({ route }: SignRequestProps) => {
|
||||
const isCosmosSignDirect = useMemo(() => {
|
||||
const requestParams = route.params.requestEvent;
|
||||
|
||||
if (!requestParams) {
|
||||
if (!requestParams?.id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -58,7 +59,7 @@ const SignRequest = ({ route }: SignRequestProps) => {
|
||||
const isEthSendTransaction = useMemo(() => {
|
||||
const requestParams = route.params.requestEvent;
|
||||
|
||||
if (!requestParams) {
|
||||
if (!requestParams?.id) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -85,21 +86,13 @@ const SignRequest = ({ route }: SignRequestProps) => {
|
||||
return;
|
||||
}
|
||||
|
||||
if (requestAccount !== account) {
|
||||
setAccount(requestAccount);
|
||||
}
|
||||
if (requestMessage !== message) {
|
||||
setMessage(decodeURIComponent(requestMessage));
|
||||
}
|
||||
if (requestNamespace !== namespace) {
|
||||
setNamespace(requestNamespace);
|
||||
}
|
||||
if (requestChainId !== chainId) {
|
||||
setChainId(requestChainId);
|
||||
}
|
||||
setAccount(requestAccount);
|
||||
setMessage(decodeURIComponent(requestMessage));
|
||||
setNamespace(requestNamespace);
|
||||
setChainId(requestChainId);
|
||||
setIsLoading(false);
|
||||
},
|
||||
[account, message, navigation, namespace, chainId],
|
||||
[navigation],
|
||||
);
|
||||
|
||||
const sanitizePath = useCallback(
|
||||
|
@ -5,11 +5,10 @@ import { List, Text } from 'react-native-paper';
|
||||
import { getSdkError } from '@walletconnect/utils';
|
||||
|
||||
import { useWalletConnect } from '../context/WalletConnectContext';
|
||||
import { web3wallet } from '../utils/wallet-connect/WalletConnectUtils';
|
||||
import styles from '../styles/stylesheet';
|
||||
|
||||
export default function WalletConnect() {
|
||||
const { activeSessions, setActiveSessions } = useWalletConnect();
|
||||
const { web3wallet, activeSessions, setActiveSessions } = useWalletConnect();
|
||||
|
||||
const disconnect = async (sessionId: string) => {
|
||||
await web3wallet!.disconnectSession({
|
||||
@ -24,7 +23,7 @@ export default function WalletConnect() {
|
||||
useEffect(() => {
|
||||
const sessions = web3wallet?.getActiveSessions() || {};
|
||||
setActiveSessions(sessions);
|
||||
}, [setActiveSessions]);
|
||||
}, [web3wallet, setActiveSessions]);
|
||||
|
||||
return (
|
||||
<View>
|
||||
|
@ -5,6 +5,7 @@ const styles = StyleSheet.create({
|
||||
marginTop: 20,
|
||||
width: 150,
|
||||
alignSelf: 'center',
|
||||
marginBottom: 40
|
||||
},
|
||||
signLink: {
|
||||
alignItems: 'flex-end',
|
||||
@ -42,6 +43,7 @@ const styles = StyleSheet.create({
|
||||
},
|
||||
signButton: {
|
||||
marginTop: 20,
|
||||
marginBottom: 20,
|
||||
width: 150,
|
||||
alignSelf: 'center',
|
||||
},
|
||||
@ -143,6 +145,7 @@ const styles = StyleSheet.create({
|
||||
buttonContainer: {
|
||||
flexDirection: 'row',
|
||||
marginLeft: 20,
|
||||
marginTop: 10,
|
||||
marginBottom: 10,
|
||||
justifyContent: 'space-evenly',
|
||||
},
|
||||
@ -204,9 +207,9 @@ const styles = StyleSheet.create({
|
||||
},
|
||||
subHeading: {
|
||||
textAlign: 'center',
|
||||
fontWeight: 'bold',
|
||||
marginBottom: 10,
|
||||
marginTop: 10,
|
||||
fontSize: 20
|
||||
},
|
||||
centerText: {
|
||||
textAlign: 'center',
|
||||
@ -253,12 +256,30 @@ const styles = StyleSheet.create({
|
||||
balancePadding: {
|
||||
padding: 8,
|
||||
},
|
||||
noActiveSessions: { display: 'flex', alignItems: 'center', marginTop: 12 },
|
||||
disconnectSession: { display: 'flex', justifyContent: 'center' },
|
||||
sessionItem: { paddingLeft: 12, borderBottomWidth: 0.5 },
|
||||
sessionsContainer: { paddingLeft: 12, borderBottomWidth: 0.5 },
|
||||
noActiveSessions: {
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
marginTop: 20,
|
||||
marginBottom: 20,
|
||||
},
|
||||
disconnectSession: {
|
||||
display: 'flex',
|
||||
justifyContent: 'center',
|
||||
},
|
||||
sessionItem: {
|
||||
paddingLeft: 12,
|
||||
borderBottomWidth: 0.5,
|
||||
},
|
||||
sessionsContainer: {
|
||||
paddingLeft: 12,
|
||||
borderBottomWidth: 0.5,
|
||||
},
|
||||
walletConnectUriText: { padding: 10 },
|
||||
walletConnectLogo: { width: 24, height: 15, margin: 0 },
|
||||
walletConnectLogo: {
|
||||
width: 24,
|
||||
height: 15,
|
||||
margin: 0,
|
||||
},
|
||||
selectNetworkText: {
|
||||
fontWeight: 'bold',
|
||||
marginVertical: 10,
|
||||
@ -275,7 +296,11 @@ const styles = StyleSheet.create({
|
||||
padding: 8,
|
||||
},
|
||||
linkContainer: {
|
||||
paddingBottom: 72
|
||||
paddingBottom: 72,
|
||||
},
|
||||
networksButton: {
|
||||
marginTop: 12,
|
||||
marginBottom: 20,
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { PopulatedTransaction } from 'ethers';
|
||||
|
||||
import { SignClientTypes, SessionTypes } from '@walletconnect/types';
|
||||
import { Web3WalletTypes } from '@walletconnect/web3wallet';
|
||||
import { IWeb3Wallet, Web3WalletTypes } from '@walletconnect/web3wallet';
|
||||
import { EncodeObject } from '@cosmjs/proto-signing';
|
||||
|
||||
export type StackParamsList = {
|
||||
@ -129,4 +129,6 @@ export interface WalletConnectContextProps {
|
||||
setActiveSessions: (
|
||||
activeSessions: Record<string, SessionTypes.Struct>,
|
||||
) => void;
|
||||
web3wallet: IWeb3Wallet | undefined;
|
||||
setWeb3wallet: React.Dispatch<React.SetStateAction<IWeb3Wallet | undefined>>;
|
||||
}
|
||||
|
@ -1,3 +1,5 @@
|
||||
import { DENOM } from '@cerc-io/registry-sdk'
|
||||
|
||||
import { COSMOS_TESTNET_CHAINS } from './wallet-connect/COSMOSData';
|
||||
import { EIP155_CHAINS } from './wallet-connect/EIP155Data';
|
||||
|
||||
@ -10,10 +12,10 @@ export const DEFAULT_NETWORKS = [
|
||||
namespace: COSMOS,
|
||||
rpcUrl: process.env.REACT_APP_LACONICD_RPC_URL!,
|
||||
blockExplorerUrl: '',
|
||||
nativeDenom: 'photon',
|
||||
nativeDenom: DENOM,
|
||||
addressPrefix: 'laconic',
|
||||
coinType: '118',
|
||||
gasPrice: '0.01',
|
||||
gasPrice: '1',
|
||||
isDefault: true,
|
||||
},
|
||||
{
|
||||
|
@ -14,7 +14,7 @@ export async function createWeb3Wallet() {
|
||||
projectId: process.env.REACT_APP_WALLET_CONNECT_PROJECT_ID,
|
||||
});
|
||||
|
||||
web3wallet = await Web3Wallet.init({
|
||||
const web3wallet = await Web3Wallet.init({
|
||||
core,
|
||||
metadata: {
|
||||
name: 'Laconic Wallet',
|
||||
@ -23,9 +23,14 @@ export async function createWeb3Wallet() {
|
||||
icons: ['https://avatars.githubusercontent.com/u/92608123'],
|
||||
},
|
||||
});
|
||||
|
||||
return web3wallet;
|
||||
}
|
||||
|
||||
export async function web3WalletPair(params: { uri: string }) {
|
||||
export async function web3WalletPair(
|
||||
web3wallet: IWeb3Wallet,
|
||||
params: { uri: string },
|
||||
) {
|
||||
if (web3wallet) {
|
||||
return await web3wallet.core.pairing.pair({ uri: params.uri });
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ services:
|
||||
WALLET_CONNECT_ID: ${WALLET_CONNECT_ID}
|
||||
CERC_DEFAULT_GAS_PRICE: ${CERC_DEFAULT_GAS_PRICE:-0.025}
|
||||
CERC_GAS_ADJUSTMENT: ${CERC_GAS_ADJUSTMENT:-2}
|
||||
CERC_LACONICD_RPC_URL: ${CERC_LACONICD_RPC_URL:-https://laconicd.laconic.com}
|
||||
command: ["bash", "/scripts/run.sh"]
|
||||
volumes:
|
||||
- ../config/app/run.sh:/scripts/run.sh
|
||||
|
@ -9,11 +9,13 @@ echo "Using the following env variables:"
|
||||
echo "WALLET_CONNECT_ID: ${WALLET_CONNECT_ID}"
|
||||
echo "CERC_DEFAULT_GAS_PRICE: ${CERC_DEFAULT_GAS_PRICE}"
|
||||
echo "CERC_GAS_ADJUSTMENT: ${CERC_GAS_ADJUSTMENT}"
|
||||
echo "CERC_LACONICD_RPC_URL: ${CERC_LACONICD_RPC_URL}"
|
||||
|
||||
# Build with required env
|
||||
REACT_APP_WALLET_CONNECT_PROJECT_ID=$WALLET_CONNECT_ID \
|
||||
REACT_APP_DEFAULT_GAS_PRICE=$CERC_DEFAULT_GAS_PRICE \
|
||||
REACT_APP_GAS_ADJUSTMENT=$CERC_GAS_ADJUSTMENT \
|
||||
REACT_APP_LACONICD_RPC_URL=$CERC_LACONICD_RPC_URL \
|
||||
yarn build
|
||||
|
||||
http-server --proxy http://localhost:80? -p 80 /app/build
|
||||
|
@ -57,6 +57,9 @@ Instructions for running the `laconic-wallet-web` using [laconic-so](https://git
|
||||
# Gas adjustment (default: 2)
|
||||
# Reference: https://github.com/cosmos/cosmos-sdk/issues/16020
|
||||
CERC_GAS_ADJUSTMENT=
|
||||
|
||||
# RPC endpoint of laconicd node (default: https://laconicd.laconic.com)
|
||||
CERC_LACONICD_RPC_URL=
|
||||
```
|
||||
|
||||
## Start the deployment
|
||||
|
@ -1263,10 +1263,10 @@
|
||||
deepmerge "^3.2.0"
|
||||
hoist-non-react-statics "^3.3.0"
|
||||
|
||||
"@cerc-io/registry-sdk@^0.2.3":
|
||||
version "0.2.3"
|
||||
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fregistry-sdk/-/0.2.3/registry-sdk-0.2.3.tgz#73e955b4d49d7c97eea40c351bbc21f98bb330f9"
|
||||
integrity sha512-8fXRdyiTXn8WsJ8r3DCSBYzUBNEZYPPk5JGUrEmkGQhKOJr+ZeakN+2t6HrqEVB9IMYTJK9BtVLPA0KlaXILYA==
|
||||
"@cerc-io/registry-sdk@^0.2.5":
|
||||
version "0.2.5"
|
||||
resolved "https://git.vdb.to/api/packages/cerc-io/npm/%40cerc-io%2Fregistry-sdk/-/0.2.5/registry-sdk-0.2.5.tgz#9ca19fecb2923520dd6a19946c309ecb2ec780a2"
|
||||
integrity sha512-/KXAYf9gStaX/rRBMCEeDCexEIpTOFHeHzMK9B3xfCT+SyYZE9WC9GpX299LzBYJKKPsb0/JvnDfip9S1igJtA==
|
||||
dependencies:
|
||||
"@cosmjs/amino" "^0.28.1"
|
||||
"@cosmjs/crypto" "^0.28.1"
|
||||
|
Loading…
Reference in New Issue
Block a user