diff --git a/dev/App/Abstract.js b/dev/App/Abstract.js index e0ba4300f..c7af2996b 100644 --- a/dev/App/Abstract.js +++ b/dev/App/Abstract.js @@ -23,11 +23,9 @@ export class AbstractApp { this.Remote = Remote; } - logoutReload(close = false) { + logoutReload() { const url = logoutLink(); - close && window.close && window.close(); - if (location.href !== url) { setTimeout(() => (Settings.app('inIframe') ? parent : window).location.href = url, 100); } else { diff --git a/dev/App/User.js b/dev/App/User.js index 3fc55806a..0736a979e 100644 --- a/dev/App/User.js +++ b/dev/App/User.js @@ -708,7 +708,7 @@ class AppUser extends AbstractApp { } logout() { - Remote.logout(() => rl.logoutReload(!!SettingsGet('ParentEmail'))); + Remote.logout(() => rl.logoutReload()); } bootstart() { diff --git a/dev/Knoin/Knoin.js b/dev/Knoin/Knoin.js index 8a194a4a8..cd82605b3 100644 --- a/dev/Knoin/Knoin.js +++ b/dev/Knoin/Knoin.js @@ -162,12 +162,11 @@ const }); }, - hideScreen = (screenToHide, destroy) => { + hideScreen = screenToHide => { screenToHide.onHide && screenToHide.onHide(); forEachViewModel(screenToHide, (vm, dom) => { dom.hidden = true; vm.onHide && vm.onHide(); - destroy && vm.viewModelDom.remove(); }); }, @@ -319,7 +318,7 @@ export const */ startScreens = screensClasses => { hasher.clear(); - forEachObjectValue(SCREENS, screen => hideScreen(screen, 1)); + forEachObjectValue(SCREENS, screen => hideScreen(screen)); SCREENS = {}; currentScreen = null, defaultScreenName = ''; diff --git a/dev/Remote/User/Fetch.js b/dev/Remote/User/Fetch.js index d56537251..8dab58ff6 100644 --- a/dev/Remote/User/Fetch.js +++ b/dev/Remote/User/Fetch.js @@ -25,25 +25,6 @@ const urlSafeJSON = data => btoa(JSON.stringify(data)) .replace(/=+$/, ''); class RemoteUserFetch extends AbstractFetchRemote { - /** - * @param {?Function} fCallback - */ - folders(fCallback) { - this.defaultRequest( - fCallback, - 'Folders', - { - SentFolder: SettingsGet('SentFolder'), - DraftFolder: SettingsGet('DraftFolder'), - SpamFolder: SettingsGet('SpamFolder'), - TrashFolder: SettingsGet('TrashFolder'), - ArchiveFolder: SettingsGet('ArchiveFolder') - }, - null, - '', - ['Folders'] - ); - } /** * @param {?Function} fCallback @@ -651,6 +632,9 @@ class RemoteUserFetch extends AbstractFetchRemote { this.defaultRequest(fCallback, 'ClearUserBackground'); } + /** + * @param {?Function} fCallback + */ foldersReload(fCallback) { this.abort('Folders') .postRequest('Folders', FolderUserStore.foldersLoading) diff --git a/dev/View/User/SystemDropDown.js b/dev/View/User/SystemDropDown.js index 4c986a40a..6887b034c 100644 --- a/dev/View/User/SystemDropDown.js +++ b/dev/View/User/SystemDropDown.js @@ -18,6 +18,7 @@ import { ThemeStore } from 'Stores/Theme'; import Remote from 'Remote/User/Fetch'; import { getNotification } from 'Common/Translator'; +//import { FolderUserStore } from 'Stores/User/Folder'; export class SystemDropDownUserView extends AbstractViewRight { constructor() { @@ -60,8 +61,15 @@ export class SystemDropDownUserView extends AbstractViewRight { showScreenPopup(AccountPopupView, [account]); } } else { - // This does not work yet -// rl.setData(oData.Result); +/* + // This does not work yet: + FolderUserStore.folderList([]); + MessageUserStore.list([]); + Object.entries(oData.Result).forEach((key, value) => rl.settings.set(key, value)); + 3. reload Folders = Remote.foldersReload + 4. Change to INBOX = reload MessageList +*/ +// rl.route.reload(); location.reload(); } }, 'AccountSwitch', {Email:account.email} diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php index 5416d1d5f..6c268372a 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions.php @@ -876,8 +876,6 @@ class Actions if (!$bAdmin) { $oAccount = $this->getAccountFromToken(false); if ($oAccount) { - $oAddressBookProvider = $this->AddressBookProvider($oAccount); - $aResult['Auth'] = true; $aResult['Email'] = $oAccount->Email(); $aResult['IncLogin'] = $oAccount->IncLogin(); @@ -885,7 +883,7 @@ class Actions $aResult['AccountHash'] = $oAccount->Hash(); // $aResult['AccountSignMe'] = $oAccount->SignMe(); $aResult['AccountSignMe'] = false; - $aResult['ContactsIsAllowed'] = $oAddressBookProvider->IsActive(); + $aResult['ContactsIsAllowed'] = $this->AddressBookProvider($oAccount)->IsActive(); $aResult['ContactsSyncIsAllowed'] = (bool)$oConfig->Get('contacts', 'allow_sync', false); $aResult['ContactsSyncInterval'] = (int)$oConfig->Get('contacts', 'sync_interval', 20); @@ -936,6 +934,8 @@ class Actions $aResult['TrashFolder'] = (string)$oSettingsLocal->GetConf('TrashFolder', ''); $aResult['ArchiveFolder'] = (string)$oSettingsLocal->GetConf('ArchiveFolder', ''); $aResult['HideUnsubscribed'] = (bool)$oSettingsLocal->GetConf('HideUnsubscribed', $aResult['HideUnsubscribed']); + $aResult['UseThreads'] = (bool)$oSettingsLocal->GetConf('UseThreads', $aResult['UseThreads']); + $aResult['ReplySameFolder'] = (bool)$oSettingsLocal->GetConf('ReplySameFolder', $aResult['ReplySameFolder']); } if ($oSettings instanceof Settings) { @@ -967,11 +967,6 @@ class Actions } } - if ($oSettingsLocal instanceof Settings) { - $aResult['UseThreads'] = (bool)$oSettingsLocal->GetConf('UseThreads', $aResult['UseThreads']); - $aResult['ReplySameFolder'] = (bool)$oSettingsLocal->GetConf('ReplySameFolder', $aResult['ReplySameFolder']); - } - $aResult['NewMailSounds'] = []; foreach (\glob(APP_VERSION_ROOT_PATH.'static/sounds/*.mp3') as $file) { $aResult['NewMailSounds'][] = \basename($file, '.mp3'); diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Accounts.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Accounts.php index 2a786339c..f204fa5e7 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Accounts.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Accounts.php @@ -201,7 +201,27 @@ trait Accounts public function DoAccountSwitch(): array { if ($this->switchAccount(\trim($this->GetActionParam('Email', '')))) { - return $this->DefaultResponse(__FUNCTION__, $this->AppData(false)); + $oAccount = $this->getAccountFromToken(); + $aResult['Email'] = $oAccount->Email(); + $aResult['IncLogin'] = $oAccount->IncLogin(); + $aResult['OutLogin'] = $oAccount->OutLogin(); + $aResult['AccountHash'] = $oAccount->Hash(); + $aResult['ParentEmail'] = $oAccount->ParentEmail(); + $aResult['ContactsIsAllowed'] = $this->AddressBookProvider($oAccount)->IsActive(); + $oSettingsLocal = $this->SettingsProvider(true)->Load($oAccount); + if ($oSettingsLocal instanceof Settings) { + $aResult['SentFolder'] = (string) $oSettingsLocal->GetConf('SentFolder', ''); + $aResult['DraftFolder'] = (string) $oSettingsLocal->GetConf('DraftFolder', ''); + $aResult['SpamFolder'] = (string) $oSettingsLocal->GetConf('SpamFolder', ''); + $aResult['TrashFolder'] = (string) $oSettingsLocal->GetConf('TrashFolder', ''); + $aResult['ArchiveFolder'] = (string) $oSettingsLocal->GetConf('ArchiveFolder', ''); + $aResult['HideUnsubscribed'] = (bool) $oSettingsLocal->GetConf('HideUnsubscribed', $aResult['HideUnsubscribed']); + $aResult['UseThreads'] = (bool) $oSettingsLocal->GetConf('UseThreads', $aResult['UseThreads']); + $aResult['ReplySameFolder'] = (bool) $oSettingsLocal->GetConf('ReplySameFolder', $aResult['ReplySameFolder']); + } +// $this->Plugins()->InitAppData($bAdmin, $aResult, $oAccount); + + return $this->DefaultResponse(__FUNCTION__, $aResult); } return $this->FalseResponse(__FUNCTION__); }