Reddit App API
RU

Reddit App API · 07 / 08

Пусть карточка объясняет действительно полученную запись

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

Выберите минимум для полезного чтения

В иллюстративном туристическом приложении карточка должна помогать читателю решить, открывать ли исторический материал. Начните с доступного текста, контекста источника, даты и пригодной ссылки. API возвращает плоские записи, а не готовую модель карточки, и не гарантирует наличие каждого выбранного поля. Постройте небольшой адаптер между записями и экраном.

Отделяйте идентичность источника от отображаемого текста. При наличии id записи приложение может отслеживать её по нему, но заголовок или отрывок ненадёжны как замена идентификатора. Не объединяйте разные записи из-за обсуждения одной фразы. Сохраняйте исходные данные доступными адаптеру, не показывая в карточке учётные данные сервиса или внутреннюю диагностику.

Не угадывайте отсутствующий вид записи или заголовок

Используйте корректное значение kind, если оно доступно: post и comment предполагают разные подписи. При отсутствующем или неизвестном kind выбирайте нейтральную подпись «Архивная запись». Не считайте каждую неизвестную запись комментарием и не подразумевайте, что отдельный комментарий представляет всё родительское обсуждение.

Представьте тестовый пример с kind=comment, читаемым текстом, без заголовка и пригодной ссылки. Его карточка может показывать «Комментарий», «Ссылка на источник недоступна» и текст. Ей не нужен сгенерированный заголовок или выдуманный URL. В другом примере может быть длинный заголовок публикации; разрешите перенос или понятное раскрытие. Это примеры для тестирования, а не утверждение о наличии таких записей в архиве.

Считайте прозу недоверенным содержимым

Безопасно экранируйте недоверенный текст перед вставкой в интерфейс. Сохраняйте значимые разрывы абзацев, но не воспринимайте произвольное содержимое записи как HTML-инструкции. Если позже добавите Markdown, выберите и проверьте ограниченную политику отображения. Обычный текст подходит для первой версии и не обещает ещё не реализованное форматирование.

Проверяйте ссылку на источник до того, как делать её активной; отсутствующее или непригодное значение обрабатывайте как отсутствующее. Ясно обозначайте назначение внешней ссылки. Обеспечьте читаемые подписи действий, доступ с клавиатуры и разумный порядок фокуса. Одной всплывающей подсказки недостаточно, чтобы объяснить недоступность даты или ссылки каждому читателю.

Честно показывайте даты и контекст беседы

При наличии пригодной отметки создания последовательно показывайте её смысл и формат. Иначе пишите «Дата недоступна». Не копируйте дату родительской публикации в комментарий: они могли быть созданы в разное время. Дата получения, записанная приложением, описывает загрузку, а не возраст исходного обсуждения.

Если есть parent_id или link_id, локальная группировка может связать уже имеющиеся записи результата. Эти поля не восстанавливают отсутствующих предков, не устанавливают полноту ветки и не дают новый фильтр запроса. Текущий API не предоставляет фильтр parent_id или link_id. Карточка может признать отсутствие контекста, не конструируя мнимую беседу.

Отделяйте управление списком от адаптера карточек

Пагинация уровня списка должна читать pagination.has_more и учитывать предел страниц. Не включайте и не отключайте «Показать ещё» лишь потому, что pagination.relation равно eq или gte: эта связь описывает общее количество, а не управление продолжением. Нижняя граница или неизвестный итог также не доказывают недостоверность видимых записей.

Успешный пустой массив data относится к пустому состоянию списка, а не к карточке ошибки; он всё равно стоит один кредит за запрос. Для предлагаемой проверки примеров включите длинный заголовок, отсутствующие текст и дату, непригодную ссылку и неизвестный kind, затем изучите узкий экран. Это проверки будущей реализации, а не тесты, выполненные этим руководством. В /ru/#field-notes есть заметки о возрасте источника и состояниях интерфейса.