Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement User GraphQL subscription (#4) #7

Merged
merged 29 commits into from
Jul 11, 2022

Conversation

andrigel
Copy link
Contributor

@andrigel andrigel commented Jun 21, 2022

Resolves #4

Synopsis

Обновления Userов нереактивны - пользователь обновляется только тогда, когда к стор стучится свежая модель данных пользователя.

Solution

Использовать подписку для обновлений даных пользователя в Store User'a. Также создать StreamControler.broadcast, который активирует/отменяет удаленную подписку на пользователя по необходимости.

В отдельном PRе будет добавлено больше сценариев E2E тестирования подписки и добавлена подписка на RxUser.updates в контроллере вкладки чатов.

Checklist

  • Created PR:
    • In draft mode
    • Name contains issue reference
    • Has type and k:: labels applied
  • Before review:
    • Documentation is updated (if required)
    • Tests are updated (if required)
    • Changes conform code style
    • CHANGELOG entry is added (if required)
    • FCM (final commit message) is posted or updated
    • Draft mode is removed
  • Review is completed and changes are approved
    • FCM (final commit message) is approved
  • Before merge:
    • Milestone is set
    • PR's name and description are correct and up-to-date
    • All temporary labels are removed

@andrigel andrigel added enhancement Improvement of existing features or bugfix k::design Changes of application architecture and implementation design labels Jun 21, 2022
@andrigel andrigel added this to the 0.1.0-alpha.6 milestone Jun 21, 2022
@andrigel andrigel self-assigned this Jun 21, 2022
@andrigel andrigel marked this pull request as draft June 21, 2022 14:19
@andrigel
Copy link
Contributor Author

andrigel commented Jun 21, 2022

FCM

Implement `User` GraphQL subscription (#7, #4)

- add `RxUser` listening to updates in `Contacts` tab and on `User` page
- impl `RxUser` and its subscription to `User` events

Additionally:
- add online status indicators to `Contacts` and `Chats` tab
- add `RxChatContact.id` getter
- fix `UserRepository.get` spamming backend

@andrigel andrigel marked this pull request as ready for review June 21, 2022 15:14
lib/domain/repository/chat.dart Outdated Show resolved Hide resolved
lib/domain/repository/user.dart Outdated Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
lib/domain/repository/user.dart Outdated Show resolved Hide resolved
test/e2e/features/user/updates/.feature Outdated Show resolved Hide resolved
test/e2e/configuration.dart Outdated Show resolved Hide resolved
test/e2e/features/user/updates/.feature Outdated Show resolved Hide resolved
test/e2e/features/user/updates/.feature Outdated Show resolved Hide resolved
test/e2e/features/user/updates/.feature Outdated Show resolved Hide resolved
@SleepySquash SleepySquash marked this pull request as draft June 22, 2022 11:50
@andrigel andrigel marked this pull request as ready for review June 23, 2022 13:04
Copy link
Contributor

@SleepySquash SleepySquash left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@andrigel есть несколько багов, просьба починить. Плюс хотелось бы добавить все-все события юзера (реализовать обработку только тех, которые не требуют приседаний), порефакторить подписку в контактах. Плюс некоторые мелочи.

lib/api/backend/extension/user.dart Show resolved Hide resolved
lib/domain/repository/chat.dart Outdated Show resolved Hide resolved
lib/domain/repository/user.dart Outdated Show resolved Hide resolved
lib/store/user_rx.dart Outdated Show resolved Hide resolved
lib/store/user_rx.dart Outdated Show resolved Hide resolved
lib/store/user_rx.dart Outdated Show resolved Hide resolved
test/e2e/features/user/updates/.feature Outdated Show resolved Hide resolved
test/e2e/parameters/keys.dart Outdated Show resolved Hide resolved
@SleepySquash SleepySquash marked this pull request as draft June 24, 2022 11:23
lib/domain/repository/contact.dart Outdated Show resolved Hide resolved
lib/store/contact_rx.dart Outdated Show resolved Hide resolved
lib/store/event/user.dart Outdated Show resolved Hide resolved
lib/store/event/user.dart Outdated Show resolved Hide resolved
lib/store/event/user.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
@SleepySquash SleepySquash added the k::refactor Refactor changes of existing code label Jul 5, 2022
CHANGELOG.md Outdated Show resolved Hide resolved
lib/ui/page/home/page/user/controller.dart Outdated Show resolved Hide resolved
@SleepySquash SleepySquash marked this pull request as draft July 8, 2022 09:34
@andrigel andrigel marked this pull request as ready for review July 8, 2022 09:38
@andrigel andrigel requested review from tyranron and SleepySquash and removed request for tyranron July 8, 2022 09:38
Copy link
Contributor

@SleepySquash SleepySquash left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@andrigel, получился тяп-ляп, а не исправление.

lib/domain/repository/user.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
@SleepySquash SleepySquash marked this pull request as draft July 8, 2022 12:45
@andrigel andrigel marked this pull request as ready for review July 8, 2022 13:57
@andrigel andrigel requested review from SleepySquash and removed request for SleepySquash July 8, 2022 13:57
lib/store/user_rx.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
lib/ui/page/home/tab/contacts/controller.dart Outdated Show resolved Hide resolved
@tyranron tyranron added k::design Changes of application architecture and implementation design and removed k::design Changes of application architecture and implementation design labels Jul 11, 2022
@tyranron tyranron merged commit 982cb49 into main Jul 11, 2022
@tyranron tyranron deleted the 4-implement-user-graphql-subscription branch July 11, 2022 10:59
github-actions bot added a commit that referenced this pull request Jul 11, 2022
- add `RxUser` listening to updates in `Contacts` tab and on `User` page
- impl `RxUser` and its subscription to `User` events

Additionally:
- add online status indicators to `Contacts` and `Chats` tab
- add `RxChatContact.id` getter
- fix `UserRepository.get` spamming backend 982cb49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Improvement of existing features or bugfix k::design Changes of application architecture and implementation design k::refactor Refactor changes of existing code
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement User GraphQL subscription
3 participants