Логика чтения и отмены чтения сообщений для группового чата

#node.js #reactjs #react-native #mongoose

Вопрос:

Я уже давно общался в групповом чате в приложении react native, но теперь мне нужно реализовать статус прочитанного и непрочитанного сообщения, как в Whatsapp, когда член группы видит сообщение, отправителю отображается его время просмотра. Схема моего сообщения для группового чата приведена ниже

 {
    join: [
      {
        type: types.ObjectId,
        ref: 'User'
      }
    ],
    sender: {
      type: types.ObjectId,
      ref: 'User'
    },
    text: {
      type: String
    },    
date: { type: Date }
  },
 

соединение-это массив идентификаторов получателей, которые содержат идентификаторы объектов пользовательской схемы
Мне нужно разместить непрочитанное свойство где-то в схеме, чтобы отслеживать состояние каждого пользователя при просмотре и чтении. Я думаю о чем-то вроде этого

 join: [
      {
id: {
        type: types.ObjectId,
        ref: 'User'
      },
unread: {
      type: Number,
      default: 1, // 1 means not seen 0 means seen
      required: true
    },
seen: { type: Date }}
    ],
 

И, пожалуйста, также объясните мне, как бы я управлял логикой в componentDidUpdate react-native все сообщения и данные групп успешно сохраняются в состоянии, когда я должен выполнить вызов API, чтобы сообщение считывалось 0 для конкретного получателя, и если все видели сообщение одновременно