Merge pull request #23478 from overleaf/em-doc-hash-diff

Fix doc hash on delete + insert combination

GitOrigin-RevId: ecea5f8ab01f24a9064be88611256b502500d91f
This commit is contained in:
Eric Mc Sween
2025-02-07 08:34:03 -05:00
committed by Copybot
parent b5f96b50c0
commit 064baf31ad
2 changed files with 29 additions and 1 deletions

View File

@@ -397,9 +397,16 @@ function _concatTwoUpdates(firstUpdate, secondUpdate) {
// Make sure that commentIds metadata is propagated to inserts
op.commentIds = secondOp.commentIds
}
return mergeUpdatesWithOp(firstUpdate, secondUpdate, op)
const update = mergeUpdatesWithOp(firstUpdate, secondUpdate, op)
// Set the doc hash only on the last update
delete update.meta.doc_hash
return update
}
)
const docHash = secondUpdate.meta.doc_hash
if (docHash != null && diffUpdates.length > 0) {
diffUpdates[diffUpdates.length - 1].meta.doc_hash = docHash
}
// Doing a diff like this loses track of the doc lengths for each
// update, so recalculate them

View File

@@ -1565,6 +1565,27 @@ describe('UpdateCompressor', function () {
},
])
})
it('special case for delete + insert triggering diff', function () {
const meta = { ts: this.ts1, user_id: this.user_id, doc_length: 10 }
expect(
this.UpdateCompressor.compressUpdates([
{ op: { p: 3, d: 'foo' }, meta, v: 42 },
{
op: { p: 3, i: 'bar' },
meta: { ...meta, doc_hash: 'hash1' },
v: 43,
},
])
).to.deep.equal([
{ op: { p: 3, d: 'foo' }, meta, v: 43 },
{
op: { p: 3, i: 'bar' },
meta: { ...meta, doc_length: 7, doc_hash: 'hash1' },
v: 43,
},
])
})
})
})
})