mirror of
https://github.com/modrinth/code.git
synced 2026-08-25 00:55:25 +00:00
qa: shared instances post release (#6893)
* fix: 20 user cap * qa: invite modal dropdown + other + clamp limits * fix: hide filters if just one type * feat: update req banner * feat: invite management frontend * fix: moderation issues with shared instances * feat: instance icon improvements * fix: better offline handling * fix: lint * feat: show avatar in install to play modal * feat: smaller qa points * fix: fmt * fix: fmt * fix: yeet svg * fix: 50 user limit
This commit is contained in:
@@ -56,6 +56,8 @@ pub fn init<R: tauri::Runtime>() -> tauri::plugin::TauriPlugin<R> {
|
||||
instance_share_get_users,
|
||||
instance_share_invite_users,
|
||||
instance_share_create_invite_link,
|
||||
instance_share_get_invites,
|
||||
instance_share_revoke_invite,
|
||||
instance_share_remove_users,
|
||||
instance_share_get_publish_preview,
|
||||
instance_share_publish,
|
||||
@@ -825,6 +827,27 @@ pub async fn instance_share_create_invite_link(
|
||||
.await?)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn instance_share_get_invites(
|
||||
instance_id: &str,
|
||||
) -> Result<Vec<theseus::instance::SharedInstanceInvite>> {
|
||||
Ok(theseus::instance::get_shared_instance_invites(instance_id).await?)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn instance_share_revoke_invite(
|
||||
instance_id: &str,
|
||||
invite_id: String,
|
||||
) -> Result<()> {
|
||||
Ok(
|
||||
theseus::instance::revoke_shared_instance_invite(
|
||||
instance_id,
|
||||
invite_id,
|
||||
)
|
||||
.await?,
|
||||
)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn instance_share_remove_users(
|
||||
instance_id: &str,
|
||||
|
||||
+13
-2
@@ -91,14 +91,25 @@ macro_rules! impl_serialize {
|
||||
theseus::ErrorKind::SharedInstanceUnavailable(reason) => Some(reason),
|
||||
_ => None,
|
||||
};
|
||||
let code = match theseus_error.raw.as_ref() {
|
||||
theseus::ErrorKind::SharedInstanceUnavailable(_) => {
|
||||
Some("shared_instance_unavailable")
|
||||
}
|
||||
theseus::ErrorKind::SharedInstancesApiError(_) => {
|
||||
Some("shared_instances_api_error")
|
||||
}
|
||||
_ => None,
|
||||
};
|
||||
let mut state = serializer.serialize_struct(
|
||||
"Theseus",
|
||||
if unavailable_reason.is_some() { 4 } else { 2 },
|
||||
2 + usize::from(code.is_some()) + usize::from(unavailable_reason.is_some()),
|
||||
)?;
|
||||
state.serialize_field("field_name", "Theseus")?;
|
||||
state.serialize_field("message", &theseus_error.to_string())?;
|
||||
if let Some(code) = code {
|
||||
state.serialize_field("code", code)?;
|
||||
}
|
||||
if let Some(reason) = unavailable_reason {
|
||||
state.serialize_field("code", "shared_instance_unavailable")?;
|
||||
state.serialize_field("reason", reason)?;
|
||||
}
|
||||
state.end()
|
||||
|
||||
Reference in New Issue
Block a user