mirror of
https://github.com/nextcloud/server.git
synced 2026-03-01 04:50:40 -05:00
Update cache when display name change
This improve the correctness of the data Signed-off-by: Carl Schwan <carl@carlschwan.eu>
This commit is contained in:
parent
3d49fe473a
commit
40ac4e8197
3 changed files with 16 additions and 2 deletions
|
|
@ -30,6 +30,7 @@
|
|||
namespace OCA\Files_Sharing\AppInfo;
|
||||
|
||||
use OC\Share\Share;
|
||||
use OC\User\DisplayNameCache;
|
||||
use OCA\Files_Sharing\Capabilities;
|
||||
use OCA\Files_Sharing\Event\BeforeTemplateRenderedEvent;
|
||||
use OCA\Files_Sharing\External\Manager;
|
||||
|
|
@ -65,6 +66,7 @@ use OCP\IUserSession;
|
|||
use OCP\L10N\IFactory;
|
||||
use OCP\Share\Events\ShareCreatedEvent;
|
||||
use OCP\Share\IManager;
|
||||
use OCP\User\Events\UserChangedEvent;
|
||||
use OCP\Util;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
|
||||
|
|
@ -98,6 +100,7 @@ class Application extends App implements IBootstrap {
|
|||
$context->registerCapability(Capabilities::class);
|
||||
|
||||
$context->registerNotifierService(Notifier::class);
|
||||
$context->registerEventListener(UserChangedEvent::class, DisplayNameCache::class);
|
||||
}
|
||||
|
||||
public function boot(IBootContext $context): void {
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class Cache extends CacheJail {
|
|||
private ICacheEntry $sourceRootInfo;
|
||||
private bool $rootUnchanged = true;
|
||||
private ?string $ownerDisplayName = null;
|
||||
private int $numericId;
|
||||
private $numericId;
|
||||
private DisplayNameCache $displayNameCache;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -23,9 +23,12 @@ declare(strict_types=1);
|
|||
|
||||
namespace OC\User;
|
||||
|
||||
use OCP\EventDispatcher\Event;
|
||||
use OCP\EventDispatcher\IEventListener;
|
||||
use OCP\ICache;
|
||||
use OCP\ICacheFactory;
|
||||
use OCP\IUserManager;
|
||||
use OCP\User\Events\UserChangedEvent;
|
||||
|
||||
/**
|
||||
* Class that cache the relation UserId -> Display name
|
||||
|
|
@ -34,7 +37,7 @@ use OCP\IUserManager;
|
|||
* their preferences. It's generally not an issue if this data is slightly
|
||||
* outdated.
|
||||
*/
|
||||
class DisplayNameCache {
|
||||
class DisplayNameCache implements IEventListener {
|
||||
private ICache $internalCache;
|
||||
private IUserManager $userManager;
|
||||
|
||||
|
|
@ -63,4 +66,12 @@ class DisplayNameCache {
|
|||
public function clear(): void {
|
||||
$this->internalCache->clear();
|
||||
}
|
||||
|
||||
public function handle(Event $event): void {
|
||||
if ($event instanceof UserChangedEvent && $event->getFeature() === 'displayName') {
|
||||
$userId = $event->getUser()->getUID();
|
||||
$newDisplayName = $event->getValue();
|
||||
$this->internalCache->set($userId, $newDisplayName, 60 * 10); // 10 minutes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue