Skip to content

Commit 9f54fde

Browse files
committed
fix(files-actions-menu): load-then-mutate so clearing default_action persists
Signed-off-by: Jaap van der Plas <jvdplas@gmail.com>
1 parent 29cc85f commit 9f54fde

1 file changed

Lines changed: 14 additions & 19 deletions

File tree

lib/Service/UI/FilesActionsMenuService.php

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -51,35 +51,30 @@ public function registerFileActionMenu(string $appId, string $name, string $disp
5151
string $icon, string $mime, int $permissions, int $order, string $version,
5252
?string $defaultAction = null): ?FilesActionsMenu {
5353
try {
54-
$fileActionMenu = $this->mapper->findByAppidName($appId, $name);
54+
$existing = $this->mapper->findByAppidName($appId, $name);
5555
} catch (DoesNotExistException|MultipleObjectsReturnedException|Exception) {
56-
$fileActionMenu = null;
56+
$existing = null;
5757
}
5858
try {
59-
$newFileActionMenu = new FilesActionsMenu([
60-
'appid' => $appId,
61-
'name' => $name,
62-
'display_name' => $displayName,
63-
'action_handler' => ltrim($actionHandler, '/'),
64-
'icon' => ltrim($icon, '/'),
65-
'mime' => $mime,
66-
'permissions' => $permissions,
67-
'order' => $order,
68-
'version' => $version,
69-
'default_action' => $defaultAction,
70-
]);
71-
if ($fileActionMenu !== null) {
72-
$newFileActionMenu->setId($fileActionMenu->getId());
73-
}
74-
$fileActionMenu = $this->mapper->insertOrUpdate($newFileActionMenu);
59+
$entity = $existing ?? new FilesActionsMenu();
60+
$entity->setAppid($appId);
61+
$entity->setName($name);
62+
$entity->setDisplayName($displayName);
63+
$entity->setActionHandler(ltrim($actionHandler, '/'));
64+
$entity->setIcon(ltrim($icon, '/'));
65+
$entity->setMime($mime);
66+
$entity->setPermissions($permissions);
67+
$entity->setOrder($order);
68+
$entity->setVersion($version);
69+
$entity->setDefaultAction($defaultAction);
7570
$this->resetCacheEnabled();
71+
return $existing === null ? $this->mapper->insert($entity) : $this->mapper->update($entity);
7672
} catch (Exception $e) {
7773
$this->logger->error(
7874
sprintf('Failed to register ExApp %s FileActionMenu %s. Error: %s', $appId, $name, $e->getMessage()), ['exception' => $e]
7975
);
8076
return null;
8177
}
82-
return $fileActionMenu;
8378
}
8479

8580
public function unregisterFileActionMenu(string $appId, string $name): ?FilesActionsMenu {

0 commit comments

Comments
 (0)