Skip to content

Commit d15feb4

Browse files
authored
Merge pull request #56977 from nextcloud/fix/federated-share-display-in-shared-with-you
fix(files_sharing): Normalize dir type to folder for federated shares
2 parents f892437 + b92b3e7 commit d15feb4

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,
@@ -457,6 +476,36 @@ describe('SharingService share to Node mapping', () => {
457476
})
458477
})
459478

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

apps/files_sharing/src/services/SharingService.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ async function ocsEntryToNode(ocsEntry: any): Promise<Folder | File | null> {
3333
// This won't catch files without an extension, but this is the best we can do
3434
ocsEntry.mimetype = mime.getType(ocsEntry.name)
3535
}
36-
ocsEntry.item_type = ocsEntry.type || (ocsEntry.mimetype ? 'file' : 'folder')
36+
const type = ocsEntry.type === 'dir' ? 'folder' : ocsEntry.type
37+
ocsEntry.item_type = type || (ocsEntry.mimetype ? 'file' : 'folder')
3738

3839
// different naming for remote shares
3940
ocsEntry.item_mtime = ocsEntry.mtime

dist/5230-5230.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)