Вопрос касается взаимодействия мутации, оптимистического ответа и watchQuery.
У меня есть мутация "myMutation", в которой есть "optimisticResponse" и реализованная функция "update".
Каждый раз, когда я делаю запрос на мутацию, функция «update» вызывается дважды, первый раз с данными оптимистического ответа, а второй с реальными данными. Все в порядке и все, как описано в документации.
В моей функции «update» я изменяю данные кеша «myQuery» с помощью методов readQuery / writeQuery.
Каждый раз, когда я изменяю данные кеша "myQuery", вызывается подписка watchQuery (на основе "myQuery"). Все в порядке и все, как описано в документации.
Но проблема в том, что я не могу различить в своем watchQuery, получаю ли я оптимистичные данные ответа или реальные данные ответа. Это очень важно для меня, потому что реакция должна быть другой, поскольку ценная часть данных может быть предоставлена только сервером.
Я должен показывать элемент графического интерфейса со специальным стилем, когда получаю оптимистичный ответ, и я должен запретить любое взаимодействие с ним, пока не получу реальный ответ.
К сожалению, я не могу решить этот вопрос. На первый взгляд, нет никакой разницы между оптимистическими и реальными ответами. Я много гуглил и не нашел решения. Единственная идея, которая у меня есть, - добавить специальное поле к моим данным GraphQL, которое будет показывать, получен ли ответ от сервера или нет. Но выглядит уродливо и плохо пахнет. Я уверен, что должен быть простой правильный способ преодоления проблемы.