From a76275f3557042ea703c188c90cfb9500d2e218f Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Mon, 14 Feb 2022 00:53:39 +0300 Subject: [PATCH] Revert "New Chat: Create supergroups instead of legacy ones (#1704)" This reverts commit b60b3ae719d76192575598235fd5685d2c727bb5. --- src/api/gramjs/methods/chats.ts | 40 ++++++++++++++++++++++++++++---- src/api/gramjs/methods/index.ts | 2 +- src/modules/actions/api/chats.ts | 3 +-- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/api/gramjs/methods/chats.ts b/src/api/gramjs/methods/chats.ts index cb7d3b511..03cbf97c7 100644 --- a/src/api/gramjs/methods/chats.ts +++ b/src/api/gramjs/methods/chats.ts @@ -508,15 +508,14 @@ export async function updateChatMutedState({ } export async function createChannel({ - title, about = '', users, type = 'channel', + title, about = '', users, }: { - title: string; about?: string; users?: ApiUser[]; type?: 'channel' | 'group'; + title: string; about?: string; users?: ApiUser[]; }, noErrorUpdate = false): Promise { 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, @@ -607,6 +606,39 @@ export function deleteChannel({ }), true); } +export async function createGroupChat({ + title, users, +}: { + title: string; users: ApiUser[]; +}): Promise { + 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, }: { diff --git a/src/api/gramjs/methods/index.ts b/src/api/gramjs/methods/index.ts index f63324244..1eb173a74 100644 --- a/src/api/gramjs/methods/index.ts +++ b/src/api/gramjs/methods/index.ts @@ -9,7 +9,7 @@ export { export { fetchChats, fetchFullChat, searchChats, requestChatUpdate, saveDraft, clearDraft, fetchChat, updateChatMutedState, - createChannel, joinChannel, deleteChatUser, deleteChat, leaveChannel, deleteChannel, editChatPhoto, + createChannel, joinChannel, deleteChatUser, deleteChat, leaveChannel, deleteChannel, createGroupChat, editChatPhoto, toggleChatPinned, toggleChatArchived, toggleDialogUnread, setChatEnabledReactions, fetchChatFolders, editChatFolder, deleteChatFolder, fetchRecommendedChatFolders, getChatByUsername, togglePreHistoryHidden, updateChatDefaultBannedRights, updateChatMemberBannedRights, diff --git a/src/modules/actions/api/chats.ts b/src/modules/actions/api/chats.ts index 204807333..cc8b842f6 100644 --- a/src/modules/actions/api/chats.ts +++ b/src/modules/actions/api/chats.ts @@ -1152,10 +1152,9 @@ async function createGroupChat(title: string, users: ApiUser[], photo?: File) { }); try { - const createdChat = await callApi('createChannel', { + const createdChat = await callApi('createGroupChat', { title, users, - type: 'group', }); if (!createdChat) {