mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-07-13 03:27:39 +03:00
Bugfix: screenOnRoute sometimes failed
This commit is contained in:
parent
415102aa37
commit
e4b0d43b3d
1 changed files with 40 additions and 49 deletions
|
|
@ -169,67 +169,58 @@ const
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
screenOnRoute = (screenName, subPart) => {
|
screenOnRoute = (screenName, subPart) => {
|
||||||
let vmScreen = null,
|
screenName = screenName || defaultScreenName;
|
||||||
isSameScreen = false;
|
if (screenName && fireEvent('sm-show-screen', screenName, 1)) {
|
||||||
|
|
||||||
if (null == screenName || '' == screenName) {
|
|
||||||
screenName = defaultScreenName;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fireEvent('sm-show-screen', screenName, 1)) {
|
|
||||||
|
|
||||||
// Close all popups
|
// Close all popups
|
||||||
for (let vm of visiblePopups) {
|
for (let vm of visiblePopups) {
|
||||||
(false === vm.onClose()) || vm.close();
|
(false === vm.onClose()) || vm.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (screenName) {
|
let vmScreen = screen(screenName);
|
||||||
vmScreen = screen(screenName);
|
if (!vmScreen) {
|
||||||
if (!vmScreen) {
|
vmScreen = screen(defaultScreenName);
|
||||||
vmScreen = screen(defaultScreenName);
|
if (vmScreen) {
|
||||||
if (vmScreen) {
|
subPart = screenName + '/' + subPart;
|
||||||
subPart = screenName + '/' + subPart;
|
screenName = defaultScreenName;
|
||||||
screenName = defaultScreenName;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vmScreen?.__started) {
|
||||||
|
let isSameScreen = currentScreen && vmScreen === currentScreen;
|
||||||
|
|
||||||
|
if (!vmScreen.__builded) {
|
||||||
|
vmScreen.__builded = true;
|
||||||
|
|
||||||
|
vmScreen.viewModels.forEach(ViewModelClass =>
|
||||||
|
buildViewModel(ViewModelClass, vmScreen)
|
||||||
|
);
|
||||||
|
|
||||||
|
vmScreen.onBuild?.();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vmScreen?.__started) {
|
setTimeout(() => {
|
||||||
isSameScreen = currentScreen && vmScreen === currentScreen;
|
// hide screen
|
||||||
|
currentScreen && !isSameScreen && hideScreen(currentScreen);
|
||||||
|
// --
|
||||||
|
|
||||||
if (!vmScreen.__builded) {
|
currentScreen = vmScreen;
|
||||||
vmScreen.__builded = true;
|
|
||||||
|
|
||||||
vmScreen.viewModels.forEach(ViewModelClass =>
|
// show screen
|
||||||
buildViewModel(ViewModelClass, vmScreen)
|
if (!isSameScreen) {
|
||||||
);
|
vmScreen.onShow?.();
|
||||||
|
|
||||||
vmScreen.onBuild?.();
|
forEachViewModel(vmScreen, (vm, dom) => {
|
||||||
|
vm.beforeShow?.();
|
||||||
|
i18nToNodes(dom);
|
||||||
|
dom.hidden = false;
|
||||||
|
vm.onShow?.();
|
||||||
|
autofocus(dom);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
// --
|
||||||
|
|
||||||
setTimeout(() => {
|
vmScreen.__cross?.parse(subPart);
|
||||||
// hide screen
|
}, 1);
|
||||||
currentScreen && !isSameScreen && hideScreen(currentScreen);
|
|
||||||
// --
|
|
||||||
|
|
||||||
currentScreen = vmScreen;
|
|
||||||
|
|
||||||
// show screen
|
|
||||||
if (!isSameScreen) {
|
|
||||||
vmScreen.onShow?.();
|
|
||||||
|
|
||||||
forEachViewModel(vmScreen, (vm, dom) => {
|
|
||||||
vm.beforeShow?.();
|
|
||||||
i18nToNodes(dom);
|
|
||||||
dom.hidden = false;
|
|
||||||
vm.onShow?.();
|
|
||||||
autofocus(dom);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// --
|
|
||||||
|
|
||||||
vmScreen.__cross?.parse(subPart);
|
|
||||||
}, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue