diff options
author | John Molakvoæ <skjnldsv@protonmail.com> | 2021-10-18 18:19:37 +0200 |
---|---|---|
committer | John Molakvoæ <skjnldsv@protonmail.com> | 2021-10-20 11:53:45 +0200 |
commit | 873e8e219cb7d9c0651260a3b4f138618a22f31e (patch) | |
tree | da2ffc73b5c6f9255d60f84eb2cbe73a7cdefc60 | |
parent | 3ce3c0f117e7f5b02e55eb2c9aa0a1e7f7fe3508 (diff) | |
download | nextcloud-server-873e8e219cb7d9c0651260a3b4f138618a22f31e.tar.gz nextcloud-server-873e8e219cb7d9c0651260a3b4f138618a22f31e.zip |
Add appName to contactsmenu action API
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
5 files changed, 61 insertions, 5 deletions
diff --git a/lib/private/Contacts/ContactsMenu/ActionFactory.php b/lib/private/Contacts/ContactsMenu/ActionFactory.php index 8e139f6486c..5218582802c 100644 --- a/lib/private/Contacts/ContactsMenu/ActionFactory.php +++ b/lib/private/Contacts/ContactsMenu/ActionFactory.php @@ -32,13 +32,15 @@ class ActionFactory implements IActionFactory { * @param string $icon * @param string $name * @param string $href + * @param string $appName * @return ILinkAction */ - public function newLinkAction($icon, $name, $href) { + public function newLinkAction(string $icon, string $name, string $href, string $appName = ''): ILinkAction { $action = new LinkAction(); $action->setName($name); $action->setIcon($icon); $action->setHref($href); + $action->setAppName($appName); return $action; } @@ -46,9 +48,10 @@ class ActionFactory implements IActionFactory { * @param string $icon * @param string $name * @param string $email + * @param string $appName * @return ILinkAction */ - public function newEMailAction($icon, $name, $email) { - return $this->newLinkAction($icon, $name, 'mailto:' . $email); + public function newEMailAction(string $icon, string $name, string $email, string $appName = ''): ILinkAction { + return $this->newLinkAction($icon, $name, 'mailto:' . $email, $appName); } } diff --git a/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php b/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php index a50318903ac..a38bad9d82f 100644 --- a/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php +++ b/lib/private/Contacts/ContactsMenu/Actions/LinkAction.php @@ -38,6 +38,9 @@ class LinkAction implements ILinkAction { /** @var int */ private $priority = 10; + /** @var string */ + private $appName; + /** * @param string $icon absolute URI to an icon */ @@ -88,6 +91,22 @@ class LinkAction implements ILinkAction { } /** + * @param string $appName + * @since 23.0.0 + */ + public function setAppName(string $appName) { + $this->appName = $appName; + } + + /** + * @return string + * @since 23.0.0 + */ + public function getAppName(): string { + return $this->appName; + } + + /** * @return array */ public function jsonSerialize() { @@ -95,6 +114,7 @@ class LinkAction implements ILinkAction { 'title' => $this->name, 'icon' => $this->icon, 'hyperlink' => $this->href, + 'appName' => $this->appName, ]; } } diff --git a/lib/public/Contacts/ContactsMenu/IAction.php b/lib/public/Contacts/ContactsMenu/IAction.php index 1a2bc9b33b5..7c9db063975 100644 --- a/lib/public/Contacts/ContactsMenu/IAction.php +++ b/lib/public/Contacts/ContactsMenu/IAction.php @@ -60,4 +60,16 @@ interface IAction extends JsonSerializable { * @since 12.0 */ public function getPriority(); + + /** + * @param string $appName + * @since 23.0.0 + */ + public function setAppName(string $appName); + + /** + * @return string + * @since 23.0.0 + */ + public function getAppName(): string; } diff --git a/lib/public/Contacts/ContactsMenu/IActionFactory.php b/lib/public/Contacts/ContactsMenu/IActionFactory.php index f454ea117d2..393c9eb487a 100644 --- a/lib/public/Contacts/ContactsMenu/IActionFactory.php +++ b/lib/public/Contacts/ContactsMenu/IActionFactory.php @@ -35,9 +35,10 @@ interface IActionFactory { * @param string $icon full path to the action's icon * @param string $name localized name of the action * @param string $href target URL + * @param string $appName the appName registering the action * @return ILinkAction */ - public function newLinkAction($icon, $name, $href); + public function newLinkAction(string $icon, string $name, string $href, string $appName = ''): ILinkAction; /** * Construct and return a new email action for the contacts menu @@ -47,7 +48,8 @@ interface IActionFactory { * @param string $icon full path to the action's icon * @param string $name localized name of the action * @param string $email target e-mail address + * @param string $appName the appName registering the action * @return ILinkAction */ - public function newEMailAction($icon, $name, $email); + public function newEMailAction(string $icon, string $name, string $email, string $appName = ''): ILinkAction; } diff --git a/tests/lib/Contacts/ContactsMenu/Actions/LinkActionTest.php b/tests/lib/Contacts/ContactsMenu/Actions/LinkActionTest.php index ed6e9ace403..a2530084442 100644 --- a/tests/lib/Contacts/ContactsMenu/Actions/LinkActionTest.php +++ b/tests/lib/Contacts/ContactsMenu/Actions/LinkActionTest.php @@ -75,10 +75,29 @@ class LinkActionTest extends TestCase { $this->action->setName('Nickie Works'); $this->action->setPriority(33); $this->action->setHref('example.com'); + $this->action->setAppName('contacts'); $expected = [ 'title' => 'Nickie Works', 'icon' => 'icon-contacts', 'hyperlink' => 'example.com', + 'appName' => 'contacts', + ]; + + $json = $this->action->jsonSerialize(); + + $this->assertEquals($expected, $json); + } + + public function testJsonSerializeNoAppName() { + $this->action->setIcon('icon-contacts'); + $this->action->setName('Nickie Works'); + $this->action->setPriority(33); + $this->action->setHref('example.com'); + $expected = [ + 'title' => 'Nickie Works', + 'icon' => 'icon-contacts', + 'hyperlink' => 'example.com', + 'appName' => '', ]; $json = $this->action->jsonSerialize(); |