summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Ng <chrng8@gmail.com>2021-06-29 18:37:22 +0000
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2021-07-15 10:16:06 +0200
commitef41d5977a077a3a4e223b75a3311da6533b2d00 (patch)
tree440e6fe95d484d7afc0c2fa5de2200b6cf76ffe7
parent8cedf0de038b151dbf573dfbda4e675751ee31bd (diff)
downloadnextcloud-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.php50
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
*