Skip to content

Commit 0e1b719

Browse files
st3inybackportbot[bot]
authored andcommitted
Indicate preview availability in share api responses
Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
1 parent aeae671 commit 0e1b719

4 files changed

Lines changed: 78 additions & 0 deletions

File tree

apps/files_sharing/js/sharedfilelist.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@
353353
id: share.file_source,
354354
icon: OC.MimeType.getIconUrl(share.mimetype),
355355
mimetype: share.mimetype,
356+
hasPreview: share.has_preview,
356357
tags: share.tags || []
357358
}
358359
if (share.item_type === 'folder') {

apps/files_sharing/lib/Controller/ShareAPIController.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
use OCP\IConfig;
5757
use OCP\IGroupManager;
5858
use OCP\IL10N;
59+
use OCP\IPreview;
5960
use OCP\IRequest;
6061
use OCP\IServerContainer;
6162
use OCP\IURLGenerator;
@@ -201,6 +202,7 @@ protected function formatShare(\OCP\Share\IShare $share, Node $recipientNode = n
201202
}
202203

203204
$result['mimetype'] = $node->getMimetype();
205+
$result['has_preview'] = $this->previewManager->isAvailable($node);
204206
$result['storage_id'] = $node->getStorage()->getId();
205207
$result['storage'] = $node->getStorage()->getCache()->getNumericStorageId();
206208
$result['item_source'] = $node->getId();

apps/files_sharing/tests/ApiTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
use OCP\AppFramework\OCS\OCSNotFoundException;
4242
use OCP\IConfig;
4343
use OCP\IL10N;
44+
use OCP\IPreview;
4445
use OCP\IRequest;
4546
use OCP\IServerContainer;
4647
use OCP\Share\IShare;

apps/files_sharing/tests/Controller/ShareAPIControllerTest.php

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
use OCP\IConfig;
4646
use OCP\IGroupManager;
4747
use OCP\IL10N;
48+
use OCP\IPreview;
4849
use OCP\IRequest;
4950
use OCP\IServerContainer;
5051
use OCP\IURLGenerator;
@@ -585,6 +586,7 @@ public function dataGetShare() {
585586
'label' => '',
586587
'displayname_file_owner' => 'ownerDisplay',
587588
'mimetype' => 'myMimeType',
589+
'has_preview' => false,
588590
'hide_download' => 0,
589591
'can_edit' => false,
590592
'can_delete' => false,
@@ -633,6 +635,7 @@ public function dataGetShare() {
633635
'label' => '',
634636
'displayname_file_owner' => 'ownerDisplay',
635637
'mimetype' => 'myFolderMimeType',
638+
'has_preview' => false,
636639
'hide_download' => 0,
637640
'can_edit' => false,
638641
'can_delete' => false,
@@ -688,6 +691,7 @@ public function dataGetShare() {
688691
'label' => 'first link share',
689692
'displayname_file_owner' => 'ownerDisplay',
690693
'mimetype' => 'myFolderMimeType',
694+
'has_preview' => false,
691695
'hide_download' => 0,
692696
'can_edit' => false,
693697
'can_delete' => false,
@@ -3372,19 +3376,24 @@ public function dataFormatShare() {
33723376
$file = $this->getMockBuilder(File::class)->getMock();
33733377
$folder = $this->getMockBuilder(Folder::class)->getMock();
33743378
$parent = $this->getMockBuilder(Folder::class)->getMock();
3379+
$fileWithPreview = $this->getMockBuilder(File::class)->getMock();
33753380

33763381
$file->method('getMimeType')->willReturn('myMimeType');
33773382
$folder->method('getMimeType')->willReturn('myFolderMimeType');
3383+
$fileWithPreview->method('getMimeType')->willReturn('mimeWithPreview');
33783384

33793385
$file->method('getPath')->willReturn('file');
33803386
$folder->method('getPath')->willReturn('folder');
3387+
$fileWithPreview->method('getPath')->willReturn('fileWithPreview');
33813388

33823389
$parent->method('getId')->willReturn(1);
33833390
$folder->method('getId')->willReturn(2);
33843391
$file->method('getId')->willReturn(3);
3392+
$fileWithPreview->method('getId')->willReturn(4);
33853393

33863394
$file->method('getParent')->willReturn($parent);
33873395
$folder->method('getParent')->willReturn($parent);
3396+
$fileWithPreview->method('getParent')->willReturn($parent);
33883397

33893398
$cache = $this->getMockBuilder('OCP\Files\Cache\ICache')->getMock();
33903399
$cache->method('getNumericStorageId')->willReturn(100);
@@ -3394,6 +3403,7 @@ public function dataFormatShare() {
33943403

33953404
$file->method('getStorage')->willReturn($storage);
33963405
$folder->method('getStorage')->willReturn($storage);
3406+
$fileWithPreview->method('getStorage')->willReturn($storage);
33973407

33983408
$owner = $this->getMockBuilder(IUser::class)->getMock();
33993409
$owner->method('getDisplayName')->willReturn('ownerDN');
@@ -3444,6 +3454,7 @@ public function dataFormatShare() {
34443454
'label' => null,
34453455
'mail_send' => 0,
34463456
'mimetype' => 'myMimeType',
3457+
'has_preview' => false,
34473458
'hide_download' => 0,
34483459
'can_edit' => false,
34493460
'can_delete' => false,
@@ -3477,6 +3488,7 @@ public function dataFormatShare() {
34773488
'share_with_displayname' => 'recipientDN',
34783489
'mail_send' => 0,
34793490
'mimetype' => 'myMimeType',
3491+
'has_preview' => false,
34803492
'hide_download' => 0,
34813493
'can_edit' => false,
34823494
'can_delete' => false,
@@ -3526,6 +3538,7 @@ public function dataFormatShare() {
35263538
'share_with_displayname' => 'recipient',
35273539
'mail_send' => 0,
35283540
'mimetype' => 'myMimeType',
3541+
'has_preview' => false,
35293542
'hide_download' => 0,
35303543
'can_edit' => false,
35313544
'can_delete' => false,
@@ -3571,6 +3584,7 @@ public function dataFormatShare() {
35713584
'share_with_displayname' => 'recipient',
35723585
'mail_send' => 0,
35733586
'mimetype' => 'myMimeType',
3587+
'has_preview' => false,
35743588
'hide_download' => 0,
35753589
'can_edit' => true,
35763590
'can_delete' => true,
@@ -3618,6 +3632,7 @@ public function dataFormatShare() {
36183632
'share_with_displayname' => 'recipientGroupDisplayName',
36193633
'mail_send' => 0,
36203634
'mimetype' => 'myMimeType',
3635+
'has_preview' => false,
36213636
'hide_download' => 0,
36223637
'can_edit' => false,
36233638
'can_delete' => false,
@@ -3663,6 +3678,7 @@ public function dataFormatShare() {
36633678
'share_with_displayname' => 'recipientGroup2',
36643679
'mail_send' => 0,
36653680
'mimetype' => 'myMimeType',
3681+
'has_preview' => false,
36663682
'hide_download' => 0,
36673683
'can_edit' => false,
36683684
'can_delete' => false,
@@ -3714,6 +3730,7 @@ public function dataFormatShare() {
37143730
'mail_send' => 0,
37153731
'url' => 'myLink',
37163732
'mimetype' => 'myMimeType',
3733+
'has_preview' => false,
37173734
'hide_download' => 0,
37183735
'can_edit' => false,
37193736
'can_delete' => false,
@@ -3766,6 +3783,7 @@ public function dataFormatShare() {
37663783
'mail_send' => 0,
37673784
'url' => 'myLink',
37683785
'mimetype' => 'myMimeType',
3786+
'has_preview' => false,
37693787
'hide_download' => 0,
37703788
'can_edit' => false,
37713789
'can_delete' => false,
@@ -3811,6 +3829,7 @@ public function dataFormatShare() {
38113829
'share_with_displayname' => 'foobar',
38123830
'mail_send' => 0,
38133831
'mimetype' => 'myFolderMimeType',
3832+
'has_preview' => false,
38143833
'hide_download' => 0,
38153834
'can_edit' => false,
38163835
'can_delete' => false,
@@ -3859,6 +3878,7 @@ public function dataFormatShare() {
38593878
'share_with_avatar' => 'path/to/the/avatar',
38603879
'mail_send' => 0,
38613880
'mimetype' => 'myFolderMimeType',
3881+
'has_preview' => false,
38623882
'hide_download' => 0,
38633883
'can_edit' => false,
38643884
'can_delete' => false,
@@ -3905,6 +3925,7 @@ public function dataFormatShare() {
39053925
'share_with_avatar' => '',
39063926
'mail_send' => 0,
39073927
'mimetype' => 'myFolderMimeType',
3928+
'has_preview' => false,
39083929
'hide_download' => 0,
39093930
'can_edit' => false,
39103931
'can_delete' => false,
@@ -3951,6 +3972,7 @@ public function dataFormatShare() {
39513972
'share_with_avatar' => '',
39523973
'mail_send' => 0,
39533974
'mimetype' => 'myFolderMimeType',
3975+
'has_preview' => false,
39543976
'hide_download' => 0,
39553977
'can_edit' => false,
39563978
'can_delete' => false,
@@ -4011,6 +4033,7 @@ public function dataFormatShare() {
40114033
'share_with_displayname' => 'mail display name',
40124034
'mail_send' => 0,
40134035
'mimetype' => 'myFolderMimeType',
4036+
'has_preview' => false,
40144037
'password' => 'password',
40154038
'send_password_by_talk' => false,
40164039
'hide_download' => 0,
@@ -4059,6 +4082,7 @@ public function dataFormatShare() {
40594082
'share_with_displayname' => 'mail display name',
40604083
'mail_send' => 0,
40614084
'mimetype' => 'myFolderMimeType',
4085+
'has_preview' => false,
40624086
'password' => 'password',
40634087
'send_password_by_talk' => true,
40644088
'hide_download' => 0,
@@ -4067,6 +4091,54 @@ public function dataFormatShare() {
40674091
], $share, [], false
40684092
];
40694093

4094+
// Preview is available
4095+
$share = \OC::$server->getShareManager()->newShare();
4096+
$share->setShareType(IShare::TYPE_USER)
4097+
->setSharedWith('recipient')
4098+
->setSharedBy('initiator')
4099+
->setShareOwner('currentUser')
4100+
->setPermissions(\OCP\Constants::PERMISSION_READ)
4101+
->setNode($fileWithPreview)
4102+
->setShareTime(new \DateTime('2000-01-01T00:01:02'))
4103+
->setTarget('myTarget')
4104+
->setNote('personal note')
4105+
->setId(42);
4106+
4107+
$result[] = [
4108+
[
4109+
'id' => 42,
4110+
'share_type' => IShare::TYPE_USER,
4111+
'uid_owner' => 'initiator',
4112+
'displayname_owner' => 'initiator',
4113+
'permissions' => 1,
4114+
'stime' => 946684862,
4115+
'parent' => null,
4116+
'expiration' => null,
4117+
'token' => null,
4118+
'uid_file_owner' => 'currentUser',
4119+
'displayname_file_owner' => 'currentUser',
4120+
'note' => 'personal note',
4121+
'label' => null,
4122+
'path' => 'fileWithPreview',
4123+
'item_type' => 'file',
4124+
'storage_id' => 'storageId',
4125+
'storage' => 100,
4126+
'item_source' => 4,
4127+
'file_source' => 4,
4128+
'file_parent' => 1,
4129+
'file_target' => 'myTarget',
4130+
'share_with' => 'recipient',
4131+
'share_with_displayname' => 'recipient',
4132+
'mail_send' => 0,
4133+
'mimetype' => 'mimeWithPreview',
4134+
'has_preview' => true,
4135+
'hide_download' => 0,
4136+
'can_edit' => true,
4137+
'can_delete' => true,
4138+
'status' => [],
4139+
], $share, [], false
4140+
];
4141+
40704142
return $result;
40714143
}
40724144

@@ -4203,6 +4275,7 @@ public function dataFormatRoomShare() {
42034275
'share_with_displayname' => '',
42044276
'mail_send' => 0,
42054277
'mimetype' => 'myMimeType',
4278+
'has_preview' => false,
42064279
'hide_download' => 0,
42074280
'label' => '',
42084281
'can_edit' => false,
@@ -4248,6 +4321,7 @@ public function dataFormatRoomShare() {
42484321
'share_with_displayname' => 'recipientRoomName',
42494322
'mail_send' => 0,
42504323
'mimetype' => 'myMimeType',
4324+
'has_preview' => false,
42514325
'hide_download' => 0,
42524326
'label' => '',
42534327
'can_edit' => false,

0 commit comments

Comments
 (0)