diff options
author | Christopher Ng <chrng8@gmail.com> | 2021-06-29 18:37:22 +0000 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2021-07-15 10:16:06 +0200 |
commit | ef41d5977a077a3a4e223b75a3311da6533b2d00 (patch) | |
tree | 440e6fe95d484d7afc0c2fa5de2200b6cf76ffe7 | |
parent | 8cedf0de038b151dbf573dfbda4e675751ee31bd (diff) | |
download | nextcloud-server-ef41d5977a077a3a4e223b75a3311da6533b2d00.tar.gz nextcloud-server-ef41d5977a077a3a4e223b75a3311da6533b2d00.zip |
Provide initial state
Signed-off-by: Christopher Ng <chrng8@gmail.com>
-rw-r--r-- | apps/settings/lib/Settings/Personal/PersonalInfo.php | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php index 94ff867daba..656f949a4af 100644 --- a/apps/settings/lib/Settings/Personal/PersonalInfo.php +++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php @@ -7,6 +7,7 @@ declare(strict_types=1); * * @author Arthur Schiwon <blizzz@arthur-schiwon.de> * @author Christoph Wurst <christoph@winzerhof-wurst.at> + * @author Christopher Ng <chrng8@gmail.com> * @author Georg Ehrke <oc.list@georgehrke.com> * @author Joas Schilling <coding@schilljs.com> * @author John Molakvoæ <skjnldsv@protonmail.com> @@ -48,6 +49,8 @@ use OCP\IUser; use OCP\IUserManager; use OCP\L10N\IFactory; use OCP\Settings\ISettings; +use OCP\Accounts\IAccountProperty; +use OCP\AppFramework\Services\IInitialState; class PersonalInfo implements ISettings { @@ -65,6 +68,8 @@ class PersonalInfo implements ISettings { private $l10nFactory; /** @var IL10N */ private $l; + /** @var IInitialState */ + private $initialStateService; public function __construct( IConfig $config, @@ -73,7 +78,8 @@ class PersonalInfo implements ISettings { IAccountManager $accountManager, IAppManager $appManager, IFactory $l10nFactory, - IL10N $l + IL10N $l, + IInitialState $initialStateService ) { $this->config = $config; $this->userManager = $userManager; @@ -82,6 +88,7 @@ class PersonalInfo implements ISettings { $this->appManager = $appManager; $this->l10nFactory = $l10nFactory; $this->l = $l; + $this->initialStateService = $initialStateService; } public function getForm(): TemplateResponse { @@ -138,6 +145,14 @@ class PersonalInfo implements ISettings { 'groups' => $this->getGroups($user), ] + $messageParameters + $languageParameters + $localeParameters; + $emails = $this->getEmails($account); + + $accountParameters = [ + 'displayNameChangeSupported' => $user->canChangeDisplayName(), + ]; + + $this->initialStateService->provideInitialState('emails', $emails); + $this->initialStateService->provideInitialState('accountParameters', $accountParameters); return new TemplateResponse('settings', 'settings/personal/personal.info', $parameters, ''); } @@ -181,6 +196,39 @@ class PersonalInfo implements ISettings { } /** + * returns the primary email and additional emails in an + * associative array + * + * @param IAccount $account + * @return array + */ + private function getEmails(IAccount $account): array { + $primaryEmail = [ + 'value' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getValue(), + 'scope' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getScope(), + 'verified' => $account->getProperty(IAccountManager::PROPERTY_EMAIL)->getVerified(), + ]; + + $additionalEmails = array_map( + function (IAccountProperty $property) { + return [ + 'value' => $property->getValue(), + 'scope' => $property->getScope(), + 'verified' => $property->getVerified(), + ]; + }, + $account->getPropertyCollection(IAccountManager::COLLECTION_EMAIL)->getProperties() + ); + + $emails = [ + 'primaryEmail' => $primaryEmail, + 'additionalEmails' => $additionalEmails, + ]; + + return $emails; + } + + /** * returns the user language, common language and other languages in an * associative array * |