1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Desktop: Fixes existing attachments not being shared in some cases with Joplin Server

This commit is contained in:
Laurent Cozic 2024-01-14 12:33:40 +00:00
parent 1d4e3fe3ea
commit 7ebc98633a
2 changed files with 19 additions and 2 deletions

View File

@ -311,11 +311,14 @@ describe('models/Folder.sharing', () => {
expect(resource.share_id).toBe(''); expect(resource.share_id).toBe('');
} }
const previousBlobUpdatedTime = (await Resource.load(resourceId)).blob_updated_time;
await msleep(1);
await Folder.updateAllShareIds(resourceService); await Folder.updateAllShareIds(resourceService);
{ {
const resource: ResourceEntity = await Resource.load(resourceId); const resource: ResourceEntity = await Resource.load(resourceId);
expect(resource.share_id).toBe(note1.share_id); expect(resource.share_id).toBe(note1.share_id);
expect(resource.blob_updated_time).toBeGreaterThan(previousBlobUpdatedTime);
} }
await Note.save({ id: note1.id, parent_id: folder2.id }); await Note.save({ id: note1.id, parent_id: folder2.id });

View File

@ -417,6 +417,7 @@ export default class Folder extends BaseItem {
share_id: string; share_id: string;
is_shared: number; is_shared: number;
resource_is_shared: number; resource_is_shared: number;
resource_share_id: string;
} }
for (let i = 0; i < 5; i++) { for (let i = 0; i < 5; i++) {
@ -426,7 +427,12 @@ export default class Folder extends BaseItem {
// same time we also process the is_shared property. // same time we also process the is_shared property.
const rows = (await this.db().selectAll(` const rows = (await this.db().selectAll(`
SELECT r.id, n.share_id, n.is_shared, r.is_shared as resource_is_shared SELECT
r.id,
n.share_id,
n.is_shared,
r.is_shared as resource_is_shared,
r.share_id as resource_share_id
FROM note_resources nr FROM note_resources nr
LEFT JOIN resources r ON nr.resource_id = r.id LEFT JOIN resources r ON nr.resource_id = r.id
LEFT JOIN notes n ON nr.note_id = n.id LEFT JOIN notes n ON nr.note_id = n.id
@ -513,7 +519,15 @@ export default class Folder extends BaseItem {
updated_time: now, updated_time: now,
}; };
if (row.is_shared !== row.resource_is_shared) { // When a resource becomes published or shared, we set
// `blob_updated_time` to ensure that the resource content
// is uploaded too during the next sync operation.
//
// This is necessary because Joplin Server needs to
// associate `share_id` or `is_shared` with the resource
// content for sharing to work. Otherwise the share
// recipient will only get the resource metadata.
if (row.is_shared !== row.resource_is_shared || row.share_id !== row.resource_share_id) {
resource.blob_updated_time = now; resource.blob_updated_time = now;
} }