MCPcopy Create free account
hub / github.com/Modulus-Labs/RockyBot / App

Function App

front-end/src/App.tsx:46–530  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

44}
45
46function App() {
47
48 // --- For header ---
49 const [value, setValue] = useState<number>(0);
50 const [numDaysAlive, setNumDaysAlive] = useState<number>(0);
51 const [percentChange, setPercentChange] = useState<number>(0);
52
53 // --- For middle section ---
54 const [rockyStatusData, setRockyStatusData] = useState<RockyGraphData[]>([]);
55 const [actionListData, setActionListData] = useState<ActionContributionListData[]>([]);
56 const [contributionListData, setContributionListData] = useState<ActionContributionListData[]>([]);
57
58 // --- For wallet/donation stuff ---
59 const [donateValue, setDonateValue] = useState<number>(0.001);
60 const [donateType, setDonateType] = useState<DonationToken>("WETH");
61 const [walletAddr, setWalletAddr] = useState<string>("");
62
63 // --- Modal state variables ---
64 const [modalIsOpen, setModalIsOpen] = useState<boolean>(false);
65 const [modalText, setModalText] = useState<string>("");
66 const [modalDismissVisible, setModalDismissVisible] = useState<boolean>(true);
67
68 // --- Firebase storage ---
69 const firebaseDbRef = useRef<Firestore | null>(null);
70
71 useEffect(useCallback(() => {
72 const app = initializeApp(firebaseConfig);
73 const db = getFirestore(app);
74 firebaseDbRef.current = db;
75 loadDonationData();
76 loadActionData();
77 loadNetWorth();
78 }, []), []);
79
80 // --- Data loading ---
81 const compareDonations = (d1: RockyDonationsDocument, d2: RockyDonationsDocument): number => {
82 // --- First convert to "native" units ---
83 const d1HumanAmt = convertToHumanUnits(parseFloat(d1.amount), d1.token);
84 const d2HumanAmt = convertToHumanUnits(parseFloat(d2.amount), d2.token);
85 // --- Convert into equivalent USDC amounts ---
86 const d1USDCAmt = d1.token === "USDC" ? d1HumanAmt : d1HumanAmt * WETH_USDC_CONVERSION_RATE;
87 const d2USDCAmt = d2.token === "USDC" ? d2HumanAmt : d2HumanAmt * WETH_USDC_CONVERSION_RATE;
88 return d1USDCAmt > d2USDCAmt ? -1 : 1;
89 }
90
91 const loadDonationData = () => {
92 if (firebaseDbRef.current != null) {
93 getDocs(collection(firebaseDbRef.current, "rocky_donations"))
94 .then((result) => {
95
96 // --- Sort by raw data first ---
97 const rockyDonationsList: RockyDonationsDocument[] = result.docs.map((doc) => {
98 return (doc.data() as RockyDonationsDocument);
99 });
100 rockyDonationsList.sort(compareDonations);
101
102 // --- To print out a UNIQUE list of all of the people who have donated ---
103 const contentList = rockyDonationsList.map((rawDonationEntry) => {

Callers

nothing calls this directly

Calls 5

roundNumberFunction · 0.90
truncateAddrFunction · 0.90
loadDonationDataFunction · 0.85
loadActionDataFunction · 0.85
loadNetWorthFunction · 0.85

Tested by

no test coverage detected