diff --git a/.github/workflows/clippy.yml b/.github/workflows/clippy.yml index 5b7c679..b99a2a6 100644 --- a/.github/workflows/clippy.yml +++ b/.github/workflows/clippy.yml @@ -2,6 +2,9 @@ name: clippy on: workflow_dispatch: pull_request: + types: + - ready_for_review + push: branches: - main @@ -19,30 +22,32 @@ jobs: - name: Checkout uses: actions/checkout@v3 with: - submodules: 'recursive' - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly-2024-02-12 - target: wasm32-unknown-unknown - override: true - - uses: actions-rs/cargo@v1 + submodules: "recursive" + + - uses: dtolnay/rust-toolchain@nightly with: - command: fmt - args: --all -- --check + toolchain: nightly-2025-07-12 + targets: wasm32-unknown-unknown + components: rustfmt + + - name: Set toolchain override + run: rustup override set nightly-2025-07-12 + + - name: Check formatting + run: cargo fmt -- --check leptosfmt: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 + - uses: dtolnay/rust-toolchain@nightly with: profile: minimal toolchain: nightly override: true components: clippy - name: Cache .cargo and target - uses: actions/cache@v2 + uses: actions/cache@v4 with: path: | ~/.cargo @@ -51,9 +56,9 @@ jobs: ${{ runner.os }}-cargo-leptos-${{ hashFiles('**/Cargo.lock') }} ${{ runner.os }}-cargo-leptos - name: Install LeptosFmt - run: cargo install leptosfmt --version 0.1.13 + run: cargo install leptosfmt --version 0.1.33 - name: Check LeptosFmt - run: leptosfmt --check . + run: leptosfmt --check src clippy: needs: [fmt, leptosfmt] @@ -62,8 +67,8 @@ jobs: - name: Checkout uses: actions/checkout@v3 with: - submodules: 'recursive' - - uses: actions-rs/toolchain@v1 + submodules: "recursive" + - uses: dtolnay/rust-toolchain@nightly with: profile: minimal toolchain: nightly @@ -71,8 +76,5 @@ jobs: components: clippy - uses: Swatinem/rust-cache@v2 - - name: cargo clippy - uses: actions-rs/cargo@v1 - with: - command: clippy - args: --features=ssr,hydrate -- -D warnings + - name: Run clippy + run: cargo clippy --features=ssr,hydrate -- -D warnings diff --git a/.gitignore b/.gitignore index a413a1e..09f971d 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,5 @@ settings.json style/ public/sitemap.xml + +.env diff --git a/.gitmodules b/.gitmodules index c89d3a5..30d19ae 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "extras"] path = extras url = https://github.com/RustLangES/proyectos-comunitarios.git +[submodule "design-system-components"] + path = design-system-components + url = git@github.com:RustLangES/design-system-components.git diff --git a/Cargo.toml b/Cargo.toml index b025b53..1668276 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,10 @@ [package] name = "rust-lang-es" version = "0.1.0" -edition = "2021" +edition = "2024" + +[workspace] +exclude = ["design-system-components"] [lib] crate-type = ["cdylib", "rlib"] @@ -21,7 +24,7 @@ reqwest = { version = "0.12.23", features = [ "rustls-tls", ], default-features = false } # rustlanges-components = { version = "0.1.0", features = ["leptos"] } -rustlanges-components = { path="../design-system-components", features = ["leptos"] } +rustlanges-components = { path="design-system-components", features = ["leptos"] } leptos-use = { version = "0.16.3", features = [] } console_error_panic_hook = { version = "0.1.7", optional = true } # leptos_theme = "0.1.2" @@ -55,12 +58,12 @@ toml = "0.9" serde = { version = "1", features = ["derive"] } [package.metadata.leptos] -# The name used by wasm-bindgen/cargo-leptos for the JS/WASM bundle. Defaults to the crate name +# The name used by wasm-bindgen/cargo-leptos for the JS/WASM bundle. Defaults to the crate name output-name = "leptos_start" # The site root folder is where cargo-leptos generate all output. WARNING: all content of this folder will be erased on a rebuild. Use it in your server setup. site-root = "dist" # The site-root relative folder where all compiled output (JS, WASM and CSS) is written -# Defaults to pkg +# Defaults to pkg site-pkg-dir = "pkg" # [Optional] The source CSS file. If it ends with .sass or .scss then it will be compiled by dart-sass into CSS. The CSS is optimized by Lightning CSS before being written to //app.css # style-file = "input.css" diff --git a/README.md b/README.md index 4b35b32..66946f5 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,41 @@ -![image](https://github.com/RustLangES/RustLangES.github.io/assets/56278796/cc7009a2-a11b-4847-a561-fcc6807e1d98) - +# ![image](https://github.com/RustLangES/RustLangES.github.io/assets/56278796/cc7009a2-a11b-4847-a561-fcc6807e1d98) +

