add :emote and :list to chat
This commit is contained in:
parent
1ca300098f
commit
bd28e201a2
7 changed files with 741 additions and 22 deletions
|
|
@ -10,7 +10,7 @@ use axum::{
|
|||
use sqlx::PgPool;
|
||||
|
||||
use chattyness_db::{
|
||||
models::AvatarRenderData,
|
||||
models::{AvatarRenderData, EmotionAvailability},
|
||||
queries::{avatars, realms},
|
||||
};
|
||||
use chattyness_error::AppError;
|
||||
|
|
@ -37,3 +37,25 @@ pub async fn get_current_avatar(
|
|||
|
||||
Ok(Json(render_data))
|
||||
}
|
||||
|
||||
/// Get emotion availability for the user's avatar.
|
||||
///
|
||||
/// GET /api/realms/{slug}/avatar/emotions
|
||||
///
|
||||
/// Returns which emotions are available (have configured assets) for the user's
|
||||
/// active avatar in this realm, along with preview paths for the emotion picker UI.
|
||||
pub async fn get_emotion_availability(
|
||||
State(pool): State<PgPool>,
|
||||
AuthUser(user): AuthUser,
|
||||
Path(slug): Path<String>,
|
||||
) -> Result<Json<EmotionAvailability>, AppError> {
|
||||
// Get realm
|
||||
let realm = realms::get_realm_by_slug(&pool, &slug)
|
||||
.await?
|
||||
.ok_or_else(|| AppError::NotFound(format!("Realm '{}' not found", slug)))?;
|
||||
|
||||
// Get emotion availability
|
||||
let availability = avatars::get_emotion_availability(&pool, user.id, realm.id).await?;
|
||||
|
||||
Ok(Json(availability))
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue