resetMyHistory method

Future<void> resetMyHistory()

Resets the chat history of this channel for the current User. After this call, the messages created before the call will not be loaded.

Implementation

Future<void> resetMyHistory() async {
  sbLog.i(StackTrace.current);

  if (chat.commandManager.messageOffsetTsCompleterMap[channelUrl] != null) {
    return;
  }
  chat.commandManager.messageOffsetTsCompleterMap[channelUrl] =
      Completer<int?>();

  try {
    bool isOffsetChanged = false;

    final offset = await chat.apiClient
        .send(GroupChannelHistoryResetRequest(chat, channelUrl: channelUrl));

    if (offset != null && offset != messageOffsetTimestamp) {
      messageOffsetTimestamp = offset;
      isOffsetChanged = true;

      if (lastMessage?.message != null) {
        if (lastMessage!.createdAt < messageOffsetTimestamp!) {
          lastMessage = null;
        }
      }

      saveToCache(chat);

      //+ [DBManager]
      if (chat.dbManager.isEnabled()) {
        await chat.dbManager.upsertGroupChannels([this]);
      }
      //- [DBManager]
    }

    if (isOffsetChanged) {
      await chat.collectionManager.updateMessageOffsetTimestamp(
        channelUrl: channelUrl,
        messageOffsetTimestamp: messageOffsetTimestamp!,
      );
    }
  } catch (_) {
    rethrow;
  } finally {
    if (chat.commandManager.messageOffsetTsCompleterMap[channelUrl] != null) {
      chat.commandManager.messageOffsetTsCompleterMap[channelUrl]!
          .complete(messageOffsetTimestamp);
      chat.commandManager.messageOffsetTsCompleterMap.remove(channelUrl);
    }
  }
}