mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
SCREENS = {} to SCREENS = new Map
This commit is contained in:
parent
63316be535
commit
1032d0eb45
1 changed files with 16 additions and 21 deletions
|
|
@ -1,15 +1,16 @@
|
||||||
import ko from 'ko';
|
import ko from 'ko';
|
||||||
import { koComputable } from 'External/ko';
|
import { koComputable } from 'External/ko';
|
||||||
import { doc, $htmlCL, elementById, fireEvent } from 'Common/Globals';
|
import { doc, $htmlCL, elementById, fireEvent } from 'Common/Globals';
|
||||||
import { forEachObjectValue, forEachObjectEntry } from 'Common/Utils';
|
import { forEachObjectEntry } from 'Common/Utils';
|
||||||
import { i18nToNodes } from 'Common/Translator';
|
import { i18nToNodes } from 'Common/Translator';
|
||||||
|
|
||||||
let
|
let
|
||||||
SCREENS = {},
|
|
||||||
currentScreen = null,
|
currentScreen = null,
|
||||||
defaultScreenName = '';
|
defaultScreenName = '';
|
||||||
|
|
||||||
const
|
const
|
||||||
|
SCREENS = new Map,
|
||||||
|
|
||||||
autofocus = dom => dom.querySelector('[autofocus]')?.focus(),
|
autofocus = dom => dom.querySelector('[autofocus]')?.focus(),
|
||||||
|
|
||||||
visiblePopups = new Set,
|
visiblePopups = new Set,
|
||||||
|
|
@ -18,7 +19,7 @@ const
|
||||||
* @param {string} screenName
|
* @param {string} screenName
|
||||||
* @returns {?Object}
|
* @returns {?Object}
|
||||||
*/
|
*/
|
||||||
screen = screenName => (screenName && SCREENS[screenName]) || null,
|
screen = screenName => (screenName && SCREENS.get(screenName)) || null,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Function} ViewModelClass
|
* @param {Function} ViewModelClass
|
||||||
|
|
@ -130,7 +131,7 @@ const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ViewModelClass && ViewModelClass.__vm;
|
return ViewModelClass?.__vm;
|
||||||
},
|
},
|
||||||
|
|
||||||
forEachViewModel = (screen, fn) => {
|
forEachViewModel = (screen, fn) => {
|
||||||
|
|
@ -158,11 +159,9 @@ const
|
||||||
* @param {Function} ViewModelClassToHide
|
* @param {Function} ViewModelClassToHide
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
hideScreenPopup = ViewModelClassToHide => {
|
hideScreenPopup = ViewModelClassToHide =>
|
||||||
if (ViewModelClassToHide?.__vm && ViewModelClassToHide?.__dom) {
|
ViewModelClassToHide?.__vm && ViewModelClassToHide.__dom
|
||||||
ViewModelClassToHide.__vm.modalVisible(false);
|
&& ViewModelClassToHide.__vm.modalVisible(false),
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} screenName
|
* @param {string} screenName
|
||||||
|
|
@ -209,9 +208,7 @@ const
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// hide screen
|
// hide screen
|
||||||
if (currentScreen && !isSameScreen) {
|
currentScreen && !isSameScreen && hideScreen(currentScreen);
|
||||||
hideScreen(currentScreen);
|
|
||||||
}
|
|
||||||
// --
|
// --
|
||||||
|
|
||||||
currentScreen = vmScreen;
|
currentScreen = vmScreen;
|
||||||
|
|
@ -268,21 +265,19 @@ export const
|
||||||
*/
|
*/
|
||||||
startScreens = screensClasses => {
|
startScreens = screensClasses => {
|
||||||
hasher.clear();
|
hasher.clear();
|
||||||
forEachObjectValue(SCREENS, screen => hideScreen(screen, 1));
|
SCREENS.forEach(screen => hideScreen(screen, 1));
|
||||||
SCREENS = {};
|
SCREENS.clear();
|
||||||
currentScreen = null,
|
currentScreen = null,
|
||||||
defaultScreenName = '';
|
defaultScreenName = '';
|
||||||
|
|
||||||
screensClasses.forEach(CScreen => {
|
screensClasses.forEach(CScreen => {
|
||||||
if (CScreen) {
|
const vmScreen = new CScreen(),
|
||||||
const vmScreen = new CScreen(),
|
screenName = vmScreen.screenName;
|
||||||
screenName = vmScreen.screenName;
|
defaultScreenName || (defaultScreenName = screenName);
|
||||||
defaultScreenName || (defaultScreenName = screenName);
|
SCREENS.set(screenName, vmScreen);
|
||||||
SCREENS[screenName] = vmScreen;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
forEachObjectValue(SCREENS, vmScreen => {
|
SCREENS.forEach(vmScreen => {
|
||||||
if (!vmScreen.__started) {
|
if (!vmScreen.__started) {
|
||||||
vmScreen.onStart();
|
vmScreen.onStart();
|
||||||
vmScreen.__started = true;
|
vmScreen.__started = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue