channelToMap static method

Future<Map<String, dynamic>?> channelToMap(
  1. TwilioConversationsPlugin pluginInstance,
  2. TwilioConversationsChannel? channel
)

Implementation

static Future<Map<String, dynamic>?> channelToMap(
  TwilioConversationsPlugin pluginInstance,
  TwilioConversationsChannel? channel,
) async {
  if (channel == null) {
    return null;
  }

  if (!pluginInstance.channelChannels.containsKey(channel.sid)) {
    final channelStreamController =
        StreamController<Map<String, dynamic>>.broadcast();

    pluginInstance.channelChannels[channel.sid] = ChannelEventListener(
      pluginInstance,
      channel,
      channelStreamController,
    );

    pluginInstance.channelChannels[channel.sid]!.addListeners();
    pluginInstance.channelListeners[channel.sid] = channelStreamController;
  }

  try {
    final messages = await js_util
        .promiseToFuture<JSPaginator<TwilioConversationsMessage>>(
      channel.getMessages(50, 0, "forward"),
    );
    return channelMapped(pluginInstance, channel, messages);
  } catch (e) {
    return channelMapped(pluginInstance, channel, null);
  }
}