diff --git a/app/app.go b/app/app.go index 1027559..1efb45b 100644 --- a/app/app.go +++ b/app/app.go @@ -34,37 +34,19 @@ type App struct { titleTemplate *template.Template Series dalle.Series `json:"series"` names []types.Name - dallesCache map[string]*dalle.DalleDress + dalleCache map[string]*dalle.DalleDress } func NewApp() *App { a := App{ - databases: make(map[string][]string), + databases: make(map[string][]string), + dalleCache: make(map[string]*dalle.DalleDress), } // it's okay if it's not found _ = a.session.Load() var err error - if a.Series, err = a.LoadSeries(); err != nil { - logger.Fatal(err) - } - logger.Info("Loaded series:", a.Series.Suffix) - - for _, db := range dalle.DatabaseNames { - if a.databases[db] == nil { - if lines, err := a.toLines(db); err != nil { - logger.Fatal(err) - } else { - a.databases[db] = lines - for i := 0; i < len(a.databases[db]); i++ { - a.databases[db][i] = strings.Replace(a.databases[db][i], "v0.1.0,", "", -1) - } - } - } - } - logger.Info("Loaded", len(dalle.DatabaseNames), "databases") - if a.promptTemplate, err = template.New("prompt").Parse(promptTemplate); err != nil { logger.Fatal("could not create prompt template:", err) } @@ -82,6 +64,8 @@ func NewApp() *App { } logger.Info("Compiled templates") + a.ReloadDatabases() + return &a } @@ -90,9 +74,35 @@ func (a App) String() string { return string(bytes) } +func (a *App) ReloadDatabases() { + a.Series = dalle.Series{} + a.databases = make(map[string][]string) + + var err error + if a.Series, err = a.LoadSeries(); err != nil { + logger.Fatal(err) + } + logger.Info("Loaded series:", a.Series.Suffix) + + for _, db := range dalle.DatabaseNames { + if a.databases[db] == nil { + if lines, err := a.toLines(db); err != nil { + logger.Fatal(err) + } else { + a.databases[db] = lines + for i := 0; i < len(a.databases[db]); i++ { + a.databases[db][i] = strings.Replace(a.databases[db][i], "v0.1.0,", "", -1) + } + } + } + } + logger.Info("Loaded", len(dalle.DatabaseNames), "databases") +} + func (a *App) toLines(db string) ([]string, error) { filename := "./databases/" + db + ".csv" lines := file.AsciiFileToLines(filename) + lines = lines[1:] // skip header var err error if len(lines) == 0 { err = fmt.Errorf("could not load %s", filename) @@ -201,7 +211,7 @@ func (a *App) HandleLines() { // msg := fmt.Sprintf("Content policy violation, skipping retry for address: %s Error: %s", address, err) // logger.Error(msg) // return - // } else + // } else if strings.Contains(err.Error(), "seed length is less than 66") { msg := fmt.Sprintf("Invalid address, skipping retry for address: %s Error: %s", address, err) logger.Error(msg) @@ -247,7 +257,7 @@ func (a *App) LoadSeries() (dalle.Series, error) { return dalle.Series{}, err } - s.Suffix = strings.ReplaceAll(s.Suffix, " ", "-") + s.Suffix = strings.Trim(strings.ReplaceAll(s.Suffix, " ", "-"), "-") s.SaveSeries(filepath.Join("./output/series", s.Suffix+".json"), 0) return s, nil } diff --git a/app/app_state.go b/app/app_state.go index 09602e2..e3ac80b 100644 --- a/app/app_state.go +++ b/app/app_state.go @@ -1,37 +1,34 @@ package app -func (a *App) GetLastRoute() string { - return a.GetSession().LastRoute -} - -func (a *App) GetLastTab() string { - return a.GetSession().LastTab -} - -func (a *App) GetLastAddress() string { - return a.GetSession().LastAddress -} - -func (a *App) GetLastSeries() string { - return a.GetSession().LastSeries -} - -func (a *App) SetLastRoute(route string) { - a.GetSession().LastRoute = route - a.GetSession().Save() -} - -func (a *App) SetLastTab(tab string) { - a.GetSession().LastTab = tab - a.GetSession().Save() -} - -func (a *App) SetLastAddress(addr string) { - a.GetSession().LastAddress = addr - a.GetSession().Save() -} - -func (a *App) SetLastSeries(series string) { - a.GetSession().LastSeries = series +func (a *App) GetLast(which string) string { + switch which { + case "route": + return a.GetSession().LastRoute + case "tab": + return a.GetSession().LastTab + case "address": + return a.GetSession().LastAddress + case "series": + return a.GetSession().LastSeries + } + return "Unknown" +} + +func (a *App) SetLast(which, value string) { + reload := false + switch which { + case "route": + a.GetSession().LastRoute = value + case "tab": + a.GetSession().LastTab = value + case "address": + a.GetSession().LastAddress = value + case "series": + a.GetSession().LastSeries = value + reload = true + } a.GetSession().Save() + if reload { + a.ReloadDatabases() + } } diff --git a/app/backend.go b/app/backend.go index d334aa3..634f5f5 100644 --- a/app/backend.go +++ b/app/backend.go @@ -16,7 +16,15 @@ import ( var dalleCacheMutex sync.Mutex func (a *App) MakeDalleDress(addressIn string) (*dalle.DalleDress, error) { + dalleCacheMutex.Lock() + defer dalleCacheMutex.Unlock() + if a.dalleCache[addressIn] != nil { + logger.Info("Returning cached dalle for", addressIn) + return a.dalleCache[addressIn], nil + } + address := addressIn + logger.Info("Making dalle for", addressIn) if strings.HasSuffix(address, ".eth") { opts := sdk.NamesOptions{ Terms: []string{address}, @@ -29,6 +37,7 @@ func (a *App) MakeDalleDress(addressIn string) (*dalle.DalleDress, error) { } } } + logger.Info("Resolved", addressIn) parts := strings.Split(address, ",") seed := parts[0] + reverse(parts[0]) @@ -39,16 +48,10 @@ func (a *App) MakeDalleDress(addressIn string) (*dalle.DalleDress, error) { seed = seed[2:66] } - dalleCacheMutex.Lock() - defer dalleCacheMutex.Unlock() - - if a.dallesCache == nil { - a.dallesCache = make(map[string]*dalle.DalleDress) - } fn := validFilename(address) - if a.dallesCache[fn] != nil { + if a.dalleCache[fn] != nil { logger.Info("Returning cached dalle for", addressIn) - return a.dallesCache[fn], nil + return a.dalleCache[fn], nil } dd := dalle.DalleDress{ @@ -86,7 +89,9 @@ func (a *App) MakeDalleDress(addressIn string) (*dalle.DalleDress, error) { dd.EnhancedPrompt = file.AsciiFileToString(fn) } - a.dallesCache[dd.Filename] = &dd + a.dalleCache[dd.Filename] = &dd + a.dalleCache[addressIn] = &dd + return &dd, nil } diff --git a/app/files.go b/app/files.go index d8ec561..c184c8c 100644 --- a/app/files.go +++ b/app/files.go @@ -6,8 +6,8 @@ import ( "github.com/TrueBlocks/trueblocks-dalledress/pkg/utils" ) -func (a *App) GetFilelist() []string { - folder := filepath.Join("./output/series") +func (a *App) GetFilelist(baseFolder string) []string { + folder := filepath.Join(baseFolder) if list, err := utils.Listing(folder); err != nil { return []string{err.Error()} } else { diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 01f7c2e..7835a9b 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,17 +1,37 @@ -import React from "react"; +import React, { useEffect } from "react"; import { AppShell, Text } from "@mantine/core"; import Aside from "./components/global/Aside"; import Header from "./components/global/Header"; import Navbar from "./components/global/Navbar"; import Routes from "./components/global/Routes"; import classes from "@/App.module.css"; +import { EventsOn, EventsOff, EventsEmit } from "../wailsjs/runtime"; function App() { + const [showHelp, setShowHelp] = React.useState(true); + + const sendMessage = () => { + EventsEmit("toggleHelp", "Hello from SenderComponent"); + setShowHelp(!showHelp); + }; + + useEffect(() => { + const messageListener = (message: string) => { + console.log("Received in help component:", message); + }; + + EventsOn("toggleHelp", messageListener); + + return () => { + EventsOff("toggleHelp"); + }; + }, [showHelp]); + return ( @@ -28,6 +48,7 @@ function App() { time / date / currently opened file + {" "} ); diff --git a/frontend/src/components/ImageDisplay.tsx b/frontend/src/components/ImageDisplay.tsx index c1f29bd..c7c7b14 100644 --- a/frontend/src/components/ImageDisplay.tsx +++ b/frontend/src/components/ImageDisplay.tsx @@ -23,8 +23,8 @@ export const ImageDisplay = ({ address, loading }: { address: string; loading: b return (
- {title} - {address} + {title} + {address}
); }; diff --git a/frontend/src/components/StringTable.tsx b/frontend/src/components/StringTable.tsx index 02ca1e7..d22629b 100644 --- a/frontend/src/components/StringTable.tsx +++ b/frontend/src/components/StringTable.tsx @@ -1,5 +1,8 @@ import React, { useState } from "react"; import { Table, Checkbox } from "@mantine/core"; +import { Link, useLocation } from "wouter"; +import { Anchor } from "@mantine/core"; +import { SetLast } from "@gocode/app/App"; export interface DataItem { id: number; @@ -12,6 +15,16 @@ interface StringTableProps { const StringTable: React.FC = ({ data }) => { const [selectedIds, setSelectedIds] = useState([]); + const [location, setLocation] = useLocation(); + + const handleSeriesClick = async (seriesName: string) => { + try { + await SetLast("series", seriesName); + setLocation("/dalle"); + } catch (error) { + console.error("Error updating data:", error); + } + }; const handleCheckboxChange = (id: number) => { setSelectedIds((prevSelectedIds) => @@ -33,7 +46,17 @@ const StringTable: React.FC = ({ data }) => { handleCheckboxChange(item.id)} /> - {item.value} + + { + e.preventDefault(); + handleSeriesClick(item.value); + }} + > + {item.value} + + )); diff --git a/frontend/src/components/global/Aside.tsx b/frontend/src/components/global/Aside.tsx index 191ccf8..f15a0a2 100644 --- a/frontend/src/components/global/Aside.tsx +++ b/frontend/src/components/global/Aside.tsx @@ -1,4 +1,5 @@ -import React from "react"; +import React, { useEffect } from "react"; +import { EventsOn, EventsOff } from "../../../wailsjs/runtime"; import { Text } from "@mantine/core"; function Aside() { diff --git a/frontend/src/components/global/Menu.tsx b/frontend/src/components/global/Menu.tsx index 5e1d1bb..a6ac1d8 100644 --- a/frontend/src/components/global/Menu.tsx +++ b/frontend/src/components/global/Menu.tsx @@ -2,19 +2,19 @@ import React, { ReactNode, useEffect, useState } from "react"; import { NavLink } from "@mantine/core"; import { IconHome, IconSettings, IconTag, IconList, IconSpider } from "@tabler/icons-react"; import { Link, useRoute } from "wouter"; -import { GetLastRoute, SetLastRoute } from "@gocode/app/App"; +import { GetLast, SetLast } from "@gocode/app/App"; function Menu() { const [activeRoute, setActiveRoute] = useState("/"); useEffect(() => { - const lastRoute = (GetLastRoute() || "/").then((route) => { + const lastRoute = (GetLast("route") || "/").then((route) => { setActiveRoute(route); }); }, []); const handleRouteChange = (route: string) => { - SetLastRoute(route); + SetLast("route", route); setActiveRoute(route); }; diff --git a/frontend/src/components/global/Routes.tsx b/frontend/src/components/global/Routes.tsx index d9eb65d..a8f89a0 100644 --- a/frontend/src/components/global/Routes.tsx +++ b/frontend/src/components/global/Routes.tsx @@ -2,13 +2,13 @@ import React, { useEffect } from "react"; import { Route, Switch, useLocation } from "wouter"; import classes from "@/App.module.css"; import { DalleView, NamesView, HomeView, SeriesView, SettingsView } from "@/views"; -import { GetLastRoute } from "@gocode/app/App"; +import { GetLast } from "@gocode/app/App"; export const Routes = () => { const [, setLocation] = useLocation(); useEffect(() => { - const lastRoute = (GetLastRoute() || "/").then((route) => { + const lastRoute = (GetLast("route") || "/").then((route) => { setLocation(route); }); }, [setLocation]); diff --git a/frontend/src/views/Dalle/DalleView.tsx b/frontend/src/views/Dalle/DalleView.tsx index f4ad273..a3f6381 100644 --- a/frontend/src/views/Dalle/DalleView.tsx +++ b/frontend/src/views/Dalle/DalleView.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { Stack, Title, Text, Select, Paper, Grid, Button, Group } from "@mantine/core"; +import { Stack, Title, Paper, Grid, Button, Group } from "@mantine/core"; import classes from "@/App.module.css"; import { View, ViewStatus } from "@/components/view"; import EditableSelect from "@/components/EditableSelect"; @@ -13,12 +13,8 @@ import { GetEnhanced, GetFilename, GenerateImage, - GetLastTab, - GetLastAddress, - GetLastSeries, - SetLastTab, - SetLastAddress, - SetLastSeries, + GetLast, + SetLast, Save, } from "@gocode/app/App"; import { ImageDisplay } from "@/components/ImageDisplay"; @@ -37,6 +33,7 @@ export function DalleView() { const [activeTab, setActiveTab] = useState("json"); const [dialogOpened, setDialogOpened] = useState(false); const [success, setSuccess] = useState(false); + const gridWidth = 8; const handleOpenDialog = (result: boolean) => { setSuccess(result); @@ -60,10 +57,10 @@ export function DalleView() { // On first load of the view, set the most recently viewed tab and address useEffect(() => { - GetLastTab().then((lastTab: string) => { + GetLast("tab").then((lastTab: string) => { setActiveTab(lastTab); }); - GetLastAddress().then((lastAddress: string) => { + GetLast("address").then((lastAddress: string) => { if (lastAddress && lastAddress.length > 0) { setAddress(lastAddress); } else { @@ -75,7 +72,7 @@ export function DalleView() { // When address changes, update all the data useEffect(() => { if (address && !imageLoading) { - SetLastAddress(address); + SetLast("address", address); GetJson(address).then((value: string) => { setJson(value); }); @@ -103,7 +100,7 @@ export function DalleView() { const handleTabChange = (value: string | null) => { if (value) { setActiveTab(value); - SetLastTab(value); + SetLast("tab", value); } }; @@ -120,9 +117,9 @@ export function DalleView() { Dalle View -
- - + + + - + - - - - - - setDialogOpened(false)} success={success} /> -
+
+ + + + + + setDialogOpened(false)} success={success} /> Status / Progress
diff --git a/frontend/src/views/Names/Names.tsx b/frontend/src/views/Names/Names.tsx index c796bae..9956f80 100644 --- a/frontend/src/views/Names/Names.tsx +++ b/frontend/src/views/Names/Names.tsx @@ -1,20 +1,13 @@ import React from "react"; +import { Text } from "@mantine/core"; +import { IconCircleCheck } from "@tabler/icons-react"; import { types } from "@gocode/models"; import { createColumnHelper } from "@tanstack/react-table"; -export type Name = { - address: string; - decimals?: number; - isContract?: boolean; - isErc20?: boolean; - isErc721?: boolean; - name: string; - source?: string; - symbol?: string; - tags: string; -}; - -export function createRowModel(name: types.Name): Name { +export function createRowModel(name: types.Name): types.Name { + var cV = function (a: any, classs: any, asMap: boolean = false): any { + return a; + }; return { address: name.address, decimals: name.decimals, @@ -25,862 +18,51 @@ export function createRowModel(name: types.Name): Name { source: name.source, symbol: name.symbol, tags: name.tags, + convertValues: cV, }; } -export const defaultData: Name[] = [ - { - address: "0x1200563cfaeb481e1f0542a246f0cefcde4c4753", - name: "Arbitrage Bot", - source: "0xTracker", - tags: "90-Individuals:Other", - }, - { - address: "0x12063cc18a7096d170e5fc410d8623ad97ee24b3", - decimals: 18, - name: "FRENALPHA", - source: "SmolAssets", - symbol: "FREN", - tags: "60-SmolAssets", - }, - { - address: "0x1206d6f9c577e3e0a511ddcbcfb394573ce6ae80", - name: "Criszhu95", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x1206ec7abf2c3d22051f6ebb249f065fc6436149", - name: "nikoline", - source: "Gitcoin Website", - tags: "90-Individuals:Gitcoin Grants", - }, - { - address: "0x1208a26faa0f4ac65b42098419eb4daa5e580ac6", - name: "Grant 0704 Tumafare - Social Payments Platform", - source: "https://gitcoin.co/grants/704/tumafare-social-payments-platform", - tags: "31-Gitcoin:Grants", - }, - { - address: "0x120a270bbc009644e35f0bb6ab13f95b8199c4ad", - name: "Shapeshift 1", - source: "CarbonVote", - tags: "91-Early:Addresses", - }, - { - address: "0x1213c29b5e1a6f33e0d044f850a57b665e3cde21", - isContract: true, - name: "Littlecactus", - source: "EtherScan.io", - tags: "91-Early:Addresses", - }, - { - address: "0x1216bc366cfd938d24f89e2a079539f4d66062fb", - name: "phoebepoon", - source: "Gitcoin Website", - tags: "90-Individuals:Gitcoin Grants", - }, - { - address: "0x1217627fe41a00f0b828317f43e6d58f47dbfc43", - name: "Miner_0028_253", - source: "OnChain", - tags: "91-Early:Miners", - }, - { - address: "0x121851911b1d17b133c77801ab26fccd7e7c5053", - name: "tammieseo", - source: "Gitcoin Website", - tags: "90-Individuals:Gitcoin Grants", - }, - { - address: "0x12209a3ba95363ff28969cc88beeabf609521dbc", - decimals: 18, - isContract: true, - isErc20: true, - name: "Curve.fi Factory Crypto Pool: CVX_LOOKS_Pair", - source: "Rotki", - symbol: "looksCVX-f", - tags: "50-Tokens:ERC20", - }, - { - address: "0x1222d0ded67a533b3163397fd917bc8ac6f96b7a", - name: "Grant 0655 Alternative Income for Poor Families in Brazil!", - source: "https://gitcoin.co/grants/655/alternative-income-for-poor-families-in-brazil", - tags: "31-Gitcoin:Grants", - }, - { - address: "0x1229e2a0711660be162521f5626c68e85ec99c7f", - isContract: true, - name: "Bancor: Converter 103", - source: "EtherScan.io", - tags: "50-Tokens:ERC20", - }, - { - address: "0x122a86b5dff2d085afb49600b4cd7375d0d94a5f", - decimals: 8, - isContract: true, - isErc20: true, - name: "ITL (Italian Lira)", - source: "On chain", - symbol: "ITL", - tags: "50-Tokens:ERC20", - }, - { - address: "0x122bcc526c7a9cd0ea0565e5f6122c4ff2e84fd2", - name: "Freedom Community Center", - source: "Tokenomics", - tags: "31-Giveth:Project", - }, - { - address: "0x1234567461d3f8db7496581774bd869c83d51c93", - decimals: 18, - isContract: true, - isErc20: true, - name: "BitClave", - source: "On chain", - symbol: "CAT", - tags: "50-Tokens:ERC20", - }, - { - address: "0x1236203510b93409ae6a0f26d0f97798c9398e1b", - name: "anaandria", - source: "Gitcoin Website", - tags: "90-Individuals:Gitcoin Grants", - }, - { - address: "0x123843545fb525c8e134c9a5f15ada6865cc3848", - name: "Miner_0033_208", - source: "OnChain", - tags: "91-Early:Miners", - }, - { - address: "0x12392f67bdf24fae0af363c24ac620a2f67dad86", - decimals: 8, - isContract: true, - isErc20: true, - name: "Compound TrueUSD", - source: "Rotki", - symbol: "cTUSD", - tags: "50-Tokens:ERC20", - }, - { - address: "0x123964ebe096a920dae00fb795ffbfa0c9ff4675", - decimals: 18, - isContract: true, - isErc20: true, - name: "yearn Curve.fi pBTC/sbtcCRV", - source: "SmolAssets", - symbol: "yvpBTC/sbtcCRV", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12399e1bcd24cdf49adba6fdb69c0b53c73fd078", - decimals: 18, - isContract: true, - isErc20: true, - name: "WhiteKishu", - source: "On chain", - symbol: "Wishu", - tags: "50-Tokens:ERC20", - }, - { - address: "0x123ab195dd38b1b40510d467a6a359b201af056f", - decimals: 8, - isContract: true, - isErc20: true, - name: "LGO Token", - source: "On chain", - symbol: "LGO", - tags: "50-Tokens:ERC20", - }, - { - address: "0x123ee16791967fdcb8bb3c1a14f1b06397ed1b32", - name: "godfrey", - source: "https://kickback.events/", - tags: "90-Individuals:Kickback", - }, - { - address: "0x12425de8085ced64ede179d96ed8efc4a5d25047", - name: "scobes97208", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12459c951127e0c374ff9105dda097662a027093", - isContract: true, - name: "0x: Exchange v1", - tags: "30-Contracts", - }, - { - address: "0x1245ef80f4d9e02ed9425375e8f649b9221b31d8", - decimals: 8, - isContract: true, - isErc20: true, - name: "ArbitrageCT", - source: "On chain", - symbol: "ARCT", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12480e24eb5bec1a9d4369cab6a80cad3c0a377a", - decimals: 2, - isContract: true, - isErc20: true, - name: "Substratum", - source: "On chain", - symbol: "SUB", - tags: "50-Tokens:ERC20", - }, - { - address: "0x1248d79bdebd516156930a5c8ee232d4ed80ead4", - name: "Possibly Malicious 0x124", - source: "TrueBlocks.io", - tags: "80-Malicious:Shanghai", - }, - { - address: "0x124938998071c505eb1a23e55e484b683eaae03b", - name: "zayn_llywelyn", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x124f58b41fd43a498fe7041bc2d9d5813c4f80d7", - name: "HammerBot14", - source: "https://blog.blocknative.com/blog/mempool-forensics", - tags: "80-Malicious", - }, - { - address: "0x1251a94b6d800979d2d933b8bd5914b892772ac6", - name: "Commons Stack Community Fund - Panvala League", - source: "Tokenomics", - tags: "31-Giveth:Project", - }, - { - address: "0x1253594843798ff0fcd7fa221b820c2d3ca58fd5", - name: "Grant 3429 - Physical \u003c\u003c\u003e\u003e Digital", - source: "https://gitcoin.co/grants/3429/physical-digital", - tags: "31-Gitcoin:Grants", - }, - { - address: "0x1254e59712e6e727dc71e0e3121ae952b2c4c3b6", - decimals: 18, - isContract: true, - isErc20: true, - name: "Marginless Token", - source: "Rotki", - symbol: "MRS", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12565fd1436926beb0fff522d63be551240a4594", - decimals: 18, - isContract: true, - isErc20: true, - name: "GOLD", - source: "On chain", - symbol: "GOLD", - tags: "50-Tokens:ERC20", - }, - { - address: "0x1256e7992564ab22e332532472c916bd8d1e1ca7", - name: "vandigital", - source: "Gitcoin Website", - tags: "90-Individuals:Gitcoin Grants", - }, - { - address: "0x1259e79286a36da3d9aad8200ece45bffd122912", - name: "brashZhang", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x125ca0e61b8fe9e85ef1f52fd382cc8d547153f7", - name: "NRv_gg", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x125f9d5daa039bdb79d36baff667e9e0bbcea998", - decimals: 18, - isContract: true, - isErc20: true, - name: "Fire Token", - source: "On chain", - symbol: "FIRE", - tags: "50-Tokens:ERC20", - }, - { - address: "0x1260d31a672170d963e9f328ebf13fadbfa74d6c", - name: "251262871Com", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x1263111614a6471300220251dcef2d166ae5fe54", - name: "deucesofweb3", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x1266c0576feb0bf1131b63024661f1a63faca523", - name: "rudinosaurs", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x1266f928b7964173434d3feb6da2554b141920b8", - name: "Grant 0723 EtherDNA", - source: "https://gitcoin.co/grants/723/etherdna", - tags: "31-Gitcoin:Grants", - }, - { - address: "0x1267895780369b48a02781eb08d353e426e5f256", - name: "nagydani", - source: "DevCon2 Token Contract", - tags: "90-Individuals:DevCon2", - }, - { - address: "0x126b2b0aa3d7ef32b634044c40526048e5977aba", - decimals: 18, - isContract: true, - isErc20: true, - name: "AnotherFuckingToken.com", - source: "On chain", - symbol: "AFT", - tags: "50-Tokens:ERC20", - }, - { - address: "0x126c121f99e1e211df2e5f8de2d96fa36647c855", - decimals: 18, - isContract: true, - isErc20: true, - name: "DEGEN Index", - source: "Rotki", - symbol: "DEGEN", - tags: "50-Tokens:ERC20", - }, - { - address: "0x127091ede112aed7bae281747771b3150bb047bb", - decimals: 18, - isContract: true, - isErc20: true, - name: "Curve.fi Factory Crypto Pool: ibJPY/USDC", - source: "SmolAssets", - symbol: "ibJPYUSDC-f", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12724f96a09bf2e4b12f2caa5a6e261862d8b124", - isContract: true, - name: "Grant 1002 - Moved, please go to the updated grant: https://gitcoin.co/grants/1003/cent-token-2", - source: "https://gitcoin.co/grants/1002/moved-please-go-to-the-updated-grant-httpsgitcoin", - tags: "31-Gitcoin:Grants", - }, - { - address: "0x12759512d326303b45f1cec8f7b6fd96f387778e", - decimals: 18, - isContract: true, - isErc20: true, - name: "TrakInvest Token", - source: "On chain", - symbol: "TRAK", - tags: "50-Tokens:ERC20", - }, - { - address: "0x127ac03acfad15f7a49dd037e52d5507260e1425", - name: "Vlad Zamfir", - source: "DAO_Curator", - tags: "90-Individuals:DAO Curators", - }, - { - address: "0x127c6839dee7c737767c9f62d13996e27854505d", - name: "Grant 0419 Project Maple. | Cryptographic Currency Redefined.", - source: "https://gitcoin.co/grants/419/project-maple-cryptographic-currency-redefined", - tags: "31-Gitcoin:Grants", - }, - { - address: "0x127cae460d6e8d039f1371f54548190efe73e756", - decimals: 18, - isContract: true, - isErc20: true, - name: "ShiftCashExtraBonus", - source: "On chain", - symbol: "SCB", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12833d6fadd206ded2fce84936d8d78326ab8efa", - name: "StefanBemelmans", - source: "https://www.humanitydao.org/humans", - tags: "90-Individuals:Humanity DAO", - }, - { - address: "0x12843dbadc2f61f8e70c5fa549fc545d3ecd8e68", - name: "KOREANYEEZY", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x1285b3c8af833d018d20f844dd574266431d08bc", - name: "MoonUp21622227", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x128b8a297a5d506eed359b1193667977fbc583dc", - name: "Mercy for Animals", - source: "Tokenomics", - tags: "31-Giveth:Project", - }, - { - address: "0x1292f80072e0825afa162b24b27e0d206ea656fb", - name: "GWF Giving Tuesday", - source: "Tokenomics", - tags: "31-Giveth:Project", - }, - { - address: "0x129300d1565b296a54985f77f720699386b36417", - name: "Fenerimo1907", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12951b9eaa200237f9080c95ad93cc74c9d9bd45", - isContract: true, - name: "Zero Ex Exchange Wrapper", - source: "https://github.com/SetProtocol/set-protocol-contracts", - tags: "30-Contracts:Set Protocol", - }, - { - address: "0x1295d19e84f1f36472e0286eac20349d5dd6a469", - name: "FafCrypto", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12960beba2dce20367f7a284a0c34a9e9209df87", - decimals: 18, - isContract: true, - isErc20: true, - name: "SHIBASWAP", - source: "On chain", - symbol: "SHIBASWAP", - tags: "50-Tokens:ERC20", - }, - { - address: "0x1296a923cd4f39116e0297d921fe25fe228552c6", - decimals: 18, - isContract: true, - isErc20: true, - name: "STONER DOGE", - source: "On chain", - symbol: "STOGE", - tags: "50-Tokens:ERC20", - }, - { - address: "0x1296d3bb6dc0efbae431a12939fc15b2823db79b", - isContract: true, - name: "KittenRegistry", - source: "Ether Camp", - tags: "91-Early:Addresses", - }, - { - address: "0x12970e6868f88f6557b76120662c1b3e50a646bf", - decimals: 18, - isContract: true, - isErc20: true, - name: "Milady", - source: "Rotki", - symbol: "LADYS", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12976ac92061ddc252060bc84c09b48dc785263c", - decimals: 18, - isContract: true, - isErc20: true, - isErc721: true, - name: "Event Pass", - source: "On chain", - symbol: "EPA", - tags: "50-Tokens:ERC721", - }, - { - address: "0x1299a206ec0618dd3bd4eab6840e6bf0d29fdeaa", - name: "L0SS0L_", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12a0e25e62c1dbd32e505446062b26aecb65f028", - name: "Grant 0473 Bbft Podcast Show", - source: "https://gitcoin.co/grants/473/bbft-podcast-show", - tags: "31-Gitcoin:Grants", - }, - { - address: "0x12a101830c0405a21285094c4c690b312d6d7875", - name: "Virtual_Reset", - source: "Tokenomics", - tags: "31-Giveth:Project", - }, - { - address: "0x12a13b132be353f8dc33fc6cab12d1407b60f9ce", - name: "izeeyahmon", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12a1ed5c19a925d5a5e9d51f6ab16fdb1978f0c7", - name: "Nandemo68795288", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12a74da2537a2147cc8a412cf5c7cecd78559423", - decimals: 18, - isContract: true, - isErc20: true, - name: "PUPPYMOON", - source: "On chain", - symbol: "PUPPY", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12a9cc33a980daa74e00cc2d1a0e74c57a93d12c", - decimals: 8, - isContract: true, - isErc20: true, - name: "Iron Bank Synthetix Network Token", - source: "SmolAssets", - symbol: "iSNX", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12add8f3b37fe5fbecdb1208233c0e56dfecf200", - name: "Stefan George", - source: "DevCon2 Token Contract", - tags: "90-Individuals:DevCon2", - }, - { - address: "0x12aef5c60c2c86c8ecd3079f22f285f326371340", - decimals: 18, - isContract: true, - isErc20: true, - name: "hiSAND33", - source: "Rotki", - symbol: "hiSAND33", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12aef9585197d02106045de55f01c9c30301d70a", - name: "Jirat", - source: "DevCon2 Token Contract", - tags: "90-Individuals:DevCon2", - }, - { - address: "0x12b19d3e2ccc14da04fae33e63652ce469b3f2fd", - decimals: 12, - isContract: true, - isErc20: true, - name: "GRID Token", - source: "On chain", - symbol: "GRID", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12b24678ee0de5fe3ada683b6356d9dae4a3d2a2", - name: "rovertochivale", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12b306fa98f4cbb8d4457fdff3a0a0a56f07ccdf", - decimals: 18, - isContract: true, - isErc20: true, - name: "Spectre.ai D-Token", - source: "On chain", - symbol: "SXDT", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12b394034e855baec320a0efc8b8301c631a49c3", - name: "BrittH888", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12b6893ce26ea6341919fe289212ef77e51688c8", - decimals: 18, - isContract: true, - isErc20: true, - name: "Tamadoge", - source: "Rotki", - symbol: "TAMA", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12bb890508c125661e03b09ec06e404bc9289040", - decimals: 18, - isContract: true, - isErc20: true, - name: "Radio Caca V2", - source: "Rotki", - symbol: "RACA", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12bcca9632cf7479236456eeb0446c89422d437e", - name: "maybeawhile", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12bff8e316e627a364915e89558a18fa6a1a4dae", - name: "alphaK3Y", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12c0e1fe9521c0535f7d5b5f6d52fe29a5e090c6", - name: "Project Transitions", - source: "Tokenomics", - tags: "31-Giveth:Project", - }, - { - address: "0x12c3ad898e8eb1c0ec0bb74f9748f36c46593f68", - decimals: 18, - name: "AaveV3WMATICLender", - source: "SmolAssets", - symbol: "ysWMATIC", - tags: "60-SmolAssets", - }, - { - address: "0x12c3d85008badb2f49ebd3a4cef07a78b72becd2", - name: "RODOLFOTHEBASED", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12c43d5148b2eeb15d263b697a3f59d155d74c23", - name: "tomhaverford24", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12c765e05146414fa948b9dcf934277247a59ef1", - decimals: 18, - isContract: true, - isErc20: true, - name: "baseprotocol.org", - source: "On chain", - symbol: "BASE", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12c9b2e7b3dabcf81507f01a60bb7599e3ec4ad4", - name: "blueyonder10k", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12cec80a801a060a50acc137d11556188ad912de", - name: "joyce007wy", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12d062b19a2df1920eb9fc28bd6e9a7e936de4c2", - name: "vince0656", - source: "Gitcoin Website", - tags: "90-Individuals:Gitcoin Grants", - }, - { - address: "0x12d21ffbec92bb37668191d73794eb0c4f70d96b", - decimals: 18, - isContract: true, - isErc20: true, - name: "Akita Cookies", - source: "On chain", - symbol: "AOOKIES🍪", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12d4444f96c644385d8ab355f6ddf801315b6254", - decimals: 18, - isContract: true, - isErc20: true, - name: "Uniswap V2", - source: "On chain", - symbol: "UNI-V2", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12d66f87a04a9e220743712ce6d9bb1b5616b8fc", - isContract: true, - name: "Tornado Cash ETH 29", - source: "Ofac website", - tags: "66-Ofac:Sanctioned", - }, - { - address: "0x12dbe9e7bbb34fe0e41d866414dc19ef432d3311", - decimals: 6, - isContract: true, - isErc20: true, - name: "Elon Musk Rocket Balls", - source: "On chain", - symbol: "BALLS", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12dfc577544d002c57fbb02c389511a37bc4490c", - isContract: true, - name: "Set Kyber Wrapper", - source: "0xTracker", - tags: "30-Contracts", - }, - { - address: "0x12e3187d6b7a0ba98a427ef9ef287bd9960764d1", - decimals: 18, - name: "AerodromeDEUS-WETHFactoryyVault", - source: "SmolAssets", - symbol: "yvAero-DEUS-WETH-f", - tags: "60-SmolAssets", - }, - { - address: "0x12e41855befd2fafe1b3fb15381fdf2c89f726a2", - name: "papa6669", - source: "Gitcoin Website", - tags: "90-Individuals:Gitcoin Grants", - }, - { - address: "0x12e429b68cc9920f45a44a752e79557f46663ee9", - decimals: 18, - isContract: true, - isErc20: true, - name: "Tokyo Shiba", - source: "On chain", - symbol: "TSHIB", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12e51e77daaa58aa0e9247db7510ea4b46f9bead", - decimals: 18, - isContract: true, - isErc20: true, - name: "Aave Interest bearing YFI", - source: "Rotki", - symbol: "aYFI", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12e59c59d282d2c00f3166915bed6dc2f5e2b5c7", - decimals: 6, - isContract: true, - name: "Tether USD Hop Token", - source: "Rotki", - symbol: "hUSDT", - tags: "60-Rotki", - }, - { - address: "0x12e6066bd554acbea755cf6fc584ffaf7be1634b", - name: "0xJojoland", - source: "banteg on twitter", - tags: "90-Individuals:Twitter", - }, - { - address: "0x12e626b0eebfe86a56d633b9864e389b45dcb260", - isContract: true, - name: "DAO Drain 078", - source: "GethSource", - tags: "80-Malicious:DaoDrain", - }, - { - address: "0x12f649a9e821f90bb143089a6e56846945892ffb", - decimals: 18, - isContract: true, - isErc20: true, - name: "uDOO", - source: "Rotki", - symbol: "uDOO", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12fcd6463e66974cf7bbc24ffc4d40d6be458283", - decimals: 8, - isContract: true, - isErc20: true, - name: "Globitex Token", - source: "Rotki", - symbol: "GBX", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12fef5e57bf45873cd9b62e9dbd7bfb99e32d73e", - decimals: 18, - isContract: true, - isErc20: true, - name: "Cofoundit", - source: "On chain", - symbol: "CFI", - tags: "50-Tokens:ERC20", - }, - { - address: "0x12ff4a259e14d4dcd239c447d23c9b00f7781d8f", - decimals: 18, - name: "PEPEOptimism", - source: "SmolAssets", - symbol: "PEPE", - tags: "60-SmolAssets", - }, - { - address: "0x32be343b94f860124dc4fee278fdcbd38c102d88", - name: "Poliniex Exchange, DAO Whale 4 Vlad Zamphir 0x127 Sender 1 Sept_DDOS_ACCOUNT_1", - source: "TrueBlocks.io CarbonVote WhaleWatch.io SEPT_DDOS http://www.reddit.com/r/ethereum/", - tags: "90-Individuals", - }, -]; +const columnHelper = createColumnHelper(); -const columnHelper = createColumnHelper(); - -export const columns = [ +export const namesColumns = [ columnHelper.accessor("address", { + header: () => "Address", cell: (info) => info.getValue(), - footer: (info) => info.column.id, + size: 100, }), - columnHelper.accessor("decimals", { - header: () => "Decimals", + columnHelper.accessor("tags", { + header: () => "Tags", cell: (info) => info.renderValue(), - footer: (info) => info.column, + size: 100, }), columnHelper.accessor("name", { header: () => "Name", cell: (info) => info.renderValue(), - footer: (info) => info.column.id, + size: 100, }), columnHelper.accessor("symbol", { header: () => "Symbol", cell: (info) => info.renderValue(), - footer: (info) => info.column.id, + size: 100, }), - columnHelper.accessor("tags", { - header: () => "Tags", - cell: (info) => info.renderValue(), - footer: (info) => info.column.id, - }), - columnHelper.accessor("source", { - header: () => "Source", + columnHelper.accessor("decimals", { + header: () => "Decimals", cell: (info) => info.renderValue(), - footer: (info) => info.column.id, + size: 100, }), columnHelper.accessor("isContract", { header: () => "isContract", - cell: (info) => info.renderValue(), - footer: (info) => info.column.id, + cell: (info) => (info.getValue() ? : ""), + size: 100, }), columnHelper.accessor("isErc20", { header: () => "isErc20", - cell: (info) => info.renderValue(), - footer: (info) => info.column.id, + cell: (info) => (info.getValue() ? : ""), + size: 100, + }), + columnHelper.accessor("isErc721", { + header: () => "isErc721", + cell: (info) => (info.getValue() ? : ""), + size: 100, }), ]; diff --git a/frontend/src/views/Names/NamesView.tsx b/frontend/src/views/Names/NamesView.tsx index e0fe5ce..d73c283 100644 --- a/frontend/src/views/Names/NamesView.tsx +++ b/frontend/src/views/Names/NamesView.tsx @@ -5,17 +5,16 @@ import { GetNames, GetNamesCnt } from "@gocode/app/App"; import { createColumnHelper, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table"; import { useHotkeys } from "react-hotkeys-hook"; import { Stack, Table, Title } from "@mantine/core"; -import { type Name, defaultData, columns, createRowModel } from "./Names"; +import { namesColumns, createRowModel } from "./Names"; import { View, ViewStatus } from "@/components/view"; -import { VAlignedTd } from "./VAlignedTd"; -const columnHelper = createColumnHelper(); +const columnHelper = createColumnHelper(); export function NamesView() { - const [data, _setData] = React.useState(() => [...defaultData]); - const [names, setName] = useState(); + const [names, _setData] = React.useState(() => []); const [nNames, setNamesCount] = useState(0); const [curName, setCurName] = useState(-1); + const [perPage, setPerPage] = useState(20); useHotkeys("left", (event) => { setCurName(curName - 1 < 0 ? 0 : curName - 1); @@ -43,9 +42,8 @@ export function NamesView() { }); useEffect(() => { - GetNames(curName, 20).then((names: types.Name[]) => { - _setData(names?.map((name) => createRowModel(name)) ?? []); - setName(names); + GetNames(curName, perPage).then((names: types.Name[]) => { + _setData(names); GetNamesCnt().then((cnt) => { setNamesCount(cnt); }); @@ -57,8 +55,8 @@ export function NamesView() { }, []); const table = useReactTable({ - data, - columns, + data: names, + columns: namesColumns, getCoreRowModel: getCoreRowModel(), }); @@ -82,22 +80,13 @@ export function NamesView() { {table.getRowModel().rows.map((row) => ( {row.getVisibleCells().map((cell) => ( - {flexRender(cell.column.columnDef.cell, cell.getContext())} + + {flexRender(cell.column.columnDef.cell, cell.getContext())} + ))} ))} - {/* - {table.getFooterGroups().map((footerGroup) => ( - - {footerGroup.headers.map((header) => ( - - {header.isPlaceholder ? null : flexRender(header.column.columnDef.footer, header.getContext())} - - ))} - - ))} - */} Status / Progress diff --git a/frontend/src/views/Names/VAlignedTd.tsx b/frontend/src/views/Names/VAlignedTd.tsx deleted file mode 100644 index 1e0e7eb..0000000 --- a/frontend/src/views/Names/VAlignedTd.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import React from "react"; -import { Table } from "@mantine/core"; - -export function VAlignedTd({ children, key }: { children: React.ReactNode; key: string }) { - return {children}; -} diff --git a/frontend/src/views/Series/SeriesView.tsx b/frontend/src/views/Series/SeriesView.tsx index c9e6276..9e77e7f 100644 --- a/frontend/src/views/Series/SeriesView.tsx +++ b/frontend/src/views/Series/SeriesView.tsx @@ -9,7 +9,12 @@ export function SeriesView() { const [fileList, setFileList] = useState([]); useEffect(() => { - GetFilelist().then((fileList: string[]) => setFileList(fileList)); + GetFilelist("./output/series").then((fileList: string[]) => { + fileList = fileList.map((file) => file.replace("output/series/", "")); + fileList = fileList.filter((file) => file.includes(".json") && file !== ".json"); + fileList = fileList.map((file) => file.replace(".json", "")); + setFileList(fileList); + }); }, []); const dataItems = fileList.map((file, index) => ({ id: index, value: file })); diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 839cbd6..d5deb1f 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -32,7 +32,7 @@ ], "@gocode/*": [ "../wailsjs/go/*" - ] + ], } }, "include": [ diff --git a/frontend/wailsjs/go/app/App.d.ts b/frontend/wailsjs/go/app/App.d.ts index 2ed5321..f20c20f 100755 --- a/frontend/wailsjs/go/app/App.d.ts +++ b/frontend/wailsjs/go/app/App.d.ts @@ -14,19 +14,13 @@ export function GetEnhanced(arg1:string):Promise; export function GetExistingAddrs():Promise>; -export function GetFilelist():Promise>; +export function GetFilelist(arg1:string):Promise>; export function GetFilename(arg1:string):Promise; export function GetJson(arg1:string):Promise; -export function GetLastAddress():Promise; - -export function GetLastRoute():Promise; - -export function GetLastSeries():Promise; - -export function GetLastTab():Promise; +export function GetLast(arg1:string):Promise; export function GetNames(arg1:number,arg2:number):Promise>; @@ -48,14 +42,10 @@ export function LoadSeries():Promise; export function MakeDalleDress(arg1:string):Promise; -export function Save(arg1:string):Promise; +export function ReloadDatabases():Promise; -export function SetLastAddress(arg1:string):Promise; - -export function SetLastRoute(arg1:string):Promise; - -export function SetLastSeries(arg1:string):Promise; +export function Save(arg1:string):Promise; -export function SetLastTab(arg1:string):Promise; +export function SetLast(arg1:string,arg2:string):Promise; export function String():Promise; diff --git a/frontend/wailsjs/go/app/App.js b/frontend/wailsjs/go/app/App.js index 08a31bf..ba773b4 100755 --- a/frontend/wailsjs/go/app/App.js +++ b/frontend/wailsjs/go/app/App.js @@ -22,8 +22,8 @@ export function GetExistingAddrs() { return window['go']['app']['App']['GetExistingAddrs'](); } -export function GetFilelist() { - return window['go']['app']['App']['GetFilelist'](); +export function GetFilelist(arg1) { + return window['go']['app']['App']['GetFilelist'](arg1); } export function GetFilename(arg1) { @@ -34,20 +34,8 @@ export function GetJson(arg1) { return window['go']['app']['App']['GetJson'](arg1); } -export function GetLastAddress() { - return window['go']['app']['App']['GetLastAddress'](); -} - -export function GetLastRoute() { - return window['go']['app']['App']['GetLastRoute'](); -} - -export function GetLastSeries() { - return window['go']['app']['App']['GetLastSeries'](); -} - -export function GetLastTab() { - return window['go']['app']['App']['GetLastTab'](); +export function GetLast(arg1) { + return window['go']['app']['App']['GetLast'](arg1); } export function GetNames(arg1, arg2) { @@ -90,24 +78,16 @@ export function MakeDalleDress(arg1) { return window['go']['app']['App']['MakeDalleDress'](arg1); } -export function Save(arg1) { - return window['go']['app']['App']['Save'](arg1); -} - -export function SetLastAddress(arg1) { - return window['go']['app']['App']['SetLastAddress'](arg1); +export function ReloadDatabases() { + return window['go']['app']['App']['ReloadDatabases'](); } -export function SetLastRoute(arg1) { - return window['go']['app']['App']['SetLastRoute'](arg1); -} - -export function SetLastSeries(arg1) { - return window['go']['app']['App']['SetLastSeries'](arg1); +export function Save(arg1) { + return window['go']['app']['App']['Save'](arg1); } -export function SetLastTab(arg1) { - return window['go']['app']['App']['SetLastTab'](arg1); +export function SetLast(arg1, arg2) { + return window['go']['app']['App']['SetLast'](arg1, arg2); } export function String() { diff --git a/go.mod b/go.mod index 7c7aa0a..4a2685a 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,8 @@ require ( github.com/gocarina/gocsv v0.0.0-20230123225133-763e25b40669 // indirect github.com/godbus/dbus/v5 v5.1.0 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/golang/protobuf v1.5.4 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect @@ -93,6 +94,7 @@ require ( github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.9.0 // indirect + github.com/stretchr/testify v1.9.0 // indirect github.com/subosito/gotenv v1.2.0 // indirect github.com/supranational/blst v0.3.11 // indirect github.com/tklauser/go-sysconf v0.3.12 // indirect @@ -114,9 +116,9 @@ require ( golang.org/x/sys v0.20.0 // indirect golang.org/x/term v0.20.0 // indirect golang.org/x/text v0.16.0 // indirect - golang.org/x/time v0.3.0 // indirect + golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/protobuf v1.34.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect lukechampine.com/blake3 v1.1.7 // indirect diff --git a/go.sum b/go.sum index 5fd5967..317886f 100644 --- a/go.sum +++ b/go.sum @@ -315,8 +315,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -367,8 +367,9 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.5/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -732,8 +733,8 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= @@ -1062,8 +1063,8 @@ golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1262,8 +1263,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/inputs/addresses.txt b/inputs/addresses.txt index ede36d8..b5214e7 100644 --- a/inputs/addresses.txt +++ b/inputs/addresses.txt @@ -1 +1,20 @@ -0xf503017d7baf7fbc0fff7492b751025c6a78179b +gitcoin.eth +giveth.eth +chase.wright.eth +cnn.eth +dawid.eth +dragonstone.eth +eats.eth +ens.eth +gameofthrones.eth +jen.eth +makingprogress.eth +meriam.eth +nate.eth +poap.eth +revenge.eth +rotki.eth +trueblocks.eth +unchainedindex.eth +vitalik.eth +when.eth diff --git a/inputs/series.json b/inputs/series.json index ab717d1..42b5b6b 100644 --- a/inputs/series.json +++ b/inputs/series.json @@ -1,32 +1,18 @@ { - "suffix": "colorful-punk-postal-dogs", + "last": 19, + "suffix": "other-styles", "adverbs": [], "adjectives": [], - "nouns": [ - "canidae" - ], - "emotions": [ - "bitterness", - "cheesed off", - "ferocity", - "fury", - "hatred", - "hostility", - "loathing", - "outrage", - "rage", - "revenge", - "spite", - "wrath" - ], + "nouns": [], + "emotions": [], "occupations": [], - "actions": [], + "actions": null, "artstyles": [ - "punk" + "other styles" ], "litstyles": [], "colors": [], - "orientations": [], - "gazes": [], - "backstyles": [] -} + "orientations": null, + "gazes": null, + "backstyles": null +} \ No newline at end of file