Всем привет.
Последний месяц изучаю и применяю на практике graphql c apollo
Мне очень нравится идея graphql и реализация apollo на сервере. Но...
Я пишу мессенджер на React Native, у меня вся логика работы с данными вынесена в Redux, все запросы к REST API с Redux Thunk
У меня две проблемы c перездом на apollo сlient:
1. Есть один action "newMessage(recipient_id, message)" Он вызывается в двух случаях: 1. По событию от websocket (Когда сообщение приходит от юзера). 2. И когда я отправляю сообщение юзеру.
Данный экшн обновляет конкретный диалог на странице с диалогами и если
открыта история переписки с конкретным recipient_id то добавляет сообщение в список.
И вот в чем проблема:
Мне нужно вызывать action в разных местах а так же action обновляет разные данные. (Диалоги и историю переписки, которой может не быть если диалог не открыт)
Я не понимаю как мне реализовать данный механизм в apollo client с его cache in memory и link state
2. Когда пользователь изменил свой аватар, мне нужно обновить список диалогов, c redux все просто, я в настройках импортирую и вызываю action "loadDialogs({ refresh: true })"
Как мне в apollo client вызвать refetch из никак не связанного компонента.
И еще, я хочу хранить работу с кешом отдельно от компонентов. И вообще имеет ли смысл использовать для этого кейса apollo client?