import React, { useContext, useEffect, useRef } from "react"; import { getLayout } from "../src/layouts/AppLayout"; import UIContext from "../src/core/providers/UIProvider/context"; import { Heading, Text, Button, Stack, ButtonGroup, Spacer, Radio, RadioGroup, UnorderedList, ListItem, Fade, chakra, useBoolean, Flex, IconButton, Tooltip, } from "@chakra-ui/react"; import StepProgress from "../src/components/StepProgress"; import { ArrowLeftIcon, ArrowRightIcon } from "@chakra-ui/icons"; import Scrollable from "../src/components/Scrollable"; import AnalyticsContext from "../src/core/providers/AnalyticsProvider/context"; import NewSubscription from "../src/components/NewSubscription"; import StreamEntry from "../src/components/StreamEntry"; import SubscriptionsList from "../src/components/SubscriptionsList"; import { useSubscriptions } from "../src/core/hooks"; import router from "next/router"; import { FaFilter } from "react-icons/fa"; const Welcome = () => { console.count("render welcome!"); const { subscriptionsCache } = useSubscriptions(); const ui = useContext(UIContext); const { mixpanel, isLoaded, MIXPANEL_PROPS } = useContext(AnalyticsContext); const [profile, setProfile] = React.useState(); const [showSubscriptionForm, setShowSubscriptionForm] = useBoolean(true); useEffect(() => { if (typeof window !== "undefined") { document.title = `Welcome to moonstream.to!`; } }, []); const progressButtonCallback = (index) => { ui.setOnboardingStep(index); }; useEffect(() => { if (profile && isLoaded) { mixpanel.people.set({ [`${MIXPANEL_PROPS.USER_SPECIALITY}`]: profile, }); } }, [profile, MIXPANEL_PROPS, isLoaded, mixpanel]); const SubscriptonCreatedCallback = () => { setShowSubscriptionForm.off(); }; const scrollRef = useRef(); const handleNextClick = () => { if (ui.onboardingStep < ui.onboardingSteps.length - 1) { ui.setOnboardingStep(ui.onboardingStep + 1); scrollRef?.current?.scrollIntoView(); } else { ui.setisOnboardingComplete(true); router.push("/stream"); } }; return ( {ui.onboardingStep === 0 && ( Greetings traveller! {" "} We are very excited to see you onboard! Moonstream is a product which helps anyone participate in decentralized finance. From the most sophisticated flash arbitrageurs to people looking for yield from currency that would otherwise lie dormant in their exchange accounts. Moonstream is ment to give you critical insights needed to succeed in your crypto quest! How does Moonstream work? We run nodes {" "} - Now get most precise and accurate data you can just query our database. You {`don't`} need to maintain your node, and still have data that miners have access to! We crawl data {" "} We analyze millions of transactions, data, smart contract code to link all them together We provide data {" "} We allow you to fetch data trough the website or trough API We analyze data {" "} We find most interesting stuff and show it to you! UI 101? On the left side corner there is sidebar that you can use to navigate across the website. There are following views you can navigate to: Subscriptions {" "} - Use this screen to set up addresses you would like to monitor to.{" "} NB: Without setting up subscriptions moonstream will have quite empty feel!{" "} {" "} No worries, we will help you to set up your subscriptions in the next steps! Stream {" "} This view is somewhat similar to a bank statement where you can define time range and see what happened in that time over your subscriptions. In next steps we will show how you can apply filters to it! Stream Entry {" "} You can see detailed view of stream cards with very specific and essential data, like methods called in smart contracts etc!! Analytics {" "} This section is under construction yet. Soon you will be able to create your dashboard with data of your interest. We will really appretiate if you visit that section, and fill up form describing what analytical tools you would love to see there! Tell us more about your needs? In order to fetch best possible experience, we would like to know some details about you Please tell us what profile describes you best?{" "} This is purely analytical data, you can change it anytime later I am trading crypto currency I represent investment fund I am developer )} {ui.onboardingStep === 1 && ( Subscriptions Subscriptions is essential tool of Moonstream. We gather data for you based on addresses you have subscribed for.
Subscribe to any addres which you are interested in and they will become part of your stream! Color - you can define color to easily identify this subscription in your stream Address - thing you subscribe to Label - Its good idea to use human readible name that represents address Source - In Alpha we support only Ethereum blockchain, more sources are coming soon!
{subscriptionsCache.data.subscriptions.length > 0 && !subscriptionsCache.isLoading && ( <> {" "} You already have some subscriptions set up )} {showSubscriptionForm && ( <> {`Let's add new subscription!`} )} {!showSubscriptionForm && ( )}
)} {ui.onboardingStep === 2 && ( Stream We are almost done!
{`Stream is where you can read data you've subscribed for. Here you have different cards for different subscription types.`}
If card has some extra details - there will be orange button on right hand side inviting you to see more!
Below is typical card for ethereum blockchain event. Useful information right on the card: Hash - unique ID of the event From - sender address. If it is one of your subscription addresses - will appear in color and with label{" "} To - receiver address. If it is one of your subscription addresses - will appear in color and with label{" "} Nonce - Counter how many transactions address has sent. It also determines sequence of transaction!{" "} Gas Price - this is how much ether is being paid per gas unit Gas - Ammount of gas this event consumes
} /> Applying filters You can apply various filters by clicking filter menu button
{`Right now you can use it to select address from and to, we are adding more complex queries soon, stay tuna! `}
)}
); }; Welcome.getLayout = getLayout; export default Welcome;