зеркало из https://github.com/nextcloud/spreed.git
Merge pull request #5616 from nextcloud/feature/1576/allow-to-specify-meta-data-on-a-share
Allow to specify meta-data for sharing
This commit is contained in:
Коммит
6e995e6a2b
22
docs/chat.md
22
docs/chat.md
|
@ -131,6 +131,28 @@ See [OCP\RichObjectStrings\Definitions](https://github.com/nextcloud/server/blob
|
|||
- Data:
|
||||
The full message array of the new message, as defined in [Receive chat messages of a conversation](#receive-chat-messages-of-a-conversation)
|
||||
|
||||
## Share a file to the chat
|
||||
|
||||
* Method: `POST`
|
||||
* Endpoint: `ocs/v2.php/apps/files_sharing/api/v1/shares`
|
||||
* Data:
|
||||
|
||||
field | type | Description
|
||||
---|---|---
|
||||
`shareType` | int | `10` means share to a conversation
|
||||
`shareWith` | string | The token of the conversation to share the file to
|
||||
`path` | string | The file path inside the user's root to share
|
||||
`referenceId` | string | A reference string to be able to identify the generated chat message again in a "get messages" request, should be a random sha256 (only available with `chat-reference-id` capability)
|
||||
`talkMetaData` | string | JSON encoded array of the meta data
|
||||
|
||||
* `talkMetaData` array:
|
||||
|
||||
field | type | Description
|
||||
---|---|---
|
||||
`messageType` | string | A message type to show the message in different styles. Currently known: `voice-message` and `comment`
|
||||
|
||||
* Response: [See official OCS Share API docs](https://docs.nextcloud.com/server/latest/developer_manual/client_apis/OCS/ocs-share-api.html?highlight=sharing#create-a-new-share)
|
||||
|
||||
## Deleting a chat message
|
||||
|
||||
* Required capability: `delete-messages`
|
||||
|
|
|
@ -31,6 +31,7 @@ use OCA\Talk\Participant;
|
|||
use OCA\Talk\Room;
|
||||
use OCA\Talk\Share\RoomShareProvider;
|
||||
use OCP\Comments\IComment;
|
||||
use OCP\Files\InvalidPathException;
|
||||
use OCP\Files\IRootFolder;
|
||||
use OCP\Files\Node;
|
||||
use OCP\Files\NotFoundException;
|
||||
|
@ -39,6 +40,7 @@ use OCP\IPreview as IPreviewManager;
|
|||
use OCP\IURLGenerator;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserManager;
|
||||
use OCP\Share\Exceptions\ShareNotFound;
|
||||
|
||||
class SystemMessage {
|
||||
|
||||
|
@ -324,7 +326,12 @@ class SystemMessage {
|
|||
try {
|
||||
$parsedParameters['file'] = $this->getFileFromShare($participant, $parameters['share']);
|
||||
$parsedMessage = '{file}';
|
||||
$chatMessage->setMessageType('comment');
|
||||
$metaData = $parameters['metaData'] ?? [];
|
||||
if (isset($metaData['messageType']) && $metaData['messageType'] === 'voice-message') {
|
||||
$chatMessage->setMessageType('voice-message');
|
||||
} else {
|
||||
$chatMessage->setMessageType('comment');
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
$parsedMessage = $this->l->t('{actor} shared a file which is no longer available');
|
||||
if ($currentUserIsActor) {
|
||||
|
@ -423,9 +430,9 @@ class SystemMessage {
|
|||
* @param Participant $participant
|
||||
* @param string $shareId
|
||||
* @return array
|
||||
* @throws \OCP\Files\InvalidPathException
|
||||
* @throws \OCP\Files\NotFoundException
|
||||
* @throws \OCP\Share\Exceptions\ShareNotFound
|
||||
* @throws InvalidPathException
|
||||
* @throws NotFoundException
|
||||
* @throws ShareNotFound
|
||||
*/
|
||||
protected function getFileFromShare(Participant $participant, string $shareId): array {
|
||||
$share = $this->shareProvider->getShareById($shareId);
|
||||
|
|
|
@ -312,7 +312,10 @@ class Listener {
|
|||
$manager = \OC::$server->query(Manager::class);
|
||||
|
||||
$room = $manager->getRoomByToken($share->getSharedWith());
|
||||
$listener->sendSystemMessage($room, 'file_shared', ['share' => $share->getId()]);
|
||||
$metaData = \OC::$server->getRequest()->getParam('talkMetaData') ?? '';
|
||||
$metaData = json_decode($metaData, true);
|
||||
$metaData = is_array($metaData) ? $metaData : [];
|
||||
$listener->sendSystemMessage($room, 'file_shared', ['share' => $share->getId(), 'metaData' => $metaData]);
|
||||
};
|
||||
/**
|
||||
* @psalm-suppress UndefinedClass
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
<code>$this->rootFolder</code>
|
||||
<code>IRootFolder</code>
|
||||
<code>IRootFolder</code>
|
||||
<code>\OCP\Share\Exceptions\ShareNotFound</code>
|
||||
<code>ShareNotFound</code>
|
||||
</MissingDependency>
|
||||
<UndefinedClass occurrences="1">
|
||||
<code>\OC_Util</code>
|
||||
|
@ -203,9 +203,6 @@
|
|||
<code>IRootFolder</code>
|
||||
<code>IRootFolder</code>
|
||||
</MissingDependency>
|
||||
<UndefinedClass occurrences="1">
|
||||
<code>SharedStorage</code>
|
||||
</UndefinedClass>
|
||||
</file>
|
||||
<file src="lib/Controller/SignalingController.php">
|
||||
<UndefinedClass occurrences="1">
|
||||
|
@ -237,9 +234,6 @@
|
|||
<code>ShareNotFound</code>
|
||||
<code>ShareNotFound</code>
|
||||
</MissingDependency>
|
||||
<UndefinedClass occurrences="1">
|
||||
<code>GroupFolderStorage</code>
|
||||
</UndefinedClass>
|
||||
</file>
|
||||
<file src="lib/Flow/Operation.php">
|
||||
<InvalidArgument occurrences="1"/>
|
||||
|
|
Загрузка…
Ссылка в новой задаче