montana/Russian/Site/messenger/src/index.tsx
2026-05-18 18:05:32 +03:00

131 lines
3.8 KiB
TypeScript

import './util/handleError';
import './util/setupServiceWorker';
import './global/init';
import TeactDOM from './lib/teact/teact-dom';
import {
getActions, getGlobal,
} from './global';
import {
DEBUG, STRICTERDOM_ENABLED,
} from './config';
import { enableStrict, requestMutation } from './lib/fasterdom/fasterdom';
import { selectChat, selectCurrentMessageList, selectPeerFullInfo, selectTabState } from './global/selectors';
import { selectSharedSettings } from './global/selectors/sharedState';
import { betterView } from './util/betterView';
import { IS_TAURI } from './util/browser/globalEnvironment';
import listenOtherClients from './util/browser/listenOtherClients';
import { requestGlobal, subscribeToMultitabBroadcastChannel } from './util/browser/multitab';
import { establishMultitabRole, subscribeToMasterChange } from './util/establishMultitabRole';
import { initGlobal } from './util/init';
import { initLocalization } from './util/localization';
import { MULTITAB_STORAGE_KEY } from './util/multiaccount';
import { checkAndAssignPermanentWebVersion } from './util/permanentWebVersion';
import { onBeforeUnload } from './util/schedulers';
import initTauriApi from './util/tauri/initTauriApi';
import setupTauriListeners from './util/tauri/setupTauriListeners';
import updateWebmanifest from './util/updateWebmanifest';
import App from './components/App';
import './assets/fonts/roboto.css';
import './styles/index.scss';
if (STRICTERDOM_ENABLED) {
enableStrict();
}
if (IS_TAURI) {
initTauriApi();
setupTauriListeners();
}
init();
async function init() {
if (DEBUG) {
// eslint-disable-next-line no-console
console.log('>>> INIT');
}
if (!(window as any).isCompatTestPassed) return;
checkAndAssignPermanentWebVersion();
listenOtherClients();
subscribeToMultitabBroadcastChannel();
await requestGlobal(APP_VERSION);
localStorage.setItem(MULTITAB_STORAGE_KEY, '1');
onBeforeUnload(() => {
const global = getGlobal();
if (Object.keys(global.byTabId).length === 1) {
localStorage.removeItem(MULTITAB_STORAGE_KEY);
}
});
await initGlobal();
getActions().init();
getActions().updateShouldEnableDebugLog();
getActions().updateShouldDebugExportedSenders();
const global = getGlobal();
initLocalization(selectSharedSettings(global).language, true);
subscribeToMasterChange((isMasterTab) => {
getActions()
.switchMultitabRole({ isMasterTab }, { forceSyncOnIOs: true });
});
const shouldReestablishMasterToSelf = getGlobal().auth.state !== 'authorizationStateReady';
establishMultitabRole(shouldReestablishMasterToSelf);
if (DEBUG) {
// eslint-disable-next-line no-console
console.log('>>> START INITIAL RENDER');
}
requestMutation(() => {
updateWebmanifest();
TeactDOM.render(
<App />,
document.getElementById('root')!,
);
betterView();
});
if (DEBUG) {
// eslint-disable-next-line no-console
console.log('>>> FINISH INITIAL RENDER');
}
if (DEBUG) {
document.addEventListener('dblclick', () => {
const currentGlobal = getGlobal();
const currentMessageList = selectCurrentMessageList(currentGlobal);
// eslint-disable-next-line no-console
console.warn('TAB STATE', selectTabState(currentGlobal));
// eslint-disable-next-line no-console
console.warn('GLOBAL STATE', currentGlobal);
if (currentMessageList) {
// eslint-disable-next-line no-console
console.warn(
'CURRENT MESSAGE LIST',
selectChat(currentGlobal, currentMessageList.chatId),
selectPeerFullInfo(currentGlobal, currentMessageList.chatId),
currentGlobal.messages.byChatId[currentMessageList.chatId],
);
}
});
}
}
onBeforeUnload(() => {
const actions = getActions();
actions.leaveGroupCall?.({ isPageUnload: true });
actions.hangUp?.({ isPageUnload: true });
});