From 6645811fd569f3264494fb06bb099a9983d0f0d9 Mon Sep 17 00:00:00 2001 From: yo1110 Date: Wed, 9 Aug 2023 22:00:56 +0700 Subject: [PATCH 1/2] feat: add UPP btn for Gno network (#664) * feat: add UPP btn for Gno network * chore: update networkjson * fix: force network on UPP page * chore: fix lint * fix: use local network for gno-dev * fix: handle sidebar button = feature --- networks.json | 12 ++++++++---- packages/components/navigation/Sidebar.tsx | 15 ++++++++------- packages/networks/gno-dev/index.ts | 6 +++++- packages/networks/gno-teritori/index.ts | 6 +++++- packages/networks/teritori-testnet/index.ts | 1 + packages/networks/teritori/index.ts | 1 + packages/networks/types.ts | 1 + 7 files changed, 29 insertions(+), 13 deletions(-) diff --git a/networks.json b/networks.json index 3f8be63d81..e1faf8510b 100644 --- a/networks.json +++ b/networks.json @@ -8,7 +8,8 @@ "features": [ "NFTMarketplace", "Organizations", - "SocialFeed" + "SocialFeed", + "UPP" ], "walletUrlForStaking": "https://explorer.teritori.com/teritori/staking", "currencies": [ @@ -134,7 +135,8 @@ "features": [ "NFTMarketplace", "Organizations", - "SocialFeed" + "SocialFeed", + "UPP" ], "currencies": [ { @@ -570,7 +572,8 @@ "icon": "icons/networks/gno.svg", "features": [ "Organizations", - "SocialFeed" + "SocialFeed", + "UPP" ], "currencies": [ { @@ -604,7 +607,8 @@ "icon": "icons/networks/gno.svg", "features": [ "Organizations", - "SocialFeed" + "SocialFeed", + "UPP" ], "currencies": [ { diff --git a/packages/components/navigation/Sidebar.tsx b/packages/components/navigation/Sidebar.tsx index 7d9b90bad4..50fe075f04 100644 --- a/packages/components/navigation/Sidebar.tsx +++ b/packages/components/navigation/Sidebar.tsx @@ -1,6 +1,6 @@ import { useRoute } from "@react-navigation/native"; import React from "react"; -import { View, StyleSheet, Pressable, FlatList } from "react-native"; +import { FlatList, Pressable, StyleSheet, View } from "react-native"; import Animated, { useAnimatedStyle, withSpring, @@ -17,17 +17,17 @@ import addSVG from "../../../assets/icons/add-circle.svg"; import chevronRightSVG from "../../../assets/icons/chevron-right.svg"; import { useSidebar } from "../../context/SidebarProvider"; import { useNSUserInfo } from "../../hooks/useNSUserInfo"; -import { useSelectedNetworkKind } from "../../hooks/useSelectedNetwork"; +import { useSelectedNetworkInfo } from "../../hooks/useSelectedNetwork"; import useSelectedWallet from "../../hooks/useSelectedWallet"; -import { NetworkKind } from "../../networks"; +import { NetworkFeature, NetworkKind } from "../../networks"; import { useAppNavigation } from "../../utils/navigation"; import { neutral17, neutral33 } from "../../utils/style/colors"; import { fontBold16, fontBold9 } from "../../utils/style/fonts"; import { - smallSidebarWidth, fullSidebarWidth, - layout, headerHeight, + layout, + smallSidebarWidth, } from "../../utils/style/layout"; import { SVG } from "../SVG"; import { Separator } from "../Separator"; @@ -55,7 +55,8 @@ const SidebarSeparator: React.FC = () => { export const Sidebar: React.FC = () => { const selectedWallet = useSelectedWallet(); const userInfo = useNSUserInfo(selectedWallet?.userId); - const selectedNetworkKind = useSelectedNetworkKind(); + const selectedNetworkInfo = useSelectedNetworkInfo(); + const selectedNetworkKind = selectedNetworkInfo?.kind; const connected = selectedWallet?.connected; const navigation = useAppNavigation(); const { name: currentRouteName } = useRoute(); @@ -153,7 +154,7 @@ export const Sidebar: React.FC = () => { /> - {selectedNetworkKind === NetworkKind.Cosmos && + {selectedNetworkInfo?.features.includes(NetworkFeature.UPP) && connected && userInfo.metadata && ( Date: Wed, 9 Aug 2023 23:08:57 +0200 Subject: [PATCH 2/2] fix: sync selected wallet with selected network (#667) Signed-off-by: Norman Meier --- App.tsx | 30 +++++++++++++++++++++++++++--- packages/store/slices/settings.ts | 4 ++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/App.tsx b/App.tsx index eadf16ff94..3f370fe12e 100644 --- a/App.tsx +++ b/App.tsx @@ -8,7 +8,7 @@ import { NavigationContainer } from "@react-navigation/native"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { StatusBar } from "expo-status-bar"; import { MetaMaskProvider } from "metamask-react"; -import React from "react"; +import React, { memo, useEffect } from "react"; import { useForm, FormProvider } from "react-hook-form"; import { Platform, View } from "react-native"; import { MenuProvider } from "react-native-popup-menu"; @@ -23,8 +23,14 @@ import { SearchBarContextProvider } from "./packages/context/SearchBarProvider"; import { TNSMetaDataListContextProvider } from "./packages/context/TNSMetaDataListProvider"; import { TNSContextProvider } from "./packages/context/TNSProvider"; import { TransactionModalsProvider } from "./packages/context/TransactionModalsProvider"; -import { WalletsProvider } from "./packages/context/WalletsProvider"; -import { store } from "./packages/store/store"; +import { + WalletsProvider, + useWallets, +} from "./packages/context/WalletsProvider"; +import { useSelectedNetworkId } from "./packages/hooks/useSelectedNetwork"; +import useSelectedWallet from "./packages/hooks/useSelectedWallet"; +import { setSelectedWalletId } from "./packages/store/slices/settings"; +import { store, useAppDispatch } from "./packages/store/store"; import { linking } from "./packages/utils/navigation"; const queryClient = new QueryClient(); @@ -58,6 +64,7 @@ export default function App() { + @@ -125,3 +132,20 @@ class ErrorBoundary extends React.Component { return this.props.children; } } + +const WalletSyncer: React.FC = memo(() => { + const selectedWallet = useSelectedWallet(); + const selectedNetworkId = useSelectedNetworkId(); + const { wallets } = useWallets(); + const dispatch = useAppDispatch(); + useEffect(() => { + if (!selectedWallet || selectedWallet.networkId !== selectedNetworkId) { + dispatch( + setSelectedWalletId( + wallets.find((w) => w.networkId === selectedNetworkId)?.id + ) + ); + } + }, [dispatch, selectedNetworkId, selectedWallet, wallets]); + return null; +}); diff --git a/packages/store/slices/settings.ts b/packages/store/slices/settings.ts index 745bf48d4a..e3f9850543 100644 --- a/packages/store/slices/settings.ts +++ b/packages/store/slices/settings.ts @@ -4,7 +4,7 @@ import { RootState } from "../store"; interface Settings { selectedNetworkId: string; - selectedWalletId: string; + selectedWalletId: string | undefined; NFTStorageAPI: string; isKeplrConnected: boolean; isAdenaConnected: boolean; @@ -52,7 +52,7 @@ const settingsSlice = createSlice({ setSelectedNetworkId: (state, action: PayloadAction) => { state.selectedNetworkId = action.payload; }, - setSelectedWalletId: (state, action: PayloadAction) => { + setSelectedWalletId: (state, action: PayloadAction) => { state.selectedWalletId = action.payload; }, setIsKeplrConnected: (state, action: PayloadAction) => {