85 lines
2.5 KiB
TypeScript
85 lines
2.5 KiB
TypeScript
import { addReducer, getGlobal, setGlobal } from '../../../lib/teact/teactn';
|
|
|
|
import { ManagementProgress } from '../../../types';
|
|
import { callApi } from '../../../api/gramjs';
|
|
import { updateManagement, updateManagementProgress } from '../../reducers';
|
|
import { selectChat, selectCurrentMessageList } from '../../selectors';
|
|
import { isChatBasicGroup } from '../../helpers';
|
|
|
|
addReducer('checkPublicLink', (global, actions, payload) => {
|
|
const { chatId } = selectCurrentMessageList(global) || {};
|
|
if (!chatId) {
|
|
return;
|
|
}
|
|
|
|
// No need to check the username if already in progress
|
|
if (global.management.progress === ManagementProgress.InProgress) {
|
|
return;
|
|
}
|
|
|
|
const { username } = payload!;
|
|
|
|
(async () => {
|
|
global = updateManagementProgress(global, ManagementProgress.InProgress);
|
|
global = updateManagement(global, chatId, { isUsernameAvailable: undefined });
|
|
setGlobal(global);
|
|
|
|
const isUsernameAvailable = await callApi('checkChatUsername', { username })!;
|
|
|
|
global = getGlobal();
|
|
global = updateManagementProgress(
|
|
global, isUsernameAvailable ? ManagementProgress.Complete : ManagementProgress.Error,
|
|
);
|
|
global = updateManagement(global, chatId, { isUsernameAvailable });
|
|
setGlobal(global);
|
|
})();
|
|
});
|
|
|
|
addReducer('updatePublicLink', (global, actions, payload) => {
|
|
const { chatId } = selectCurrentMessageList(global) || {};
|
|
let chat = chatId && selectChat(global, chatId);
|
|
if (!chatId || !chat) {
|
|
return;
|
|
}
|
|
|
|
const { username } = payload!;
|
|
|
|
(async () => {
|
|
global = updateManagementProgress(global, ManagementProgress.InProgress);
|
|
setGlobal(global);
|
|
|
|
if (isChatBasicGroup(chat)) {
|
|
chat = await callApi('migrateChat', chat);
|
|
|
|
if (!chat) {
|
|
return;
|
|
}
|
|
|
|
actions.openChat({ id: chat.id });
|
|
}
|
|
|
|
const result = await callApi('setChatUsername', { chat, username });
|
|
|
|
global = getGlobal();
|
|
global = updateManagementProgress(global, result ? ManagementProgress.Complete : ManagementProgress.Error);
|
|
global = updateManagement(global, chatId, { isUsernameAvailable: undefined });
|
|
setGlobal(global);
|
|
})();
|
|
});
|
|
|
|
addReducer('updatePrivateLink', (global) => {
|
|
const { chatId } = selectCurrentMessageList(global) || {};
|
|
const chat = chatId && selectChat(global, chatId);
|
|
if (!chatId || !chat) {
|
|
return;
|
|
}
|
|
|
|
callApi('updatePrivateLink', { chat });
|
|
});
|
|
|
|
addReducer('setEditingExportedInvite', (global, actions, payload) => {
|
|
const { chatId, invite } = payload;
|
|
|
|
setGlobal(updateManagement(global, chatId, { editingInvite: invite }));
|
|
});
|