mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-26 18:51:50 +02:00
[web] avoid accessing the sharejs snapshot directly (#25037)
* [web] avoid accessing the sharejs snapshot directly * [web] limit API interface for sharejs types GitOrigin-RevId: faece372128e4580376e32fa93aa8fedf1e02957
This commit is contained in:
@@ -580,7 +580,7 @@ export const EditorManagerProvider: FC = ({ children }) => {
|
||||
editorContent =
|
||||
typeof editorContent === 'string'
|
||||
? editorContent
|
||||
: document.doc?._doc.snapshot
|
||||
: document.getSnapshot()
|
||||
|
||||
// Tear down the ShareJsDoc.
|
||||
if (document.doc) document.doc.clearInflightAndPendingOps()
|
||||
|
||||
@@ -60,7 +60,7 @@ export const ReferencesProvider: FC = ({ children }) => {
|
||||
// avoid reindexing references if the bib file has not changed since the
|
||||
// last time they were indexed
|
||||
const docId = doc.doc_id
|
||||
const snapshot = doc._doc.snapshot
|
||||
const snapshot = doc.getSnapshot()
|
||||
const now = Date.now()
|
||||
const sha1 = generateSHA1Hash(
|
||||
'blob ' + snapshot.length + '\x00' + snapshot
|
||||
|
||||
@@ -142,11 +142,8 @@ export class ShareJsDoc extends EventEmitter {
|
||||
|
||||
private removeCarriageReturnCharFromShareJsDoc() {
|
||||
const doc = this._doc
|
||||
if (doc.snapshot.indexOf('\r') === -1) {
|
||||
return
|
||||
}
|
||||
let nextPos
|
||||
while ((nextPos = doc.snapshot.indexOf('\r')) !== -1) {
|
||||
while ((nextPos = doc.getText().indexOf('\r')) !== -1) {
|
||||
debugConsole.log('[ShareJsDoc] remove-carriage-return-char', nextPos)
|
||||
doc.del(nextPos, 1)
|
||||
}
|
||||
@@ -259,7 +256,7 @@ export class ShareJsDoc extends EventEmitter {
|
||||
}
|
||||
|
||||
getSnapshot() {
|
||||
return this._doc.snapshot as string | undefined
|
||||
return this._doc.getText() as string
|
||||
}
|
||||
|
||||
getVersion() {
|
||||
|
||||
@@ -1008,8 +1008,8 @@ export const { Doc } = (() => {
|
||||
|
||||
this.type = type;
|
||||
if (type.api) {
|
||||
for (var k in type.api) {
|
||||
var v = type.api[k];this[k] = v;
|
||||
for (const k of ['insert', 'del', 'getText', 'getLength', '_register']) {
|
||||
this[k] = type.api[k]
|
||||
}
|
||||
return typeof this._register === 'function' ? this._register() : undefined;
|
||||
} else {
|
||||
@@ -1322,7 +1322,8 @@ export const { Doc } = (() => {
|
||||
var needToRecomputeHash = !this.__lastSubmitTimestamp || (age > RECOMPUTE_HASH_INTERVAL) || (age < 0)
|
||||
if (needToRecomputeHash || debugging) {
|
||||
// send git hash of current snapshot
|
||||
var sha1 = generateSHA1Hash("blob " + this.snapshot.length + "\x00" + this.snapshot)
|
||||
const str = this.getText()
|
||||
var sha1 = generateSHA1Hash("blob " + str.length + "\x00" + str)
|
||||
this.__lastSubmitTimestamp = now;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user