summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorJoas Schilling <213943+nickvergessen@users.noreply.github.com>2022-04-29 18:31:29 +0200
committerGitHub <noreply@github.com>2022-04-29 18:31:29 +0200
commit0d873357510a1a6d57a6b8fa54b027b2eb8e558b (patch)
tree90da8c4baebf4e2dacc76b02cfa5cd0e8a529cb6 /lib/private
parent2d938ab8dcaf0455f0c0fd67cc27b8fae186326f (diff)
parenta75a22f3ac3384ffd52e4642c05fbd3d35f94a3d (diff)
downloadnextcloud-server-0d873357510a1a6d57a6b8fa54b027b2eb8e558b.tar.gz
nextcloud-server-0d873357510a1a6d57a6b8fa54b027b2eb8e558b.zip
Merge pull request #31703 from nextcloud/techdebt/noid/emojihelper-interface
Emojihelper interface
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/Comments/Manager.php9
-rw-r--r--lib/private/EmojiHelper.php (renamed from lib/private/Comments/EmojiHelper.php)27
-rw-r--r--lib/private/Server.php2
3 files changed, 12 insertions, 26 deletions
diff --git a/lib/private/Comments/Manager.php b/lib/private/Comments/Manager.php
index abbe4c66c95..3275658d555 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');
}
@@ -1074,7 +1075,7 @@ class Manager implements ICommentsManager {
* @since 24.0.0
*/
public function supportReactions(): bool {
- return $this->dbConn->supports4ByteText();
+ return $this->emojiHelper->doesPlatformSupportEmoji();
}
/**
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);