title method

String title({
  1. bool withDeletedLabel = true,
})

Returns text represented title of this RxChat.

If withDeletedLabel is true, then returns the title with the deleted label for deleted users.

Implementation

String title({bool withDeletedLabel = true}) {
  String title = 'dot'.l10n * 3;

  switch (chat.value.kind) {
    case ChatKind.monolog:
      title = chat.value.name?.val ?? 'label_chat_monolog'.l10n;
      break;

    case ChatKind.dialog:
      final String? name =
          members.values
              .firstWhereOrNull((u) => u.user.id != me)
              ?.user
              .title ??
          chat.value.members
              .firstWhereOrNull((e) => e.user.id != me)
              ?.user
              .title;

      title = name ?? title;
      break;

    case ChatKind.group:
      if (chat.value.name != null) {
        title = chat.value.name!.val;
      } else {
        final Iterable<String> names;

        final List<RxUser> users = members.values
            .take(3)
            .map((e) => e.user)
            .toList();

        if (users.length < chat.value.membersCount && users.length < 3) {
          names = chat.value.members.take(3).map((e) => e.user.title);
        } else {
          names = users.take(3).map((e) => e.title);
        }

        title = names.join('comma_space'.l10n);
        if (chat.value.membersCount > 3) {
          title += 'comma_space'.l10n + ('dot'.l10n * 3);
        }
      }
      break;

    case ChatKind.artemisUnknown:
      // No-op.
      break;
  }

  return title;
}