-GitHub Workflow Status (with event) -GitHub Workflow Status (with event) + +GitHub Workflow Status (with event) + +GitHub Workflow Status (with event)

> [!CAUTION] > Esta pagina no se publicará hasta que el nuevo diseño se encuentre listo -> https://www.figma.com/design/S9yCZSaZ9q54XSojWNhJft/Rust-Lang-ES?node-id=0-1&p=f&t=Cn6Q0QzGflLYCOgo-0 +> ## Como ejecutar +### Requisitos Generales -### Requisitos Generales Antes de empezar es necesario tener estos programas + - [Rust](https://rust-lang.org/tools/install) - [NodeJs](https://nodejs.org) -### Requisitos Windows >= 10 +### Requisitos Windows >= 10 + -[BusyBox](https://busybox.net/) - - Usando scoop `scoop install busybox` - - Usando choco `choco install busybox` + +- Usando scoop `scoop install busybox` +- Usando choco `choco install busybox` ### Desarrollo -> [!NOTE] -> necesitas fetch git submodules para clonar los assets externos para el desarrollo +> [!NOTE] +> necesitas fetch git submodules para clonar los assets externos para el desarrollo Con estos comandos podrá empezar a desarrollar @@ -51,32 +60,34 @@ cargo install cargo-make cargo make serve ``` - --- - ### Si usas nix > [!NOTE] > Asegúrate de tener los flakes activados. Si usas nix es bastante sencillo, solo necesitas este comando: + ```bash nix develop ``` Ahora podemos iniciar el servidor con: + ```bash cargo make serve ``` Para hacer un commit: + ```bash cargo install rusty-hook cargo install leptosfmt --version 0.1.13 ``` ## Configura tu VSCode + Agrega esto en tu `settings.json` ```json @@ -101,11 +112,12 @@ Agrega esto en tu `settings.json` } ``` +## Resumen +Este proyecto utiliza una rama personalizada de Leptos para poder servir +directamente el directorio de salida como un sitio web estático. -# Resumen -Este proyecto utiliza una rama personalizada de Leptos para poder servir directamente el directorio de salida como un sitio web estático. - -`cargo make serve` sirve el directorio div con watch mode y hot-reload. -`cargo make build` compila el proyecto en release. La salida estará en el directorio `dist` y el comando no lo servirá, sino que se cerrará. +`cargo make serve` sirve el directorio div con watch mode y hot-reload. +`cargo make build` compila el proyecto en release. La salida estará en el +directorio `dist` y el comando no lo servirá, sino que se cerrará. `cargo make fmt` formatea con `rustfmt` y `leptosfmt`. diff --git a/build.rs b/build.rs index 674d47d..371d400 100644 --- a/build.rs +++ b/build.rs @@ -10,10 +10,10 @@ fn main() { println!("cargo:rerun-if-changed=extras"); let folders = fs::read_dir("extras").unwrap(); - if let Err(e) = fs::create_dir("src/extras") { - if e.kind() != std::io::ErrorKind::AlreadyExists { - println!("{e:?}"); - } + if let Err(e) = fs::create_dir("src/extras") + && e.kind() != std::io::ErrorKind::AlreadyExists + { + println!("{e:?}"); } copy_dir_all("extras/proyectos/assets", "assets/gen_assets").unwrap(); @@ -145,7 +145,7 @@ fn generate_projects(path: &Path) { } let file_path = file.path(); - if !file_path.extension().is_some_and(|e| e == "toml") { + if file_path.extension().is_none_or(|e| e != "toml") { let file_name = file.file_name(); let file_name = file_name.to_str().unwrap(); // Copy images or other files diff --git a/design-system-components b/design-system-components new file mode 160000 index 0000000..bf13d34 --- /dev/null +++ b/design-system-components @@ -0,0 +1 @@ +Subproject commit bf13d347b83d2e4cd41ace49e4be9fc0be293ece diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 8643fc2..d77efc1 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,5 +1,5 @@ [toolchain] channel = "nightly-2025-07-12" profile = "minimal" -components = ["rust-src","rust-analyzer"] +components = ["rust-src","rust-analyzer", "rustfmt", "clippy"] targets = ["wasm32-unknown-unknown"] diff --git a/src/app.rs b/src/app.rs index c613bb6..8a80195 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,6 +1,6 @@ use crate::context::theme_provider::ThemeProvider; -use leptos::{leptos_dom::logging::console_log, prelude::*}; -use leptos_meta::{provide_meta_context, MetaTags}; +use leptos::prelude::*; +use leptos_meta::{MetaTags, provide_meta_context}; use leptos_router::{ components::{Route, Router, Routes}, path, @@ -8,7 +8,7 @@ use leptos_router::{ use crate::{ components::{HeadInformation, Header}, - pages::{Aprende, Communities, Contributors, Index, Projects}, + pages::{Aprende, Communities, Index}, }; pub fn shell(options: LeptosOptions) -> impl IntoView { diff --git a/src/components/became_sponsor.rs b/src/components/became_sponsor.rs index db3b707..ef857d5 100644 --- a/src/components/became_sponsor.rs +++ b/src/components/became_sponsor.rs @@ -1,4 +1,4 @@ -use leptos::{prelude::*, *}; +use leptos::prelude::*; use rustlanges_components::button::{Button, Variant as ButtonVariant}; #[component] diff --git a/src/components/challenges.rs b/src/components/challenges.rs index 2e688dd..569e4f2 100644 --- a/src/components/challenges.rs +++ b/src/components/challenges.rs @@ -1,6 +1,7 @@ -use leptos::{component, prelude::*}; +use leptos::prelude::*; use rustlanges_components::button::{Button, Variant as ButtonVariant}; +#[allow(non_snake_case)] pub fn DailyChallenges() -> impl IntoView { view! {
diff --git a/src/components/channels.rs b/src/components/channels.rs index db19c79..4ae9645 100644 --- a/src/components/channels.rs +++ b/src/components/channels.rs @@ -6,6 +6,7 @@ use rustlanges_components::{ icons::Youtube, }; +#[allow(non_snake_case)] pub fn Channels() -> impl IntoView { view! {
diff --git a/src/components/community_project.rs b/src/components/community_project.rs index f7603e3..d9451a6 100644 --- a/src/components/community_project.rs +++ b/src/components/community_project.rs @@ -1,23 +1,27 @@ -use leptos::{prelude::*, *}; +use leptos::prelude::*; use rustlanges_components::{ - avatar::Avatar, button::{Button, Variant}, - card::Card, - icons::{Book, Github, Project, Roadmap, StarBold}, + icons::{Github, StarBold}, }; -use crate::{ - components::{project_card::ProjectCard, GithubIcon}, - models::GithubUser, -}; +use crate::{components::project_card::ProjectCard, models::GithubUser}; #[component] pub fn CommunityProjectSection( #[prop(into, default = false)] many_projects: bool, ) -> impl IntoView { - let juanperas = GithubUser{ username: "juanperas", avatar: "https://avatars.githubusercontent.com/u/136520331?u=7353ba372f09091049692d6e95f5a8cd8a42565f&v=4" }; - let apika = GithubUser { username: "ApikaLucas", avatar: "https://avatars.githubusercontent.com/u/70247585?u=513513290efb6dc162afc899646e8e0467cedfc2&v=4"}; - let sergio = GithubUser { username: "Sergio", avatar: "https://avatars.githubusercontent.com/u/56278796?u=9e3dac947b4fd3ca2f1a05024e083c64e4c69cfe&v=4"}; + let juanperas = GithubUser { + username: "juanperas", + avatar: "https://avatars.githubusercontent.com/u/136520331?u=7353ba372f09091049692d6e95f5a8cd8a42565f&v=4", + }; + let apika = GithubUser { + username: "ApikaLucas", + avatar: "https://avatars.githubusercontent.com/u/70247585?u=513513290efb6dc162afc899646e8e0467cedfc2&v=4", + }; + let sergio = GithubUser { + username: "Sergio", + avatar: "https://avatars.githubusercontent.com/u/56278796?u=9e3dac947b4fd3ca2f1a05024e083c64e4c69cfe&v=4", + }; let users = vec![juanperas, apika, sergio]; @@ -94,7 +98,8 @@ pub fn CommunityProjectSection( } .into_any() } else { - view! { <> }.into_any() + let _: () = view! { <> }; + ().into_any() }} diff --git a/src/components/footer.rs b/src/components/footer.rs index 06c6469..6a9fe38 100644 --- a/src/components/footer.rs +++ b/src/components/footer.rs @@ -1,4 +1,4 @@ -use leptos::{prelude::*, *}; +use leptos::prelude::*; use rustlanges_components::{ button::{Button, Variant as ButtonVariant}, icons::{Discord, Github, Linkedin, Telegram}, diff --git a/src/components/head_information.rs b/src/components/head_information.rs index e2a19f8..96d4ef7 100644 --- a/src/components/head_information.rs +++ b/src/components/head_information.rs @@ -1,4 +1,4 @@ -use leptos::{component, prelude::*, view, IntoView}; +use leptos::{IntoView, component, prelude::*, view}; use leptos_meta::{Link, Meta, Stylesheet, Title}; use leptos_router::hooks::use_location; diff --git a/src/components/header.rs b/src/components/header.rs index 82b15a6..63f806f 100644 --- a/src/components/header.rs +++ b/src/components/header.rs @@ -1,9 +1,8 @@ use crate::{ components::icons::{NewLogoRustDarkPageIcon, NewLogoRustLightPageIcon}, - context::theme_provider::{use_theme, Theme}, + context::theme_provider::{Theme, use_theme}, }; use leptos::{leptos_dom::logging::console_log, prelude::*}; -use leptos_router::{components::A, hooks::use_url}; use leptos_use::{use_media_query, use_window}; use rustlanges_components::{ button::{Button, Variant}, @@ -30,7 +29,7 @@ pub fn Header() -> impl IntoView { let logo = move || match theme.get() { Theme::Dark => view! { }.into_any(), Theme::Light => view! { }.into_any(), - Theme::System if (move || is_dark_preferred_signal())() => { + Theme::System if is_dark_preferred_signal() => { view! { }.into_any() } Theme::System => view! { }.into_any(), @@ -43,7 +42,7 @@ pub fn Header() -> impl IntoView { }; let active_link_class = move |link: &str| { - if path() == format!("{:?}", link) { + if path() == format!("{link:?}") { "text-red-500 dark:text-orange-300" } else { "" diff --git a/src/components/icons/logo_rust_page.rs b/src/components/icons/logo_rust_page.rs index 8d75476..dcdc65a 100644 --- a/src/components/icons/logo_rust_page.rs +++ b/src/components/icons/logo_rust_page.rs @@ -2,14 +2,14 @@ use leptos::prelude::*; #[component] pub fn LogoRustPageIcon( - #[prop(default = 40)] size: u32, - #[prop(default = "dark:fill-[#e2cea9]")] class: &'static str, + #[prop(default = 40)] _size: u32, + #[prop(default = "dark:fill-[#e2cea9]")] _class: &'static str, ) -> impl IntoView { view! { diff --git a/src/components/icons/mod.rs b/src/components/icons/mod.rs index 8b89d93..0349f17 100644 --- a/src/components/icons/mod.rs +++ b/src/components/icons/mod.rs @@ -16,10 +16,8 @@ pub use discord_icon::*; pub use github_icon::*; pub use linkedin_icon::*; pub use location_icon::*; -pub use logo_rust_page::*; pub use next::*; pub use telegram_icon::*; pub use twitter_icon::*; -pub use web_icon::*; pub use new::{logo_rust_dark_page::*, logo_rust_light_page::*}; diff --git a/src/components/icons/web_icon.rs b/src/components/icons/web_icon.rs index 79126c9..82c749e 100644 --- a/src/components/icons/web_icon.rs +++ b/src/components/icons/web_icon.rs @@ -2,15 +2,15 @@ use leptos::prelude::*; #[component] pub fn WebIcon( - #[prop(default = 40)] size: u32, - #[prop(default = "fill-black dark:fill-[#bf8821]")] class: &'static str, + #[prop(default = 40)] _size: u32, + #[prop(default = "fill-black dark:fill-[#bf8821]")] _class: &'static str, ) -> impl IntoView { view! { diff --git a/src/components/our_sponsors.rs b/src/components/our_sponsors.rs index f405b1b..70e3524 100644 --- a/src/components/our_sponsors.rs +++ b/src/components/our_sponsors.rs @@ -1,4 +1,4 @@ -use leptos::{prelude::*, *}; +use leptos::prelude::*; use crate::components::sponsor_block::SponsorBlock; diff --git a/src/components/project_card.rs b/src/components/project_card.rs index 8b70dc2..af7503a 100644 --- a/src/components/project_card.rs +++ b/src/components/project_card.rs @@ -1,8 +1,9 @@ -use leptos::{children::Children, prelude::*, *}; +use leptos::prelude::*; use rustlanges_components::{avatar::Avatar, card::Card, icons::Github}; -use crate::{components::GithubIcon, models::GithubUser}; +use crate::models::GithubUser; +#[allow(unused_variables)] #[component] pub fn ProjectCard( #[prop(into)] title: &'static str, @@ -19,7 +20,9 @@ pub fn ProjectCard( }) .collect_view(); - let badge_classes = format!("flex w-fit project-card-badge ml-6 px-5 pb-1 pt-2 items-center justify-center gap-2 text-black border-2 border-b-0 border-black before:bg-orange-400 {badge_color}"); + let badge_classes = format!( + "flex w-fit project-card-badge ml-6 px-5 pb-1 pt-2 items-center justify-center gap-2 text-black border-2 border-b-0 border-black before:bg-orange-400 {badge_color}" + ); view! {
diff --git a/src/components/resources.rs b/src/components/resources.rs index 2faa3f1..14bb3b8 100644 --- a/src/components/resources.rs +++ b/src/components/resources.rs @@ -1,6 +1,5 @@ use leptos::{component, prelude::*}; use rustlanges_components::{ - badge::Badge, card::{Card, Variant as CardVariant}, chip::{Chip, Variant as ChipVariant}, input::{Filter, InputSearch}, @@ -9,6 +8,7 @@ use rustlanges_components::{ type ResourceAlias = Vec; +#[allow(unused_variables)] #[component] pub fn Resources() -> impl IntoView { let (resources, set_resources) = signal(vec![Filter { diff --git a/src/components/sponsor_block.rs b/src/components/sponsor_block.rs index 7fd9fc4..b862a60 100644 --- a/src/components/sponsor_block.rs +++ b/src/components/sponsor_block.rs @@ -1,4 +1,4 @@ -use leptos::{prelude::*, *}; +use leptos::prelude::*; #[component] pub fn SponsorBlock( diff --git a/src/components/why_rust.rs b/src/components/why_rust.rs index 33ceef7..49a38bd 100644 --- a/src/components/why_rust.rs +++ b/src/components/why_rust.rs @@ -1,10 +1,7 @@ use leptos::prelude::*; -use rustlanges_components::{ - avatar::Avatar, - button::{Button, Variant as ButtonVariant}, - card::Card, -}; +use rustlanges_components::card::Card; +#[allow(non_snake_case)] pub fn WhyRust() -> impl IntoView { view! {
diff --git a/src/context/theme_provider.rs b/src/context/theme_provider.rs index 626d6c0..6a1c0fa 100644 --- a/src/context/theme_provider.rs +++ b/src/context/theme_provider.rs @@ -1,15 +1,10 @@ use leptos::{ children::Children, - leptos_dom::logging::console_log, - logging::log, - prelude::{use_context, RwSignal, *}, + prelude::{RwSignal, use_context, *}, server::codee::string::JsonSerdeCodec, *, }; -use leptos_use::{ - storage::use_local_storage, use_media_query, use_preferred_dark, watch_with_options, - WatchOptions, -}; +use leptos_use::{storage::use_local_storage, use_media_query}; use serde::{Deserialize, Serialize}; /// Defines an enumeration for UI themes. /// @@ -30,6 +25,7 @@ impl Default for Theme { } } +#[allow(clippy::inherent_to_string)] impl Theme { /// Converts the `Theme` variant into a corresponding string. pub fn to_string(self) -> String { @@ -42,7 +38,7 @@ impl Theme { } /// Define a constant for the local storage key used to store the theme setting. -const STORAGE_KEY: &'static str = "theme"; +const STORAGE_KEY: &str = "theme"; /// Updates the class selector for the respective theme. /// This function is responsible for applying the correct CSS class to the HTML and body elements based on the current theme. @@ -92,8 +88,6 @@ pub fn use_theme() -> RwSignal { use_context::>().expect("there should be a global theme state") } -use leptos::prelude::*; - /// The `ThemeProvider` component. /// /// This component provides a theme context to its children, allowing them to access and react to theme changes. @@ -112,12 +106,12 @@ pub fn ThemeProvider(children: Children) -> impl IntoView { use_local_storage::(STORAGE_KEY); let theme_state = RwSignal::new(theme_storage_state.get_untracked()); - provide_context(theme_state.clone()); + provide_context(theme_state); // Update local storage and CSS whenever the theme state changes Effect::new(move |_| { let current_theme = theme_state(); - set_theme_storage_state.set(current_theme.clone()); + set_theme_storage_state.set(current_theme); update_css_for_theme( current_theme, is_dark_preferred_signal(), diff --git a/src/lib.rs b/src/lib.rs index 6f154ef..d7eb39f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -40,7 +40,6 @@ macro_rules! error { #[cfg(feature = "hydrate")] #[wasm_bindgen::prelude::wasm_bindgen] pub fn hydrate() { - use crate::app::*; console_error_panic_hook::set_once(); leptos::mount::hydrate_islands(); } diff --git a/src/pages/communities.rs b/src/pages/communities.rs index 4cd5ead..fd1fc88 100644 --- a/src/pages/communities.rs +++ b/src/pages/communities.rs @@ -11,11 +11,20 @@ use crate::{ #[component] pub fn Communities() -> impl IntoView { - let juanperas = GithubUser{ username: "juanperas", avatar: "https://avatars.githubusercontent.com/u/136520331?u=7353ba372f09091049692d6e95f5a8cd8a42565f&v=4" }; - let apika = GithubUser { username: "ApikaLucas", avatar: "https://avatars.githubusercontent.com/u/70247585?u=513513290efb6dc162afc899646e8e0467cedfc2&v=4"}; - let sergio = GithubUser { username: "Sergio", avatar: "https://avatars.githubusercontent.com/u/56278796?u=9e3dac947b4fd3ca2f1a05024e083c64e4c69cfe&v=4"}; + let juanperas = GithubUser { + username: "juanperas", + avatar: "https://avatars.githubusercontent.com/u/136520331?u=7353ba372f09091049692d6e95f5a8cd8a42565f&v=4", + }; + let apika = GithubUser { + username: "ApikaLucas", + avatar: "https://avatars.githubusercontent.com/u/70247585?u=513513290efb6dc162afc899646e8e0467cedfc2&v=4", + }; + let sergio = GithubUser { + username: "Sergio", + avatar: "https://avatars.githubusercontent.com/u/56278796?u=9e3dac947b4fd3ca2f1a05024e083c64e4c69cfe&v=4", + }; - let users = vec![ + let users = [ juanperas.clone(), apika.clone(), sergio.clone(), diff --git a/src/pages/contributors.rs b/src/pages/contributors.rs index e7f4521..83b4cb8 100644 --- a/src/pages/contributors.rs +++ b/src/pages/contributors.rs @@ -4,7 +4,7 @@ use leptos::prelude::*; use serde::{Deserialize, Serialize}; // Test this query on: https://docs.github.com/es/graphql/overview/explorer -const GRAPH_QUERY: &str = r#" +const _GRAPH_QUERY: &str = r#" query OrganizationContributors { organization(login: "RustLangES") { repositories(first: 100) { @@ -59,6 +59,7 @@ pub struct ContributionCollection { total: u64, } +#[allow(dead_code)] pub async fn fetch_contributors() -> Vec { // let request_body = json!({ // "query": GRAPH_QUERY, @@ -92,11 +93,8 @@ pub async fn fetch_contributors() -> Vec { .as_array() .unwrap_or(&Vec::new()) .iter() - .filter_map(|repo| { - (!repo["collaborators"].is_null()) - .then(|| repo["collaborators"]["nodes"].as_array().unwrap()) - }) - .flatten() + .filter(|&repo| !repo["collaborators"].is_null()) + .flat_map(|repo| repo["collaborators"]["nodes"].as_array().unwrap()) .filter_map(|c| leptos::serde_json::from_value::(c.clone()).ok()) .fold(HashMap::new(), |prev, c| { let mut prev = prev; diff --git a/src/pages/index.rs b/src/pages/index.rs index 415d93b..782196a 100644 --- a/src/pages/index.rs +++ b/src/pages/index.rs @@ -1,15 +1,12 @@ use leptos::prelude::*; -use leptos_router::hooks::use_url; -use rustlanges_components::{ - badge::{Type, Variant}, - button::{Button, Variant as ButtonVariant}, -}; +use rustlanges_components::button::{Button, Variant as ButtonVariant}; use crate::components::{ became_sponsor::BecameSponsorSection, community_project::CommunityProjectSection, footer::Footer, our_community::OurCommunitySection, our_sponsors::OurSponsorsSection, }; +#[allow(unused_variables)] #[component] pub fn Index() -> impl IntoView { let (gcount, wcount) = signal(20);