diff options
author | Joas Schilling <coding@schilljs.com> | 2022-03-24 17:57:17 +0300 |
---|---|---|
committer | Vitor Mattos <vitor@php.rio> | 2022-04-28 13:09:44 +0300 |
commit | 902476fa20516ac3abe3c79dd10aad1c8b60910e (patch) | |
tree | 15f277f69f714ecdba91c62356cbd7e1f96b4dee /lib | |
parent | 768da60ae2bc11b415b52624121d70316c1e9de6 (diff) |
Extract the EmojiService from user status and add an OCP interface
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/composer/composer/autoload_classmap.php | 3 | ||||
-rw-r--r-- | lib/composer/composer/autoload_static.php | 3 | ||||
-rw-r--r-- | lib/private/Comments/Manager.php | 7 | ||||
-rw-r--r-- | lib/private/EmojiHelper.php (renamed from lib/private/Comments/EmojiHelper.php) | 27 | ||||
-rw-r--r-- | lib/private/Server.php | 2 | ||||
-rw-r--r-- | lib/public/IEmojiHelper.php | 39 |
6 files changed, 54 insertions, 27 deletions
diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 2c962b0fc6d..518ca235033 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -411,6 +411,7 @@ return array( 'OCP\\IDBConnection' => $baseDir . '/lib/public/IDBConnection.php', 'OCP\\IDateTimeFormatter' => $baseDir . '/lib/public/IDateTimeFormatter.php', 'OCP\\IDateTimeZone' => $baseDir . '/lib/public/IDateTimeZone.php', + 'OCP\\IEmojiHelper' => $baseDir . '/lib/public/IEmojiHelper.php', 'OCP\\IEventSource' => $baseDir . '/lib/public/IEventSource.php', 'OCP\\IGroup' => $baseDir . '/lib/public/IGroup.php', 'OCP\\IGroupManager' => $baseDir . '/lib/public/IGroupManager.php', @@ -821,7 +822,6 @@ return array( 'OC\\Command\\FileAccess' => $baseDir . '/lib/private/Command/FileAccess.php', 'OC\\Command\\QueueBus' => $baseDir . '/lib/private/Command/QueueBus.php', 'OC\\Comments\\Comment' => $baseDir . '/lib/private/Comments/Comment.php', - 'OC\\Comments\\EmojiHelper' => $baseDir . '/lib/private/Comments/EmojiHelper.php', 'OC\\Comments\\Manager' => $baseDir . '/lib/private/Comments/Manager.php', 'OC\\Comments\\ManagerFactory' => $baseDir . '/lib/private/Comments/ManagerFactory.php', 'OC\\Config' => $baseDir . '/lib/private/Config.php', @@ -1089,6 +1089,7 @@ return array( 'OC\\Diagnostics\\QueryLogger' => $baseDir . '/lib/private/Diagnostics/QueryLogger.php', 'OC\\DirectEditing\\Manager' => $baseDir . '/lib/private/DirectEditing/Manager.php', 'OC\\DirectEditing\\Token' => $baseDir . '/lib/private/DirectEditing/Token.php', + 'OC\\EmojiHelper' => $baseDir . '/lib/private/EmojiHelper.php', 'OC\\Encryption\\DecryptAll' => $baseDir . '/lib/private/Encryption/DecryptAll.php', 'OC\\Encryption\\EncryptionWrapper' => $baseDir . '/lib/private/Encryption/EncryptionWrapper.php', 'OC\\Encryption\\Exceptions\\DecryptionFailedException' => $baseDir . '/lib/private/Encryption/Exceptions/DecryptionFailedException.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index da591ab0c0f..015f50ab047 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -440,6 +440,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OCP\\IDBConnection' => __DIR__ . '/../../..' . '/lib/public/IDBConnection.php', 'OCP\\IDateTimeFormatter' => __DIR__ . '/../../..' . '/lib/public/IDateTimeFormatter.php', 'OCP\\IDateTimeZone' => __DIR__ . '/../../..' . '/lib/public/IDateTimeZone.php', + 'OCP\\IEmojiHelper' => __DIR__ . '/../../..' . '/lib/public/IEmojiHelper.php', 'OCP\\IEventSource' => __DIR__ . '/../../..' . '/lib/public/IEventSource.php', 'OCP\\IGroup' => __DIR__ . '/../../..' . '/lib/public/IGroup.php', 'OCP\\IGroupManager' => __DIR__ . '/../../..' . '/lib/public/IGroupManager.php', @@ -850,7 +851,6 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Command\\FileAccess' => __DIR__ . '/../../..' . '/lib/private/Command/FileAccess.php', 'OC\\Command\\QueueBus' => __DIR__ . '/../../..' . '/lib/private/Command/QueueBus.php', 'OC\\Comments\\Comment' => __DIR__ . '/../../..' . '/lib/private/Comments/Comment.php', - 'OC\\Comments\\EmojiHelper' => __DIR__ . '/../../..' . '/lib/private/Comments/EmojiHelper.php', 'OC\\Comments\\Manager' => __DIR__ . '/../../..' . '/lib/private/Comments/Manager.php', 'OC\\Comments\\ManagerFactory' => __DIR__ . '/../../..' . '/lib/private/Comments/ManagerFactory.php', 'OC\\Config' => __DIR__ . '/../../..' . '/lib/private/Config.php', @@ -1118,6 +1118,7 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OC\\Diagnostics\\QueryLogger' => __DIR__ . '/../../..' . '/lib/private/Diagnostics/QueryLogger.php', 'OC\\DirectEditing\\Manager' => __DIR__ . '/../../..' . '/lib/private/DirectEditing/Manager.php', 'OC\\DirectEditing\\Token' => __DIR__ . '/../../..' . '/lib/private/DirectEditing/Token.php', + 'OC\\EmojiHelper' => __DIR__ . '/../../..' . '/lib/private/EmojiHelper.php', 'OC\\Encryption\\DecryptAll' => __DIR__ . '/../../..' . '/lib/private/Encryption/DecryptAll.php', 'OC\\Encryption\\EncryptionWrapper' => __DIR__ . '/../../..' . '/lib/private/Encryption/EncryptionWrapper.php', 'OC\\Encryption\\Exceptions\\DecryptionFailedException' => __DIR__ . '/../../..' . '/lib/private/Encryption/Exceptions/DecryptionFailedException.php', diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php index 123e4f6988d..31107c1b9fb 100644 --- a/lib/private/Comments/Manager.php +++ b/lib/private/Comments/Manager.php @@ -39,6 +39,7 @@ use OCP\Comments\NotFoundException; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IConfig; use OCP\IDBConnection; +use OCP\IEmojiHelper; use OCP\IUser; use OCP\IInitialStateService; use OCP\PreConditionNotMetException; @@ -59,7 +60,7 @@ class Manager implements ICommentsManager { /** @var ITimeFactory */ protected $timeFactory; - /** @var EmojiHelper */ + /** @var IEmojiHelper */ protected $emojiHelper; /** @var IInitialStateService */ @@ -81,7 +82,7 @@ class Manager implements ICommentsManager { LoggerInterface $logger, IConfig $config, ITimeFactory $timeFactory, - EmojiHelper $emojiHelper, + IEmojiHelper $emojiHelper, IInitialStateService $initialStateService) { $this->dbConn = $dbConn; $this->logger = $logger; @@ -153,7 +154,7 @@ class Manager implements ICommentsManager { throw new \UnexpectedValueException('Actor, Object and Verb information must be provided for saving'); } - if ($comment->getVerb() === 'reaction' && !$this->emojiHelper->isValidEmoji($comment->getMessage())) { + if ($comment->getVerb() === 'reaction' && !$this->emojiHelper->isValidSingleEmoji($comment->getMessage())) { // 4 characters: laptop + person + gender + skin color => "🧑🏽💻" is a single emoji from the picker throw new \UnexpectedValueException('Reactions can only be a single emoji'); } diff --git a/lib/private/Comments/EmojiHelper.php b/lib/private/EmojiHelper.php index a75919edbc9..7a4580a1bdb 100644 --- a/lib/private/Comments/EmojiHelper.php +++ b/lib/private/EmojiHelper.php @@ -24,41 +24,24 @@ declare(strict_types=1); * along with this program. If not, see <http://www.gnu.org/licenses/>. * */ -namespace OC\Comments; +namespace OC; use OCP\IDBConnection; +use OCP\IEmojiHelper; -/** - * Copied OCA\UserStatus\Service\EmojiService - * Needs to be unified later - */ -class EmojiHelper { - - /** @var IDBConnection */ - private $db; +class EmojiHelper implements IEmojiHelper { + private IDBConnection $db; - /** - * EmojiService constructor. - * - * @param IDBConnection $db - */ public function __construct(IDBConnection $db) { $this->db = $db; } - /** - * @return bool - */ public function doesPlatformSupportEmoji(): bool { return $this->db->supports4ByteText() && \class_exists(\IntlBreakIterator::class); } - /** - * @param string $emoji - * @return bool - */ - public function isValidEmoji(string $emoji): bool { + public function isValidSingleEmoji(string $emoji): bool { $intlBreakIterator = \IntlBreakIterator::createCharacterInstance(); $intlBreakIterator->setText($emoji); diff --git a/lib/private/Server.php b/lib/private/Server.php index e9d673d3746..5308de21f51 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -1431,6 +1431,8 @@ class Server extends ServerContainer implements IServerContainer { $this->registerAlias(IInitialStateService::class, InitialStateService::class); + $this->registerAlias(\OCP\IEmojiHelper::class, \OC\EmojiHelper::class); + $this->registerAlias(\OCP\UserStatus\IManager::class, \OC\UserStatus\Manager::class); $this->registerAlias(IBroker::class, Broker::class); diff --git a/lib/public/IEmojiHelper.php b/lib/public/IEmojiHelper.php new file mode 100644 index 00000000000..229b08ec68b --- /dev/null +++ b/lib/public/IEmojiHelper.php @@ -0,0 +1,39 @@ +<?php + +declare(strict_types=1); +/** + * @copyright Copyright (c) 2022 Joas Schilling <coding@schilljs.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +namespace OCP; + +/** + * @since 24.0.0 + */ +interface IEmojiHelper { + /** + * @since 24.0.0 + */ + public function doesPlatformSupportEmoji(): bool; + + /** + * @since 24.0.0 + */ + public function isValidSingleEmoji(string $emoji): bool; +} |