Add public work read model and smooth puzzle transitions

This commit is contained in:
kdletters
2026-05-26 16:38:27 +08:00
parent 545f315cbc
commit aeee782fe0
47 changed files with 2679 additions and 79 deletions

View File

@@ -549,6 +549,19 @@ fn runtime_config_snapshot(row: &BarkBattlePublishedConfigRow) -> BarkBattleRunt
}
}
fn resolve_bark_battle_author_display_name(
ctx: &AnonymousViewContext,
owner_user_id: &str,
) -> String {
ctx.db
.user_account()
.user_id()
.find(&owner_user_id.to_string())
.map(|account| account.display_name.trim().to_string())
.filter(|display_name| !display_name.is_empty())
.unwrap_or_else(|| "玩家".to_string())
}
fn build_bark_battle_gallery_view_row(
ctx: &AnonymousViewContext,
row: &BarkBattlePublishedConfigRow,
@@ -563,6 +576,7 @@ fn build_bark_battle_gallery_view_row(
Ok(BarkBattleGalleryViewRow {
work_id: row.work_id.clone(),
owner_user_id: row.owner_user_id.clone(),
author_display_name: resolve_bark_battle_author_display_name(ctx, &row.owner_user_id),
source_draft_id: row.source_draft_id.clone(),
config_version: row.config_version,
ruleset_version: row.ruleset_version.clone(),
@@ -1096,6 +1110,7 @@ mod tests {
let row = BarkBattleGalleryViewRow {
work_id: "BB-33333333".to_string(),
owner_user_id: "user-3".to_string(),
author_display_name: "玩家".to_string(),
source_draft_id: Some("bark-battle-draft-3".to_string()),
config_version: 1,
ruleset_version: BARK_BATTLE_DEFAULT_RULESET_VERSION.to_string(),
@@ -1115,6 +1130,9 @@ mod tests {
published_at_micros: 1_713_686_401_234_000,
};
assert_eq!(row.onomatopoeia, vec!["轰!".to_string(), "炸场!".to_string()]);
assert_eq!(
row.onomatopoeia,
vec!["轰!".to_string(), "炸场!".to_string()]
);
}
}