diff --git a/networks.json b/networks.json index 2cadd0143d..b11d4eab41 100644 --- a/networks.json +++ b/networks.json @@ -651,6 +651,7 @@ "daoProposalSinglePkgPath": "gno.land/p/demo/teritori/dao_proposal_single_v4", "daoInterfacesPkgPath": "gno.land/p/demo/teritori/dao_interfaces_v5", "daoCorePkgPath": "gno.land/p/demo/teritori/dao_core_v4", - "gnowebURL": "https://testnet.gno.teritori.com" + "gnowebURL": "https://testnet.gno.teritori.com", + "faucetURL": "https://testnet.gno.teritori.com:5050/?toaddr=$addr" } ] diff --git a/packages/components/hub/HubIntro.tsx b/packages/components/hub/HubIntro.tsx index da012e8632..7086ea3829 100644 --- a/packages/components/hub/HubIntro.tsx +++ b/packages/components/hub/HubIntro.tsx @@ -1,10 +1,13 @@ +import axios from "axios"; import React, { useState } from "react"; import { View } from "react-native"; import { ProfileButton } from "./ProfileButton"; import logoSVG from "../../../assets/logos/logo.svg"; +import { useFeedbacks } from "../../context/FeedbacksProvider"; import { useAreThereWallets } from "../../hooks/useAreThereWallets"; import useSelectedWallet from "../../hooks/useSelectedWallet"; +import { getNetwork, NetworkKind } from "../../networks"; import { MyNFTs } from "../../screens/WalletManager/MyNFTs"; import { WalletDashboardHeader } from "../../screens/WalletManager/WalletDashboardHeader"; import { Overview } from "../../screens/WalletManager/components/Overview"; @@ -14,8 +17,10 @@ import { FullWidthSeparator } from "../FullWidthSeparator"; import { Quests } from "../Quests"; import { SVG } from "../SVG"; import { Section } from "../Section"; +import { PrimaryButton } from "../buttons/PrimaryButton"; import { MainConnectWalletButton } from "../connectWallet/MainConnectWalletButton"; import { UserAvatarWithFrame } from "../images/AvatarWithFrame"; +import { SpacerColumn } from "../spacer"; import { Tabs } from "../tabs/Tabs"; const walletsManagerTabItems = { @@ -45,6 +50,8 @@ const ConnectedIntro: React.FC = () => { + +
@@ -68,6 +75,45 @@ const ConnectedIntro: React.FC = () => { ); }; +const FaucetButton: React.FC = () => { + const selectedWallet = useSelectedWallet(); + const network = getNetwork(selectedWallet?.networkId); + const { wrapWithFeedback } = useFeedbacks(); + if ( + network?.kind !== NetworkKind.Gno || + !network.faucetURL || + !selectedWallet + ) { + return null; + } + return ( + <> + + { + if (!network.faucetURL) { + throw new Error("No faucet for this network"); + } + const res = await axios.get( + network.faucetURL.replace("$addr", selectedWallet.address) + ); + if (res.status !== 200 || res.data !== "faucet success") { + throw new Error(res.data || "Unexpected error"); + } + }, + { + title: "Success", + message: "500 GNOTs have been sent to your address", + } + )} + /> + + ); +}; + const DisconnectedIntro: React.FC = () => { return (