From 6d80f64a1083e0e8cfa5e53e518e5c782637af2c Mon Sep 17 00:00:00 2001
From: IshaVenikar <145848618+IshaVenikar@users.noreply.github.com>
Date: Fri, 19 Apr 2024 16:25:53 +0530
Subject: [PATCH] Implement Edit network form (#107)
* Add edit network form
* Set selected network when networks are updated
* Disable buttons and add spinner after submitting
* Display previous values in Edit network form
* Use error msgs form constants file
* Reset default networks on reset
---
src/App.tsx | 8 ++
src/components/Accounts.tsx | 15 ++++
src/context/NetworksContext.tsx | 21 +++--
src/screens/AddNetwork.tsx | 22 +++--
src/screens/EditNetwork.tsx | 148 ++++++++++++++++++++++++++++++++
src/screens/HomeScreen.tsx | 10 +--
src/styles/stylesheet.js | 4 +-
src/types.ts | 3 +
src/utils/accounts.ts | 4 +-
src/utils/constants.ts | 3 +
10 files changed, 213 insertions(+), 25 deletions(-)
create mode 100644 src/screens/EditNetwork.tsx
diff --git a/src/App.tsx b/src/App.tsx
index 5b8d70c..d08f201 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -28,6 +28,7 @@ import { EIP155_SIGNING_METHODS } from './utils/wallet-connect/EIP155Data';
import { getSignParamsMessage } from './utils/wallet-connect/helpers';
import ApproveTransaction from './screens/ApproveTransaction';
import AddNetwork from './screens/AddNetwork';
+import EditNetwork from './screens/EditNetwork';
import { COSMOS, EIP155 } from './utils/constants';
import { useNetworks } from './context/NetworksContext';
import { NETWORK_METHODS } from './utils/wallet-connect/common-data';
@@ -281,6 +282,13 @@ const App = (): React.JSX.Element => {
title: 'Add Network',
}}
/>
+
{
+
+ {
+ navigation.navigate('EditNetwork', {
+ selectedNetwork: selectedNetwork!,
+ });
+ }}>
+
+ Edit Network
+
+
+
+
{!selectedNetwork!.isDefault && (
void;
networksData: NetworksDataState[];
setNetworksData: React.Dispatch>;
networkType: string;
@@ -16,8 +14,6 @@ const NetworksContext = createContext<{
React.SetStateAction
>;
}>({
- currentIndex: 0,
- setCurrentIndex: () => {},
networksData: [],
setNetworksData: () => {},
networkType: '',
@@ -33,7 +29,6 @@ const useNetworks = () => {
const NetworksProvider = ({ children }: { children: any }) => {
const [networksData, setNetworksData] = useState([]);
- const [currentIndex, setCurrentIndex] = useState(0);
const [networkType, setNetworkType] = useState(EIP155);
const [selectedNetwork, setSelectedNetwork] = useState();
@@ -50,14 +45,22 @@ const NetworksProvider = ({ children }: { children: any }) => {
setSelectedNetwork(retrievedNewNetworks[0]);
};
- fetchData();
- }, []);
+ if (networksData.length === 0) {
+ fetchData();
+ }
+ }, [networksData]);
+
+ useEffect(() => {
+ setSelectedNetwork(prevSelectedNetwork => {
+ return networksData.find(
+ networkData => networkData.networkId === prevSelectedNetwork?.networkId,
+ );
+ });
+ }, [networksData]);
return (
{
const { setNetworksData } = useNetworks();
const [namespace, setNamespace] = useState(EIP155);
+ const [isLoading, setIsLoading] = useState(false);
const networksFormDataSchema =
namespace === EIP155 ? ethNetworkDataSchema : cosmosNetworkDataSchema;
@@ -114,6 +118,7 @@ const AddNetwork = () => {
const submit = useCallback(
async (data: z.infer) => {
+ setIsLoading(true);
const newNetworkData = {
...data,
namespace,
@@ -176,6 +181,7 @@ const AddNetwork = () => {
),
]);
+ setIsLoading(false);
navigation.navigate('Laconic');
},
[navigation, namespace, setNetworksData],
@@ -358,8 +364,12 @@ const AddNetwork = () => {
/>
>
)}
-