Merge pull request #31849 from nextcloud/fix/cache-account

pull/31852/head
John Molakvoæ 2022-04-05 21:38:03 +07:00 committed by GitHub
commit fde178b1be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 1 deletions

@ -41,6 +41,7 @@ use libphonenumber\PhoneNumber;
use libphonenumber\PhoneNumberFormat;
use libphonenumber\PhoneNumberUtil;
use OC\Profile\TProfileHelper;
use OC\Cache\CappedMemoryCache;
use OCA\Settings\BackgroundJobs\VerifyUserData;
use OCP\Accounts\IAccount;
use OCP\Accounts\IAccountManager;
@ -116,6 +117,7 @@ class AccountManager implements IAccountManager {
private $crypto;
/** @var IFactory */
private $l10nfactory;
private CappedMemoryCache $internalCache;
public function __construct(
IDBConnection $connection,
@ -142,6 +144,7 @@ class AccountManager implements IAccountManager {
$this->crypto = $crypto;
// DIing IL10N results in a dependency loop
$this->l10nfactory = $factory;
$this->internalCache = new CappedMemoryCache();
}
/**
@ -763,7 +766,12 @@ class AccountManager implements IAccountManager {
}
public function getAccount(IUser $user): IAccount {
return $this->parseAccountData($user, $this->getUser($user));
if ($this->internalCache->hasKey($user->getUID())) {
return $this->internalCache->get($user->getUID());
}
$account = $this->parseAccountData($user, $this->getUser($user));
$this->internalCache->set($user->getUID(), $account);
return $account;
}
public function updateAccount(IAccount $account): void {
@ -813,5 +821,6 @@ class AccountManager implements IAccountManager {
}
$this->updateUser($account->getUser(), $data, true);
$this->internalCache->set($account->getUser()->getUID(), $account);
}
}