驯服帖子列表

2026年9月8日 admini18nsvelte

昨天的语言工作有一个副作用我只注意到当我今天打开管理面板时:贴子列表已经增加三倍。每个贴子现在是一个真正的行每个语言在下面,那是对的数据模型,但管理员列表显示了所有它们。34 贴子,102 行,和一个我想编辑埋葬在它自己的挪威语和西班牙语双生之间。看起来像一个混乱因为它是一个。

修复有两个一半。列表现在过滤到一个语言为默认(英语),所以每个贴子显示一次,并且每行携带一个小芯片条显示哪个版本存在和他们的状态。绿色芯片,已发布。灰色芯片,仍然一个草稿。点击一个芯片而且你降落在那个版本的编辑中。一个过滤选择让我翻转整个列表到挪威语,西班牙语,或旧的所有东西查看当我真的想它时。

修复后的管理贴子列表,一行每个贴子有语言芯片

第二个一半是内部编辑。小语言徽章在角落变成了一个下拉。拿一个语言那已经存在而且你跳进直接到那个版本。拿一个这不存在还而且它创建了预填充的草稿当场并带你那里。决定逻辑足够小来测试作为一个纯函数:

export function resolveLanguageSwitch(
    current: Language,
    siblings: LanguageSwitchSibling[],
    selected: Language
): LanguageSwitchResult {
    if (selected === current) return { type: 'noop' };
    const sibling = siblings.find((s) => s.language === selected);
    return sibling ? { type: 'navigate', id: sibling.id } : { type: 'create' };
}

有一个竞争躲在那个创建路径中:如果版本某种方式得到创建加载页面和拿语言之间,创建请求应答 409。第一个本能是显示一个错误,但从编辑器点击意味着"带我到西班牙语版本",所以在一个 409 服务器动作只查找向上哪个行赢并导航那里而不是。用户要求切换,所以切换。

芯片需要了一个小后端添加太。列表端点不知道关于同胞,并询问每行将意味着一个查询每个贴子在每个页面负载。替代一个批量的查询获取每个同胞跨越整个页面的翻译组一次而且处理器折叠它们进入每行。一个额外的查询总计,不三十。

审查在合并前抓住了一个真正的 bug:一个未被承认的语言在 URL 中(说一个过期的书签有 ?language=de)正确地掉回到英语对于数据,但过滤下拉被告诉了原始值并静地不同步从什么列表实际上显示。一行,但恰好一种种谎言一个 UI 不应该告诉。

诚实的剩余:编辑仍然有旧翻译面板更低向下,现在冗余旁边下拉。它工作,它只是重复的,并且它可以在后来清理。列表,虽然,回到了 34 行,和混乱的周每个贴子三倍存在是结束。

0 条评论

登录 后即可评论。

登录

忘记密码?

还没有账号?