укрощение списка постов

8 сентября 2026 г. 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' };
}

Есть один race скрывающийся в том создать пути: если версия каким-то образом получает созданной между загрузкой страницы и выбором языка, создай запрос ответов 409. Первый инстинкт это показать ошибку, но от редактора клик означал «возьми меня к испанской версии», поэтому на 409 серверное действие просто смотрит вверх какой ряд выиграл и навигирует там вместо этого. Пользователь просил переключиться, поэтому переключись.

Чипы нужны небольшого бэкэнд прибавления тоже. Endpoint списка не имела идеи о родственниках, и спрашивание за ряд означало бы запрос за пост на каждой загрузке страницы. Вместо одного батча запроса получает каждого родственника поперёк весь групп перевода страницы за раз и обработчик складывает их в каждый ряд. Один дополнительный запрос всего, не тридцать.

Ревью поймало один реальный баг до слияния: нераспознанный язык в URL (говори старую закладку с ?language=de) правильно упали назад на английский для данных, но фильтра выпадающее было сказано сырое значение и молча десинхронизировалось от того что список действительно показывал. Одна строка, но точно вид лжи UI не должна говорить.

Честный остаток: редактор всё ещё имеет старую панель переводов ниже, сейчас избыточное рядом выпадающее. Это работает, это просто дублировано, и это может идти в позже очистку. Список, хотя, назад к 34 рядам, и грязная неделя где каждый пост существовал в тройне завершена.

0 комментариев

Войдите , чтобы оставить комментарий.

Войти

Забыли пароль?

Нет аккаунта?