usersToMap static method

Future<Map<String, dynamic>?> usersToMap(
  1. TwilioConversationsPlugin pluginInstance,
  2. TwilioConversationsClient chatClient
)

Implementation

static Future<Map<String, dynamic>?> usersToMap(
  TwilioConversationsPlugin pluginInstance,
  TwilioClient.TwilioConversationsClient chatClient,
) async {
  List<dynamic>? users = [];
  try {
    users = await js_util.promiseToFuture<List<dynamic>?>(
      chatClient.getSubscribedUsers(),
    );
  } catch (e) {
    Logging.debug('error getting users: $e');
  }

  if (users!.isEmpty) return {};

  var myUser = {
    "friendlyName": "",
    "attributes": {},
    "identity": chatClient.user.identity,
    "isOnline": "",
    "isNotifiable": "",
    "isSubscribed": ""
  };

  late final subscribedUsersMap;
  try {
    subscribedUsersMap = await Future.wait(
      users
          .map((user) => userToMap(
                user,
                chatClient,
              ))
          .toList(),
    );
  } catch (e) {
    Logging.debug("error in userToMap: $e");
  }
  try {
    return {
      "subscribedUsers": subscribedUsersMap ?? {},
      "myUser": await userToMap(myUser, chatClient)
    };
  } catch (e) {
    Logging.debug("error mapping myUser: $e");
    return {"subscribedUsers": subscribedUsersMap ?? {}, "myUser": emptyUser};
  }
}