Есть две вещи, которые нужно сделать:
- отслеживать то, что были сообщения, первоначально там, так что вы можете пометить его как грязный, если один будет удален.
- Следите за новыми сообщениями, и если они удалены, отметьте эту часть чистой.
Из-за вашего вызова функции isDirty
каждого сообщения вы проверяете, были ли обновлены или созданы текущие сообщения. В основном вам нужен снимок того, какие сообщения существуют, когда он чист, а затем вы можете сравнить, если какой-либо из них был удален.
Вы также можете вести запись о новых сообщениях. Таким образом, когда вы удаляете, вы можете проверить, было ли оно добавлено (добавьте флаг isNew
или что-то подобное). Затем, когда он удаляется, вы можете проверить, есть ли он isNew
и пометить его еще раз, иначе это сделает его грязным.
Для этого вам понадобится функция, которая проверяет удаление в качестве первой грязной проверки, а затем проверяет сообщения, как вы сейчас.
Возможно, я что-то пропустил (я бы очень хотел пропустить что-то ...), но мне кажется, что этот путь довольно неуклюжий. –
Ну, другой вариант будет иметь функцию, которая сравнивает новый vs old. Прямо сейчас вы проверяете текущие записи только для обновлений (и если они удалены, вы вообще не проверяете их) – jzworkman