Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2022-03-24 17:57:17 +0300
committerVitor Mattos <vitor@php.rio>2022-04-28 13:09:44 +0300
commit902476fa20516ac3abe3c79dd10aad1c8b60910e (patch)
tree15f277f69f714ecdba91c62356cbd7e1f96b4dee /lib
parent768da60ae2bc11b415b52624121d70316c1e9de6 (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.php3
-rw-r--r--lib/composer/composer/autoload_static.php3
-rw-r--r--lib/private/Comments/Manager.php7
-rw-r--r--lib/private/EmojiHelper.php (renamed from lib/private/Comments/EmojiHelper.php)27
-rw-r--r--lib/private/Server.php2
-rw-r--r--lib/public/IEmojiHelper.php39
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;
+}