Skip to content

Instantly share code, notes, and snippets.

View Enigo's full-sized avatar

Ruslan S. Enigo

View GitHub Profile
use serde::de::DeserializeOwned;
pub async fn fetch_single_api_response<T: DeserializeOwned>(endpoint: &str) -> reqwest::Result<T> {
let result = reqwest::get(endpoint).await?.json::<T>().await?;
return Ok(result);
}
@Enigo
Enigo / home.rs
Last active April 19, 2023 04:12
...
#[function_component(Home)]
pub fn home_function_component() -> Html {
...
let collections = collections.iter().map(|collection| html! {
<div class="col text-center">
<Link<Route> to={Route::Collection {token_address: collection.address.clone()} } classes="img-fluid">
<img src={collection.collection_image_url.clone()} class="img-fluid" width="250" height="250" alt={collection.name.clone()}/>
</Link<Route>>
<p class="text-white">{collection.name.clone()}</p>
use route::{switch, Route};
use yew::prelude::*;
use yew_router::prelude::*;
#[function_component(App)]
fn app() -> Html {
html! {
<BrowserRouter>
<Switch<Route> render={switch} />
</BrowserRouter>
@Enigo
Enigo / route.rs
Last active April 19, 2023 04:11
use crate::view::home::Home;
use yew::prelude::*;
use yew_router::prelude::*;
#[derive(Clone, Routable, PartialEq)]
pub enum Route {
#[at("/:token_address")]
Collection { token_address: String },
#[at("/")]
Home,
@Enigo
Enigo / home.rs
Last active April 18, 2023 03:27
use crate::utils::api_utils;
use log::error;
use model::model::collection::CollectionData;
use yew::prelude::*;
#[function_component(Home)]
pub fn home_function_component() -> Html {
let collections = use_state(|| vec![]);
{
let collections = collections.clone();
use crate::view::home::Home;
#[function_component(App)]
fn app() -> Html {
html! {
<Home />
}
}
...
use log::info;
use yew::prelude::*;
#[function_component(App)]
fn app() -> Html {
html! {
<p class="text-white">{ "Rendered" }</p>
}
}
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Site</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous">
<link href="https://use.fontawesome.com/releases/v5.15.4/css/all.css" rel="stylesheet" crossorigin="anonymous"/>
<link data-trunk rel="css" href="style.css">
[package]
name = "ui"
version = "0.1.0"
edition = "2021"
[[bin]]
name = "ui"
path = "src/main.rs"
[dependencies]
#[tokio::main]
pub async fn read() {
read_with_cursor_as::<Mint>(MINTS_URL, &MintSaver).await;
read_with_cursor_as::<Asset>(ASSETS_URL, &AssetSaver).await;
}
async fn read_with_cursor_as<T: DeserializeOwned + PaginatedApi>(
url: &str,
persistable: &dyn Persistable<T>,
) {