Reddit App API
UK

Reddit App API · 07 / 08

Нехай кожна картка пояснює справді отриманий запис

Проєктуйте картки, що зберігають ідентичність джерела, обробляють відсутні поля та екранують недовірений текст без вигаданих заголовків, гілок чи результатів пошуку.

Виберіть мінімум для корисного читання

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

Відокремлюйте ідентичність джерела від показаного тексту. Наявний id може допомогти відстежувати елемент, але заголовок чи уривок ненадійно замінюють ідентифікатор. Не об’єднуйте різні записи лише тому, що вони обговорюють одну фразу. Зберігайте вихідні дані доступними адаптеру, не показуючи в картці облікові дані сервісу або внутрішню діагностику.

Не вгадуйте відсутній тип чи заголовок

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

Розгляньте запропонований тестовий приклад із kind=comment, читабельним текстом, без заголовка й придатного посилання. Картка може показати «Коментар», «Посилання на джерело недоступне» і текст. Їй не потрібні згенерований заголовок чи вигаданий URL. Інший приклад може мати довгий заголовок допису; дозвольте перенесення або зрозуміле розгортання. Це приклади для тестування, а не твердження про записи, що існують в архіві.

Показуйте текст як недовірений вміст

Безпечно екрануйте недовірений текст перед вставленням в інтерфейс. Зберігайте змістовні розриви абзаців, але не трактуйте довільний вміст запису як HTML-інструкції. Якщо згодом додасте Markdown, виберіть і перевірте обмежену політику відображення. Звичайний текст підходить для першої версії та не обіцяє ще не реалізованого форматування.

Перевіряйте посилання на джерело перед увімкненням переходу, а відсутнє чи непридатне значення обробляйте як відсутнє. Чітко позначайте, куди веде зовнішнє посилання. Дії повинні мати читабельні підписи, доступ із клавіатури та осмислений порядок фокуса. Самої спливної підказки недостатньо, щоб кожен читач зрозумів відсутність дати чи посилання.

Чесно показуйте дати й контекст розмови

Якщо придатна часова позначка створення є, послідовно показуйте її значення й формат. Інакше вкажіть «Дата недоступна». Не копіюйте дату батьківського допису до коментаря: вони не обов’язково створені одночасно. Дата отримання, записана застосунком, описує завантаження, а не вік початкового обговорення.

За наявності parent_id або link_id локальне групування може пов’язати записи, уже присутні у вашому результаті. Ці поля не відновлюють відсутніх предків, не встановлюють повноти гілки й не надають нового фільтра запиту. Поточний API не має фільтрів parent_id або link_id. Картка може визнати відсутність контексту, не будуючи уявної розмови.

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

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

Успішний порожній масив data належить до порожнього стану списку, а не до картки помилки; він усе одно коштує один кредит. До запропонованих тестових прикладів включіть довгий заголовок, відсутні текст і дату, непридатне посилання та невідомий kind, а тоді огляньте вузький екран. Це перевірки вашої майбутньої реалізації, а не тести, проведені цим посібником. У /uk/#field-notes є нотатки про вік джерела й стани інтерфейсу.