/*
 * https://github.com/morethanwords/tweb
 * Copyright (C) 2019-2021 Eduard Kuzmenko
 * https://github.com/morethanwords/tweb/blob/master/LICENSE
 */

import numberThousandSplitter from "../../helpers/number/numberThousandSplitter";
import { Chat, ChatParticipants } from "../../layer";
import { i18n, LangPackKey } from "../../lib/langPack";
import rootScope from "../../lib/rootScope";

export default async function getChatMembersString(chatId: ChatId, managers = rootScope.managers) {
  const chat: Chat = await managers.appChatsManager.getChat(chatId);
  if(chat._ === 'chatForbidden') {
    return i18n('YouWereKicked');
  }

  const chatFull = await managers.appProfileManager.getCachedFullChat(chatId);
  let count: number;
  if(chatFull) {
    if(chatFull._ === 'channelFull') {
      count = chatFull.participants_count;
    } else {
      count = (chatFull.participants as ChatParticipants.chatParticipants).participants?.length;
    }
  } else {
    count = (chat as Chat.chat).participants_count || (chat as any).participants?.participants.length;
  }

  const isBroadcast = (chat as Chat.channel).pFlags.broadcast;
  count = count || 1;

  let key: LangPackKey = isBroadcast ? 'Peer.Status.Subscribers' : 'Peer.Status.Member';
  return i18n(key, [numberThousandSplitter(count)]);
}