From 166b790a3e9f146db3f1a19e47573640364d20d2 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Tue, 6 Aug 2024 12:19:17 +0200 Subject: [PATCH] Preparations for #1689 --- dev/Model/Identity.js | 7 +++++++ dev/Settings/User/Accounts.js | 2 +- dev/Settings/User/General.js | 12 ++---------- dev/Stores/User/Identity.js | 8 ++++++++ 4 files changed, 18 insertions(+), 11 deletions(-) diff --git a/dev/Model/Identity.js b/dev/Model/Identity.js index 25a7ab126..9ec2551a8 100644 --- a/dev/Model/Identity.js +++ b/dev/Model/Identity.js @@ -1,6 +1,9 @@ import { AbstractModel } from 'Knoin/AbstractModel'; import { addObservablesTo, addComputablesTo } from 'External/ko'; +import { showScreenPopup } from 'Knoin/Knoin'; +import { IdentityPopupView } from 'View/Popup/Identity'; + export class IdentityModel extends AbstractModel { /** * @param {string} id @@ -47,4 +50,8 @@ export class IdentityModel extends AbstractModel { label = this.label(); return (name ? `${name} ` : '') + `<${email}>` + (label ? ` (${label})` : ''); } + + edit() { + showScreenPopup(IdentityPopupView, [this]); + } } diff --git a/dev/Settings/User/Accounts.js b/dev/Settings/User/Accounts.js index 5f23b981a..92dc1eb41 100644 --- a/dev/Settings/User/Accounts.js +++ b/dev/Settings/User/Accounts.js @@ -48,7 +48,7 @@ export class UserSettingsAccounts /*extends AbstractViewSettings*/ { } editIdentity(identity) { - showScreenPopup(IdentityPopupView, [identity]); + identity.edit(); } /** diff --git a/dev/Settings/User/General.js b/dev/Settings/User/General.js index e625c2092..cbbb2b8e0 100644 --- a/dev/Settings/User/General.js +++ b/dev/Settings/User/General.js @@ -6,7 +6,6 @@ import { LayoutSideView, LayoutBottomView } from 'Common/EnumsUser'; import { setRefreshFoldersInterval } from 'Common/Folders'; import { Settings, SettingsGet } from 'Common/Globals'; import { WYSIWYGS } from 'Common/HtmlEditor'; -import { isArray } from 'Common/Utils'; import { addSubscribablesTo, addComputablesTo } from 'External/ko'; import { i18n, translateTrigger, translatorReload, convertLangName } from 'Common/Translator'; @@ -23,7 +22,6 @@ import { MessagelistUserStore } from 'Stores/User/Messagelist'; import Remote from 'Remote/User/Fetch'; -import { IdentityPopupView } from 'View/Popup/Identity'; import { LanguagesPopupView } from 'View/Popup/Languages'; export class UserSettingsGeneral extends AbstractViewSettings { @@ -75,13 +73,8 @@ export class UserSettingsGeneral extends AbstractViewSettings { addComputablesTo(this, { languageFullName: () => convertLangName(this.language()), - identityMain: () => { - const list = this.identities(); - return isArray(list) ? list.find(item => item && !item.id()) : null; - }, - identityMainDesc: () => { - const identity = this.identityMain(); + const identity = IdentityUserStore.main(); return identity ? identity.formattedName() : '---'; }, @@ -168,8 +161,7 @@ export class UserSettingsGeneral extends AbstractViewSettings { } editMainIdentity() { - const identity = this.identityMain(); - identity && showScreenPopup(IdentityPopupView, [identity]); + IdentityUserStore.main()?.edit?.(); } testSoundNotification() { diff --git a/dev/Stores/User/Identity.js b/dev/Stores/User/Identity.js index 224ae2226..b8a3b4f22 100644 --- a/dev/Stores/User/Identity.js +++ b/dev/Stores/User/Identity.js @@ -1,5 +1,13 @@ import { koArrayWithDestroy } from 'External/ko'; +import { koComputable } from 'External/ko'; +import { isArray } from 'Common/Utils'; export const IdentityUserStore = koArrayWithDestroy(); IdentityUserStore.loading = ko.observable(false).extend({ debounce: 100 }); + +/** Returns main (login) identity */ +IdentityUserStore.main = koComputable(() => { + const list = IdentityUserStore(); + return isArray(list) ? list.find(item => item && !item.id()) : null; +});