initVM method

Future<void> initVM()

Implementation

Future<void> initVM() async {
  log("initVM");
  var accessToken = Provider.of<UserVM>(
          NavigationService.navigatorKey.currentContext!,
          listen: false)
      .accessToken;

  await channelRepoImp.initRepo(accessToken);
  await channelRepoImp.listenToChannel((messages) {
    ///get channel where channel id == new message channelId
    var channel = _amityChannelList.firstWhere((amityMessage) =>
        amityMessage.channelId == messages.messages?[0].channelId);
    log("${channel.channelId} got new message from ${messages.messages![0].userId}");
    channel.lastActivity = messages.messages![0].createdAt;

    channel.setLatestMessage(
        messages.messages![0].data!.text ?? "Not Text message: 📷");
    if (messages.messages![0].userId !=
        AmityCoreClient.getCurrentUser().userId) {
      ///add unread count by 1
      channel.setUnreadCount(channel.unreadCount + 1);
    }

    //move channel to the top
    _amityChannelList.remove(channel);
    _amityChannelList.insert(0, channel);
    notifyListeners();
  });

  await channelRepoImp.listenToChannelList((channel) {
    _amityChannelList.insert(0, channel);
    notifyListeners();
  });

  await refreshChannels();
}