mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
e035d526d6
Restructure frontend directories GitOrigin-RevId: 5a1224ca186f4809df45680a80d374c1c318d7bf
104 lines
2.9 KiB
JavaScript
104 lines
2.9 KiB
JavaScript
/* eslint-disable
|
|
max-len,
|
|
no-return-assign,
|
|
no-undef,
|
|
no-unused-vars,
|
|
*/
|
|
// TODO: This file was created by bulk-decaffeinate.
|
|
// Fix any style issues and re-enable lint.
|
|
/*
|
|
* decaffeinate suggestions:
|
|
* DS102: Remove unnecessary code created because of implicit returns
|
|
* DS103: Rewrite code to no longer use __guard__
|
|
* DS207: Consider shorter variations of null checks
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
*/
|
|
define([], function() {
|
|
let ReferencesManager
|
|
return (ReferencesManager = class ReferencesManager {
|
|
constructor(ide, $scope) {
|
|
this.ide = ide
|
|
this.$scope = $scope
|
|
this.$scope.$root._references = this.state = { keys: [] }
|
|
|
|
this.$scope.$on('document:closed', (e, doc) => {
|
|
let entity
|
|
if (doc.doc_id) {
|
|
entity = this.ide.fileTreeManager.findEntityById(doc.doc_id)
|
|
}
|
|
if (
|
|
__guard__(entity != null ? entity.name : undefined, x =>
|
|
x.match(/.*\.bib$/)
|
|
)
|
|
) {
|
|
return this.indexReferences([doc.doc_id], true)
|
|
}
|
|
})
|
|
|
|
this.$scope.$on('references:should-reindex', (e, data) => {
|
|
return this.indexAllReferences(true)
|
|
})
|
|
|
|
// When we join the project:
|
|
// index all references files
|
|
// and don't broadcast to all clients
|
|
this.inited = false
|
|
this.$scope.$on('project:joined', e => {
|
|
// We only need to grab the references when the editor first loads,
|
|
// not on every reconnect
|
|
if (!this.inited) {
|
|
this.inited = true
|
|
return this.indexAllReferences(false)
|
|
}
|
|
})
|
|
|
|
setTimeout(
|
|
self =>
|
|
self.ide.socket.on('references:keys:updated', keys =>
|
|
// console.log '>> got keys from socket'
|
|
self._storeReferencesKeys(keys)
|
|
),
|
|
|
|
1000,
|
|
this
|
|
)
|
|
}
|
|
|
|
_storeReferencesKeys(newKeys) {
|
|
// console.log '>> storing references keys'
|
|
const oldKeys = this.$scope.$root._references.keys
|
|
return (this.$scope.$root._references.keys = _.union(oldKeys, newKeys))
|
|
}
|
|
|
|
indexReferences(docIds, shouldBroadcast) {
|
|
const opts = {
|
|
docIds,
|
|
shouldBroadcast,
|
|
_csrf: window.csrfToken
|
|
}
|
|
return this.ide.$http
|
|
.post(`/project/${this.$scope.project_id}/references/index`, opts)
|
|
.then(response => {
|
|
return this._storeReferencesKeys(response.data.keys)
|
|
})
|
|
}
|
|
|
|
indexAllReferences(shouldBroadcast) {
|
|
const opts = {
|
|
shouldBroadcast,
|
|
_csrf: window.csrfToken
|
|
}
|
|
return this.ide.$http
|
|
.post(`/project/${this.$scope.project_id}/references/indexAll`, opts)
|
|
.then(response => {
|
|
return this._storeReferencesKeys(response.data.keys)
|
|
})
|
|
}
|
|
})
|
|
})
|
|
|
|
function __guard__(value, transform) {
|
|
return typeof value !== 'undefined' && value !== null
|
|
? transform(value)
|
|
: undefined
|
|
}
|