New Chat: Create supergroups instead of legacy ones (#1704)

This commit is contained in:
Alexander Zinchuk 2022-02-08 22:29:58 +01:00
parent ed7e463001
commit a1ff730765
3 changed files with 7 additions and 38 deletions

View File

@ -508,14 +508,15 @@ export async function updateChatMutedState({
}
export async function createChannel({
title, about = '', users,
title, about = '', users, type = 'channel',
}: {
title: string; about?: string; users?: ApiUser[];
title: string; about?: string; users?: ApiUser[]; type?: 'channel' | 'group';
}, noErrorUpdate = false): Promise<ApiChat | undefined> {
const result = await invokeRequest(new GramJs.channels.CreateChannel({
broadcast: true,
title,
about,
...(type === 'channel' && { broadcast: true }),
...(type === 'group' && { megagroup: true }),
}));
// `createChannel` can return a lot of different update types according to docs,
@ -606,39 +607,6 @@ export function deleteChannel({
}), true);
}
export async function createGroupChat({
title, users,
}: {
title: string; users: ApiUser[];
}): Promise<ApiChat | undefined> {
const result = await invokeRequest(new GramJs.messages.CreateChat({
title,
users: users.map(({ id, accessHash }) => buildInputEntity(id, accessHash)) as GramJs.InputUser[],
}), undefined, true);
// `createChat` can return a lot of different update types according to docs,
// but currently chat creation returns only `Updates` type.
// Errors are added to catch unexpected cases in future testing
if (!(result instanceof GramJs.Updates)) {
if (DEBUG) {
// eslint-disable-next-line no-console
console.error('Unexpected chat creation update', result);
}
return undefined;
}
const newChat = result.chats[0];
if (!newChat || !(newChat instanceof GramJs.Chat)) {
if (DEBUG) {
// eslint-disable-next-line no-console
console.error('Created chat not found', result);
}
return undefined;
}
return buildApiChatFromPreview(newChat);
}
export async function editChatPhoto({
chatId, accessHash, photo,
}: {

View File

@ -9,7 +9,7 @@ export {
export {
fetchChats, fetchFullChat, searchChats, requestChatUpdate,
saveDraft, clearDraft, fetchChat, updateChatMutedState,
createChannel, joinChannel, deleteChatUser, deleteChat, leaveChannel, deleteChannel, createGroupChat, editChatPhoto,
createChannel, joinChannel, deleteChatUser, deleteChat, leaveChannel, deleteChannel, editChatPhoto,
toggleChatPinned, toggleChatArchived, toggleDialogUnread, setChatEnabledReactions,
fetchChatFolders, editChatFolder, deleteChatFolder, fetchRecommendedChatFolders,
getChatByUsername, togglePreHistoryHidden, updateChatDefaultBannedRights, updateChatMemberBannedRights,

View File

@ -1142,9 +1142,10 @@ async function createGroupChat(title: string, users: ApiUser[], photo?: File) {
});
try {
const createdChat = await callApi('createGroupChat', {
const createdChat = await callApi('createChannel', {
title,
users,
type: 'group',
});
if (!createdChat) {