mnemo_cards/games/EVENTS_FIX.md
2025-11-11 02:55:41 +03:00

4.6 KiB
Raw Blame History

🔧 Исправление логики отображения событий

Проблема решена

🎯 Проблема

  • Приложения показывали события, которые они сами отправили
  • Не было четкого разделения между отправленными и полученными событиями
  • Ping не получал ответ Pong

🔧 Решение

  • Приложения теперь показывают только полученные события
  • Убрано отображение собственных отправленных событий
  • Упрощена цветовая схема (только зеленый для полученных)

📝 Внесенные изменения

1. Убрано добавление событий при отправке

Host App:

// Удалено из всех методов отправки:
_addEvent('Sent', 'PingPayload', pingPayload.toString());
_addEvent('Sent', 'ShowNativeDialogPayload', dialogPayload.toString());
_addEvent('Sent', 'SecretAdminCommandPayload', adminPayload.toString());

Web App:

// Удалено из всех методов отправки:
_addEvent('Sent', 'PingPayload', 'Hello from Web App 1!');
_addEvent('Sent', 'GetUserInfoPayload', 'Requesting user info');
_addEvent('Sent', 'LoginRequestPayload', 'Login request for $username');
_addEvent('Sent', 'SubmitQuizPayload', 'Quiz results for quiz $quizId');

2. Обновлены заголовки панелей

// Было:
'Recent Events (${_events.length})'

// Стало:
'Received Events (${_events.length})'

3. Упрощена цветовая схема

// Было:
color: type == 'Received' ? Colors.green.shade100 : Colors.blue.shade100,
Icon(type == 'Received' ? Icons.download : Icons.upload, ...)

// Стало:
color: Colors.green.shade100,
Icon(Icons.download, ...)

4. Упрощено отображение событий

// Убраны неиспользуемые переменные:
// final type = event['type'] as String;
// final details = event['details'] as String;

🎯 Результат

Новая логика:

  • Host App показывает только события, полученные от Web App
  • Web App показывает только события, полученные от Host App
  • Ping → Pong цикл теперь видим в обоих приложениях
  • Четкое разделение - каждое приложение видит только входящие события

Примеры отображаемых событий:

В Host App (полученные от Web App):

  • PingPayload - ping от web приложения
  • GetUserInfoPayload - запрос информации пользователя
  • LoginRequestPayload - запрос авторизации
  • SubmitQuizPayload - результаты quiz

В Web App (полученные от Host App):

  • PingResponsePayload - ответ на ping (pong)
  • UserInfoResponsePayload - ответ с информацией пользователя
  • LoginResponsePayload - ответ на авторизацию
  • QuizSubmissionResponsePayload - ответ на quiz

🚀 Как проверить

1. Отправьте Ping из Web App

  • Нажмите "Send Ping" в web приложении
  • В host приложении появится событие PingPayload
  • В web приложении появится событие PingResponsePayload (pong)

2. Отправьте Ping из Host App

  • Нажмите "Send Ping" в host приложении
  • В web приложении появится событие PingPayload
  • В host приложении появится событие PingResponsePayload (pong)

3. Проверьте другие payload'ы

  • Request User Info
  • Login Request
  • Quiz Results
  • Admin Commands
  • Native Dialogs

🎉 Итог

Теперь каждое приложение показывает только события, которые оно получило от другого приложения!

  • Четкое разделение входящих и исходящих событий
  • Ping → Pong цикл видим в реальном времени
  • Упрощенная и понятная логика отображения
  • Готово для демонстрации bridge коммуникации