resetMyHistory method
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);
}
}
}