Merge branch 'cache-autocomplete-results' into 'master'
Cache autocomplete results ## What does this MR do? Caches the results of the autocomplete AJAX call to stop new GFM inputs on the page from requesting new data. The cache is then cleared on each new page so that it doesn't stay around per project. See merge request !5043
This commit is contained in:
commit
6c0d3b4cf3
2 changed files with 6 additions and 2 deletions
|
@ -4,7 +4,7 @@ window.GitLab ?= {}
|
|||
GitLab.GfmAutoComplete =
|
||||
dataLoading: false
|
||||
dataLoaded: false
|
||||
|
||||
cachedData: {}
|
||||
dataSource: ''
|
||||
|
||||
# Emoji
|
||||
|
@ -55,7 +55,7 @@ GitLab.GfmAutoComplete =
|
|||
@setupAtWho()
|
||||
|
||||
if @dataSource
|
||||
if !@dataLoading
|
||||
if not @dataLoading and not @cachedData
|
||||
@dataLoading = true
|
||||
|
||||
# We should wait until initializations are done
|
||||
|
@ -70,6 +70,8 @@ GitLab.GfmAutoComplete =
|
|||
@loadData(data)
|
||||
, 1000)
|
||||
|
||||
if @cachedData?
|
||||
@loadData(@cachedData)
|
||||
|
||||
setupAtWho: ->
|
||||
# Emoji
|
||||
|
@ -205,6 +207,7 @@ GitLab.GfmAutoComplete =
|
|||
$.getJSON(dataSource)
|
||||
|
||||
loadData: (data) ->
|
||||
@cachedData = data
|
||||
@dataLoaded = true
|
||||
|
||||
# load members
|
||||
|
|
|
@ -3,4 +3,5 @@
|
|||
- if @noteable
|
||||
:javascript
|
||||
GitLab.GfmAutoComplete.dataSource = "#{autocomplete_sources_namespace_project_path(project.namespace, project, type: @noteable.class, type_id: params[:id])}"
|
||||
GitLab.GfmAutoComplete.cachedData = undefined;
|
||||
GitLab.GfmAutoComplete.setup();
|
||||
|
|
Loading…
Reference in a new issue