Redux-persist: обработка удаления элемента, инициированная не из приложения
Предположим, у вас есть два приложения со списком задач для одной и той же службы, использующих одну и ту же базу данных - веб-приложение и собственное приложение. Пользователь может войти в свою учетную запись на обоих и создавать / обновлять / удалять свои заметки от обоих.
Учтите, что эти приложения используют redux-persist, например, нативное приложение сохраняет хранилище в AsyncStorage и гидратирует его при запуске приложения, чтобы пользователи могли быстрее видеть свои заметки.
Предположим, что у пользователя есть 2 элемента todo, и они вошли в оба приложения, два элемента todo присутствуют в БД и в избыточных хранилищах как веб-приложения, так и собственного приложения. Затем пользователь закрывает реагирующее нативное приложение и удаляет один элемент todo из веб-приложения. Поскольку именно веб-приложение инициировало удаление, было отправлено действие, и элемент был удален из хранилища и со слоя постоянства (скажем, локальное хранилище) веб-приложения. Но собственное приложение реагирования было отключено, поэтому, когда пользователь запускает собственное приложение реакции, его хранилище становится гидратированным из AsyncStorage, и удаленный элемент todo показывается пользователю. Как можно исправить такую ситуацию?
Если пользователь удалил элемент todo из приложения, легко отследить, что элемент был удален (потому что было отправлено действие), и удалить его из слоя постоянства, но что, если это действие было отправлено другим приложением (как в пример - веб-приложение, в отличие от собственного приложения реагировать), или даже был удален администратором вручную из БД? Я должен был бы как-то отличить удаленные элементы от не удаленных. Как?
Я думал о таком подходе, как: "когда извлекаются задачи, очистите их от слоя постоянства", но это не выглядит подходящим вариантом в случае, если у меня есть несколько способов получить их - например, по тегу, по дате и т. д., в таком случае я бы закончил чистить вещи, которые мне нужны.
Какое решение / модель вы могли бы предложить для решения такой проблемы?