Merge pull request #17162 from overleaf/em-handle-comments

Handle comment updates in project-history

GitOrigin-RevId: 46f0043c1c20200bdb665e66643a7870c18d797f
This commit is contained in:
Eric Mc Sween
2024-02-20 08:30:36 -05:00
committed by Copybot
parent c9b9ae4180
commit cd1773773e
12 changed files with 781 additions and 648 deletions

View File

@@ -1,30 +1,61 @@
exports.Author = require('./lib/author')
exports.AuthorList = require('./lib/author_list')
exports.Blob = require('./lib/blob')
exports.Change = require('./lib/change')
exports.ChangeRequest = require('./lib/change_request')
exports.ChangeNote = require('./lib/change_note')
exports.Chunk = require('./lib/chunk')
exports.ChunkResponse = require('./lib/chunk_response')
exports.File = require('./lib/file')
exports.FileMap = require('./lib/file_map')
exports.History = require('./lib/history')
exports.Label = require('./lib/label')
exports.AddFileOperation = require('./lib/operation/add_file_operation')
exports.MoveFileOperation = require('./lib/operation/move_file_operation')
exports.EditFileOperation = require('./lib/operation/edit_file_operation')
exports.EditNoOperation = require('./lib/operation/edit_no_operation')
exports.AddCommentOperation = require('./lib/operation/add_comment_operation')
exports.DeleteCommentOperation = require('./lib/operation/delete_comment_operation')
exports.SetFileMetadataOperation = require('./lib/operation/set_file_metadata_operation')
exports.NoOperation = require('./lib/operation/no_operation')
exports.Operation = require('./lib/operation')
exports.RestoreOrigin = require('./lib/origin/restore_origin')
exports.Origin = require('./lib/origin')
exports.OtClient = require('./lib/ot_client')
exports.TextOperation = require('./lib/operation/text_operation')
exports.EditOperation = require('./lib/operation/edit_operation')
exports.safePathname = require('./lib/safe_pathname')
exports.Snapshot = require('./lib/snapshot')
exports.util = require('./lib/util')
exports.V2DocVersions = require('./lib/v2_doc_versions')
const AddCommentOperation = require('./lib/operation/add_comment_operation')
const Author = require('./lib/author')
const AuthorList = require('./lib/author_list')
const Blob = require('./lib/blob')
const Change = require('./lib/change')
const ChangeRequest = require('./lib/change_request')
const ChangeNote = require('./lib/change_note')
const Chunk = require('./lib/chunk')
const ChunkResponse = require('./lib/chunk_response')
const DeleteCommentOperation = require('./lib/operation/delete_comment_operation')
const File = require('./lib/file')
const FileMap = require('./lib/file_map')
const History = require('./lib/history')
const Label = require('./lib/label')
const AddFileOperation = require('./lib/operation/add_file_operation')
const MoveFileOperation = require('./lib/operation/move_file_operation')
const EditFileOperation = require('./lib/operation/edit_file_operation')
const EditNoOperation = require('./lib/operation/edit_no_operation')
const SetFileMetadataOperation = require('./lib/operation/set_file_metadata_operation')
const NoOperation = require('./lib/operation/no_operation')
const Operation = require('./lib/operation')
const RestoreOrigin = require('./lib/origin/restore_origin')
const Origin = require('./lib/origin')
const OtClient = require('./lib/ot_client')
const TextOperation = require('./lib/operation/text_operation')
const EditOperation = require('./lib/operation/edit_operation')
const safePathname = require('./lib/safe_pathname')
const Snapshot = require('./lib/snapshot')
const util = require('./lib/util')
const V2DocVersions = require('./lib/v2_doc_versions')
exports.AddCommentOperation = AddCommentOperation
exports.Author = Author
exports.AuthorList = AuthorList
exports.Blob = Blob
exports.Change = Change
exports.ChangeRequest = ChangeRequest
exports.ChangeNote = ChangeNote
exports.Chunk = Chunk
exports.ChunkResponse = ChunkResponse
exports.DeleteCommentOperation = DeleteCommentOperation
exports.File = File
exports.FileMap = FileMap
exports.History = History
exports.Label = Label
exports.AddFileOperation = AddFileOperation
exports.MoveFileOperation = MoveFileOperation
exports.EditFileOperation = EditFileOperation
exports.EditNoOperation = EditNoOperation
exports.SetFileMetadataOperation = SetFileMetadataOperation
exports.NoOperation = NoOperation
exports.Operation = Operation
exports.RestoreOrigin = RestoreOrigin
exports.Origin = Origin
exports.OtClient = OtClient
exports.TextOperation = TextOperation
exports.EditOperation = EditOperation
exports.safePathname = safePathname
exports.Snapshot = Snapshot
exports.util = util
exports.V2DocVersions = V2DocVersions

View File

@@ -29,16 +29,16 @@ class Operation {
* @return {Operation} one of the subclasses
*/
static fromRaw(raw) {
if (Object.prototype.hasOwnProperty.call(raw, 'file')) {
if ('file' in raw) {
return AddFileOperation.fromRaw(raw)
}
if (Object.prototype.hasOwnProperty.call(raw, 'textOperation')) {
if ('textOperation' in raw || 'commentId' in raw) {
return EditFileOperation.fromRaw(raw)
}
if (Object.prototype.hasOwnProperty.call(raw, 'newPathname')) {
if ('newPathname' in raw) {
return new MoveFileOperation(raw.pathname, raw.newPathname)
}
if (Object.prototype.hasOwnProperty.call(raw, 'metadata')) {
if ('metadata' in raw) {
return new SetFileMetadataOperation(raw.pathname, raw.metadata)
}
if (_.isEmpty(raw)) {

View File

@@ -32,9 +32,7 @@ describe('DeleteCommentOperation', function () {
const fileData = new StringFileData('abc')
const op = new DeleteCommentOperation('123')
fileData.comments.add('123', new Comment([new Range(0, 1)]))
const invertedOp = /** @type {InstanceType<AddCommentOperation>} */ (
op.invert(fileData)
)
const invertedOp = /** @type {AddCommentOperation} */ (op.invert(fileData))
expect(invertedOp).to.be.instanceOf(AddCommentOperation)
expect(invertedOp.commentId).to.equal('123')
expect(invertedOp.comment).to.be.instanceOf(Comment)