feat: move users page to xplat page system (#6889)

* feat: move users page to xplat

* feat: stop doing tauri plugin open for user links

* feat: qa

* fix: qa

* fix: qa

* fix: comment

* fix: prepr

* prepr

* prepr

* prepr

---------

Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
This commit is contained in:
Calum H.
2026-07-27 20:02:33 +00:00
committed by GitHub
co-authored by Prospector
parent ebc7cac8b0
commit 7c4190fb9c
64 changed files with 1569 additions and 4028 deletions
+100 -1
View File
@@ -1,7 +1,8 @@
use crate::State;
use crate::util::fetch::fetch_json;
use crate::util::fetch::{fetch_advanced, fetch_json};
use reqwest::Method;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct SearchUser {
@@ -30,3 +31,101 @@ pub async fn search_user(query: &str) -> crate::Result<Vec<SearchUser>> {
)
.await
}
#[tracing::instrument]
pub async fn get_user_profile(user_id: &str) -> crate::Result<Value> {
let state = State::get().await?;
let user_id = urlencoding::encode(user_id);
fetch_json(
Method::GET,
&format!("{}user/{}", env!("MODRINTH_API_URL_V3"), user_id),
None,
None,
Some("/v3/user/:id"),
&state.api_semaphore,
&state.pool,
)
.await
}
#[tracing::instrument]
pub async fn get_user_projects(user_id: &str) -> crate::Result<Value> {
let state = State::get().await?;
let user_id = urlencoding::encode(user_id);
fetch_json(
Method::GET,
&format!("{}user/{}/projects", env!("MODRINTH_API_URL"), user_id),
None,
None,
Some("/v2/user/:id/projects"),
&state.api_semaphore,
&state.pool,
)
.await
}
#[tracing::instrument]
pub async fn get_user_organizations(user_id: &str) -> crate::Result<Value> {
let state = State::get().await?;
let user_id = urlencoding::encode(user_id);
fetch_json(
Method::GET,
&format!(
"{}user/{}/organizations",
env!("MODRINTH_API_URL_V3"),
user_id
),
None,
None,
Some("/v3/user/:id/organizations"),
&state.api_semaphore,
&state.pool,
)
.await
}
#[tracing::instrument]
pub async fn get_user_collections(user_id: &str) -> crate::Result<Value> {
let state = State::get().await?;
let user_id = urlencoding::encode(user_id);
fetch_json(
Method::GET,
&format!(
"{}user/{}/collections",
env!("MODRINTH_API_URL_V3"),
user_id
),
None,
None,
Some("/v3/user/:id/collections"),
&state.api_semaphore,
&state.pool,
)
.await
}
#[tracing::instrument(skip(patch))]
pub async fn patch_user(user_id: &str, patch: Value) -> crate::Result<()> {
let state = State::get().await?;
let user_id = urlencoding::encode(user_id);
fetch_advanced(
Method::PATCH,
&format!("{}user/{}", env!("MODRINTH_API_URL"), user_id),
None,
Some(patch),
None,
None,
None,
Some("/v2/user/:id"),
&state.api_semaphore,
&state.pool,
)
.await?;
Ok(())
}