Skip to content

Commit ec3aa18

Browse files
authored
Merge pull request #57002 from nextcloud/backport/56977/stable31
[stable31] fix(files_sharing): Normalize dir type to folder for federated shares
2 parents 4ae3913 + 5f6e836 commit ec3aa18

File tree

5 files changed

+55
-5
lines changed

5 files changed

+55
-5
lines changed

apps/files_sharing/src/services/SharingService.spec.ts

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,25 @@ describe('SharingService share to Node mapping', () => {
313313
accepted: false,
314314
}
315315

316+
const remoteFolderAccepted = {
317+
mimetype: 'httpd/unix-directory',
318+
mtime: 1688721600,
319+
permissions: 31,
320+
type: 'dir',
321+
file_id: 5678,
322+
id: 5,
323+
share_type: ShareType.User,
324+
parent: null,
325+
remote: 'http://example.com',
326+
remote_id: '12346',
327+
share_token: 'share-token-folder',
328+
name: '/testfolder',
329+
mountpoint: '/shares/testfolder',
330+
owner: 'owner-uid',
331+
user: 'sharee-uid',
332+
accepted: true,
333+
}
334+
316335
const tempExternalFile = {
317336
id: 65,
318337
share_type: 0,
@@ -455,6 +474,36 @@ describe('SharingService share to Node mapping', () => {
455474
})
456475
})
457476

477+
describe('Remote folder', () => {
478+
test('Accepted with type dir', async () => {
479+
axios.get.mockReturnValueOnce(Promise.resolve({
480+
data: {
481+
ocs: {
482+
data: [remoteFolderAccepted],
483+
},
484+
},
485+
}))
486+
487+
const shares = await getContents(false, true, false, false)
488+
489+
expect(axios.get).toHaveBeenCalledTimes(1)
490+
expect(shares.contents).toHaveLength(1)
491+
492+
const folder = shares.contents[0] as Folder
493+
expect(folder).toBeInstanceOf(Folder)
494+
expect(folder.fileid).toBe(5678)
495+
expect(folder.source).toBe('http://nextcloud.local/remote.php/dav/files/test/shares/testfolder')
496+
expect(folder.owner).toBe('owner-uid')
497+
expect(folder.mime).toBe('httpd/unix-directory')
498+
expect(folder.mtime?.getTime()).toBe(remoteFolderAccepted.mtime * 1000)
499+
expect(folder.size).toBe(undefined)
500+
expect(folder.permissions).toBe(31)
501+
expect(folder.root).toBe('/files/test')
502+
expect(folder.attributes).toBeInstanceOf(Object)
503+
expect(folder.attributes.favorite).toBe(0)
504+
})
505+
})
506+
458507
test('External temp file', async () => {
459508
axios.get.mockReturnValueOnce(Promise.resolve({
460509
data: {

apps/files_sharing/src/services/SharingService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ const ocsEntryToNode = async function(ocsEntry: any): Promise<Folder | File | nu
3030
// This won't catch files without an extension, but this is the best we can do
3131
ocsEntry.mimetype = mime.getType(ocsEntry.name)
3232
}
33-
ocsEntry.item_type = ocsEntry.type || (ocsEntry.mimetype ? 'file' : 'folder')
33+
const type = ocsEntry.type === 'dir' ? 'folder' : ocsEntry.type
34+
ocsEntry.item_type = type || (ocsEntry.mimetype ? 'file' : 'folder')
3435

3536
// different naming for remote shares
3637
ocsEntry.item_mtime = ocsEntry.mtime

dist/6194-6194.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/files_sharing-init.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/files_sharing-init.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)