Skip to content

Commit

Permalink
broadcast event on group name change
Browse files Browse the repository at this point in the history
Signed-off-by: Maxence Lange <[email protected]>
  • Loading branch information
ArtificialOwl committed Feb 11, 2025
1 parent 9bf313a commit 83d3dbc
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 13 deletions.
9 changes: 9 additions & 0 deletions lib/FederatedItems/CircleEdit.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,11 @@ public function verify(FederatedEvent $event): void {
$event->getData()->s('name', $new->getName());
}

if ($data->hasKey('displayName')) {
$new->setDisplayName($data->g('displayName'));
$event->getData()->s('displayName', $new->getDisplayName());
}

if ($data->hasKey('description')) {
$new->setDescription($data->g('description'));
$event->getData()->s('description', $new->getDescription());
Expand All @@ -114,6 +119,10 @@ public function manage(FederatedEvent $event): void {
$circle->setName($data->g('name'));
}

if ($data->hasKey('displayName')) {
$circle->setDisplayName($data->g('displayName'));
}

$this->circleService->confirmName($circle);

if ($data->hasKey('description')) {
Expand Down
41 changes: 28 additions & 13 deletions lib/Listeners/GroupChanged.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,11 @@

namespace OCA\Circles\Listeners;

use OCA\Circles\AppInfo\Application;
use OCA\Circles\Db\CircleRequest;
use OCA\Circles\Exceptions\CircleNotFoundException;
use OCA\Circles\Model\Circle;
use OCA\Circles\Model\Member;
use OCA\Circles\Service\CircleService;
use OCA\Circles\Service\FederatedUserService;
use OCP\EventDispatcher\Event;
Expand All @@ -21,10 +25,9 @@
/** @template-implements IEventListener<GroupChangedEvent|Event> */
class GroupChanged implements IEventListener {
public function __construct(
private readonly IUserSession $userSession,
private readonly FederatedUserService $federatedUserService,
private readonly CircleService $circleService,
private readonly LoggerInterface $logger,
private readonly CircleRequest $circleRequest,
) {
}

Expand All @@ -37,19 +40,31 @@ public function handle(Event $event): void {
return;
}

$user = $this->userSession->getUser();
$this->federatedUserService->setLocalCurrentUser($user);

$groupId = $event->getGroup()->getGID();

$circle = new Circle();
$circle->setName('group:' . $groupId)
->setConfig(Circle::CFG_SYSTEM | Circle::CFG_NO_OWNER | Circle::CFG_HIDDEN)
->setSource(Member::TYPE_GROUP);

$owner = $this->federatedUserService->getAppInitiator(
Application::APP_ID,
Member::APP_CIRCLES,
Application::APP_NAME
);
$member = new Member();
$member->importFromIFederatedUser($owner);
$member->setLevel(Member::LEVEL_OWNER)
->setStatus(Member::STATUS_MEMBER);
$circle->setOwner($member);

try {
$this->circleService->updateName("group:$groupId", $event->getValue());
} catch (CircleNotFoundException $e) {
// Silently ignore (there is no circle for the group yet)
} catch (\Exception $e) {
$this->logger->warning("Failed to update display name of circle of group $groupId: " . $e->getMessage(), [
'exception' => $e,
'groupId' => $groupId,
]);
$this->federatedUserService->setCurrentUser($owner);
$circle = $this->circleRequest->searchCircle($circle);
} catch (CircleNotFoundException) {
return;
}

$this->circleService->updateDisplayName($circle->getSingleId(), $event->getValue());
}
}
11 changes: 11 additions & 0 deletions lib/Service/CircleService.php
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,17 @@ public function updateName(string $circleId, string $name): array {
return $event->getOutcome();
}

public function updateDisplayName(string $circleId, string $displayName): array {
$circle = $this->getCircle($circleId);

$event = new FederatedEvent(CircleEdit::class);
$event->setCircle($circle);
$event->setParams(new SimpleDataStore(['displayName' => $displayName]));
$this->federatedEventService->newEvent($event);

return $event->getOutcome();
}

/**
* @param string $circleId
* @param string $description
Expand Down

0 comments on commit 83d3dbc

Please sign in to comment.