mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-23 17:19:37 +02:00
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:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
])
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user