Кожен екран і функція iOS-застосунку: що вже працює з реальним сервером, що лише виглядає робочим і чого бракує. Повна картина стану клієнта.
Перевірено. «Наживо»: запускали на симуляторі чи iPhone з локальним сервером. «За кодом»: читали код і схему сервера, але не запускали.
| Екран або функція | Статус | Що працює | Чого бракує | Сервер | Перевірено |
|---|---|---|---|---|---|
| Вхід і онбординг | |||||
| Вхід за email-посиланням | Готово | Запит листа, вхід за посиланням, обмін токена на сесію сервера; Debug-вхід для розробки. | Посилання працюють через схему radarly://; універсальні посилання потребують платного акаунта. | requestEmailSignIn, exchangeIdentityToken | наживо |
| Вхід через Apple і Google | Частково | Код є. | Не перевірено наживо; Sign in with Apple потребує платного акаунта. | exchangeIdentityToken | не перевірено |
| Онбординг: профіль, стать, дата народження | Готово | Кроки зберігаються; повторне проходження перезаписує дані. | – | completeOnboardingStep, updateProfile | наживо |
| Онбординг: фото й аватар | Частково | Вибір із галереї, завантаження, порядок галереї зберігається. | Кнопка «Take Photo» порожня (камера не підключена). Фото, прибране на кроці, лишається в профілі. | createUploadIntent, addProfilePhoto | наживо |
| Онбординг: геолокація й пуші | Готово | Запити дозволів; токен пристрою реєструється. | Доставка пушів не перевірена. | registerDevice | наживо |
| Блокуючий екран згоди | Не зроблено | – | На екрані входу є галочка згоди з політикою, а блокуючого екрана для нових документів (сервер каже, які не прийняті) нема. | acceptDocuments, pendingDocuments | за кодом |
| Екран бану | Частково | Екран із текстом і кнопкою виходу; прапор isBanned приходить у сесії. | Не перевірено з реальним забаненим акаунтом. Окремого екрана заморозки нема й не потрібно: вхід розморожує акаунт. | accountStatus | за кодом |
| Карта і радар | |||||
| Радар: люди й події, піни | Готово | Люди й події навколо з сервера, піни, відстань. | Дані демо в Нью-Йорку. | nearbyUsers, nearbyEvents | наживо |
| Радіус, стать і «Hide my activity» | Готово | Радіус і стать у фільтрах; приховування активності з сервера (Premium). | Без Premium перемикач «Hide my activity» відкриває Paywall. | updateSettings, entitlements | наживо частково |
| Шторка Люди, Події, Профіль | Готово | Три вкладки зі списками із сервера. | Вкладка «Профіль» без макета. Нижні тости там не видно. | – | наживо |
| Бічне меню: лічильники | Готово | Chats, Favorites, Activity, My events із сервера. | Chats рахує чати з непрочитаним, а не повідомлення. | me { unreadConversationCount … } | наживо |
| Бічне меню: Share app | Макет | Пункт є. | Показує «Coming soon». | – | за кодом |
| Бічне меню: Support | Частково | Відкриває лист на support@radarly.app. | На пристрої не перевірено; адресу варто брати з appConfig. | – | за кодом |
| Тур по карті після онбордингу | Чекає | Підказка «Welcome to the Radar» показується один раз після онбордингу (перенесена з v2). | Чекає: у новому макеті такого кроку нема. | – | за кодом |
| Банер про доступ до геолокації | Готово | Просить дозвіл або веде в Settings, коли доступ відхилено. | – | – | за кодом |
| Попередження про приблизну локацію | Не зроблено | – | Якщо дозволено лише приблизну локацію, людину не видно на радарі, а застосунок про це мовчить. | updateLocation | за кодом |
| Профіль іншої людини | |||||
| Дані профілю й галерея | Частково | Імʼя, вік, опис, відстань, онлайн, аватар. | Галерея фото не завантажується: застосунок не викликає запит user(id), який на сервері є. Тож у профілі лише аватар. | user(id), nearbyUsers | за кодом |
| Instagram і Telegram | Готово | Кнопки відкривають мережу, коли ім’я вказано; тап повідомляється серверу. | Запис відкриття перевірено лише тестами: у демо-людей нема посилань. | recordSocialLinkOpen | тестами |
| Перегляд профілю в активності | Готово | Відкриття профілю повідомляється серверу один раз за візит (свій профіль не рахується). | – | recordProfileView | наживо |
| Сердечко: обране | Готово | Додає й прибирає з приватного обраного. | – | addFavorite, removeFavorite | наживо |
| Лайк профілю (через сердечко) | Готово | Сердечко на профілі шле лайк разом з обраним; окремої кнопки нема (так вирішено), лайк не знімається. | – | likeUser | наживо |
| Написати: старт чату | Готово | Відкриває наявний чат або чернетку нового. | – | conversations, sendMessage | наживо |
| Report і Block | Готово | Меню «⋯»: Report (шторка з 6 причинами й текстом) і Block (підтвердження, профіль закривається, радар оновлюється). | – | reportUser, blockUser | наживо |
| Події | |||||
| Вкладка Події, кнопка вступу | Готово | Список; шість станів кнопки (вступ, запит, вихід…). | – | joinEvent, requestToJoinEvent, leaveEvent | наживо |
| Деталі події | Готово | Дані, учасники, обкладинка (читання). | У демо лише одна подія з обкладинкою. | event | наживо |
| Створення події | Готово | Створює подію на сервері в поточній локації; назва місця й адреса з геокодера. | Вибір місця на мапі (перетягування піна) не робимо, рішення 14.10; Preview: «Coming soon». | createEvent | наживо |
| Керування: реєстрація, люди, запрошення | Готово | Перемикач реєстрації, учасники, запрошення. | Посилання-запрошення застосунок не вміє відкрити. | setEventRegistrationOpen, approveJoinRequest, inviteToEvent | наживо |
| Керування: Edit details | Готово | Форма створення, заповнена; надсилає лише змінені поля; межа місць. | Локація не редагується. | updateEvent | наживо |
| Керування: Move to another time | Готово | Півекранний аркуш із календарем; сервер сповіщає учасників. | Доставка пушу не перевірена. | rescheduleEvent | наживо |
| Керування: Cancel, Archive, Unarchive | Готово | Cancel для майбутніх, Archive для минулих, мітка Archived, чат закритий. | Те, що інші не бачать архівну подію, не перевіряли. | cancelEvent, archiveEvent, unarchiveEvent | наживо |
| Мої події й оцінка | Готово | Upcoming, Hosting, Past; оцінка зірками. | – | myEvents, rateEvent | наживо |
| Подія за посиланням | Не зроблено | Посилання генеруються. | Посилання radarly.app/e/… застосунок створює й копіює, а відкрити подію за ним не вміє (ні на цьому, ні на іншому телефоні). | eventBySlug, joinEventByLink | – |
| Список подій: «· Anya» і «· N new messages» | Не зроблено | – | Ці примітки завжди порожні: застосунок не підставляє друзів із обраних і лічильник непрочитаних із чату події. | – | за кодом |
| Позначка «verified» у ведучого | Не зроблено | – | У картці події біля «N events hosted» має бути «· verified». Сервер її рахує, але застосунок не запитує поле, тож вона не з’являється. | host { isVerified } | за кодом |
| Учасники: вкладки Requests і Invited | Макет | Запити обробляються в блоці «Waiting for you». | Самі вкладки показують «Coming soon», хоча застосунок уже отримує обидва списки з сервера; лишилось їх показати. | eventMembers | наживо |
| Учасники: перехід у профіль | Не зроблено | – | У списку Going тап по людині нічого не робить (має відкривати її профіль). | – | за кодом |
| Чати | |||||
| Список чатів | Готово | Список, mute (значок у PR #80), видалення, бейджі. | Нові повідомлення не з’являються без оновлення; пагінація списку понад 50 не зроблена. | conversations, muteConversation, deleteConversation | наживо |
| Чат: читання повідомлень | Готово | Текст, фото, голосове, локація (картка), опитування, системні; галочки. | – | messages, markConversationRead | наживо |
| Чат: відправлення тексту | Готово | Надсилає, повтор не дублює, помилка повертає текст у поле. | – | sendMessage | наживо |
| Чат: відправлення фото | Макет | Меню Attach, вибір фото. | Вибране фото ігнорується (випадкова картинка), на сервер нічого не йде. | sendMessage (PHOTO), завантаження | за кодом |
| Чат: голосове | Макет | Екран запису з таймером. | Звук не записується, хвиля випадкова. | sendMessage (VOICE) | за кодом |
| Чат: локація | Макет | Кнопка в меню Attach. | Лише закриває меню; вибору точки нема. | sendMessage (LOCATION) | за кодом |
| Чат: відео | Не зроблено | – | Нема інтерфейсу відправлення; отримане відео показується текстом. | sendMessage (VIDEO) | за кодом |
| Чат: пагінація історії | Готово | Підвантаження старіших повідомлень при прокрутці вгору (PR #82 влито). | На пристрої ще не пробували, лише тести. | messages (before) | тестами |
| Чат: живі оновлення | Чекає | – | Чекає на готовий канал живих подій із сервера; клієнт пишемо після цього. | inbox, conversationEvents | – |
| Чат: статус онлайн | Не зроблено | Завжди offline. | Клієнт не шле heartbeat і не питає presence: у чаті з людиною завжди offline, у чаті події завжди «0 online». | heartbeat, presence | за кодом |
| Індикатор «друкує…» | Не зроблено | – | У списку чатів є місце під «typing…», але застосунок його не показує. Залежить від каналу живих подій. | realtimeAuth | – |
| Чат події: закріплене й опитування (показ) | Готово | Закріплене в банері; опитування з питанням і голосами; чат закритий для архівної події. | – | pinnedMessages, poll | наживо |
| Чат події: голосування й закріплення | Не зроблено | – | Опитування й закріплення лише показуються. | voteEventPoll, closeEventPoll, pinMessage | – |
| Чат події: швидкі статуси | Макет | Чіпи «I’m on my way». | Змінюються лише локально, на сервер не йдуть. | setEventStatusUpdate | за кодом |
| Чат: роздільники днів | Не зроблено | – | Зверху завжди один підпис «Today», навіть для старих повідомлень; поділу за днями (Today, Yesterday, дата) нема. | – | за кодом |
| Обране й активність | |||||
| Обране | Готово | Список, зняття; сердечко на профілі додає в обране й лайкає. | Демо-даних лише для основного акаунта. | favorites | наживо |
| Активність: показ | Готово | Усі 10 видів, приховування для безкоштовних (сервер), позначка «переглянуто». | Записи старші за вчора не показуються: розділу «Раніше» нема. | activityFeed, markActivitySeen | наживо |
| Активність: створення записів | Готово | Усі десять видів: перегляд профілю, відкриття Instagram/Telegram, лайк (сердечко додає в обране й лайкає) і сім видів від наявних дій. | Лайк не знімається (так задумано); відкриття соцмережі перевірене лише тестами. | recordProfileView, recordSocialLinkOpen, likeUser | наживо частково |
| Активність: Approve і Accept | Макет | Route відкриває Карти й працює. | Approve і Accept лише змінюють вигляд кнопки: сервер нічого не отримує, запит на вступ лишається непідтвердженим, запрошення не приймається. | approveEventRequest, joinEvent | за кодом |
| Налаштування | |||||
| Профіль: ім’я, статус, фото, аватар | Готово | Редагування, завантаження фото й аватарки. | Аватар ще не можна прибрати (сервер уже вміє, кнопки нема). Статус до 140 символів, у макеті 25. | updateProfile, setAvatar, removeAvatar | наживо |
| Соцмережі | Готово | Прив’язка, відв’язка, видимість. | – | linkSocial, unlinkSocial | наживо |
| Приватність і сповіщення | Готово | Приховати вік, активність, невидимка; пуші «поруч» і «підсумок дня». | Перемикача email-сповіщень нема (поле є на сервері, але не в GraphQL). Підпис під «Hide my activity» однаковий для всіх, а для безкоштовних за макетом має бути «Premium only…». | updateSettings | наживо |
| Заблоковані | Готово | Список, розблокування і блокування з профілю. | – | blockedUsers, unblockUser | наживо |
| Мова | Макет | Перемикач змінює підпис. | Нічого не змінює. Рішення: мова сповіщень = мова пристрою. | – | за кодом |
| Restore purchases | Макет | Пише «Purchases restored». | Нічого не відновлює. | restorePurchases | за кодом |
| Банер оновлення | Макет | Показує «Update now to 3.2.0» завжди. | Вигадана версія; реальні версії з сервера. | appConfig | за кодом |
| Freeze і Delete account | Готово | Freeze справжній (вихід, повернення входом); Delete через 6-значний код із пошти, лічильник спроб, повторна відправка. | – | freezeAccount, requestAccountDeletion, confirmAccountDeletion | наживо |
| Вихід | Готово | – | – | signOut | наживо |
| Покупки | |||||
| Paywall | Макет | Екран за макетом: плани, таблиця порівняння. | Ціни зашиті, кнопка нічого не купує, Restore, Terms і Privacy порожні. Сервер віддає плани (paywall), застосунок їх не запитує. Показується після онбордингу, тож його треба підключити. | paywall, confirmPurchase | за кодом |
| Права Premium | Готово | Читаються із сервера; замки в інтерфейсі. | Купити Premium не можна. | me { entitlements } | наживо |
| Пуші | |||||
| Реєстрація токена пристрою | Готово | Пристрій реєструється на сервері (модель, мова, версія). | Токен для пушів на симуляторі не отримується, лише на справжньому iPhone. | registerDevice, unregisterDevice | наживо частково |
| Доставка пушів | Чекає | Сервер створює задачі на пуші. | Відправник локально в режимі пам’яті; потрібні ключ APNs, акаунт і пристрій. | – | – |
| Реакція на тап по пушу | Не зроблено | – | Немає обробника сповіщень: тап не відкриває чат чи подію, а при відкритому застосунку пуш не показується. | – | за кодом |
| Інфраструктура | |||||
| Локалізація інтерфейсу | Частково | 54 із 254 ключів мають переклад (en, es, ru, tr, uk). | У каталозі 254 ключі, перекладено лише 47 (англійська, українська) і 41 (іспанська, російська, турецька); більшість текстів зашита англійською. | – | за кодом |
| Аналітика онбордингу | Макет | Події кроків онбордингу (відкрито, завершено, пропущено, дозволи). | Лише друкуються в консоль; нікуди не надсилаються (у реальній версії мали б іти у Firebase). | – | за кодом |