diff options
Diffstat (limited to 'app/assets')
-rw-r--r-- | app/assets/javascripts/repo/components/repo_editor.vue | 2 | ||||
-rw-r--r-- | app/assets/javascripts/repo/stores/actions.js | 17 | ||||
-rw-r--r-- | app/assets/javascripts/repo/stores/actions/file.js | 8 | ||||
-rw-r--r-- | app/assets/javascripts/repo/stores/actions/tree.js | 12 | ||||
-rw-r--r-- | app/assets/javascripts/repo/stores/getters.js | 6 | ||||
-rw-r--r-- | app/assets/javascripts/repo/stores/index.js | 2 | ||||
-rw-r--r-- | app/assets/javascripts/repo/stores/state.js | 4 | ||||
-rw-r--r-- | app/assets/javascripts/repo/stores/utils.js | 2 |
8 files changed, 31 insertions, 22 deletions
diff --git a/app/assets/javascripts/repo/components/repo_editor.vue b/app/assets/javascripts/repo/components/repo_editor.vue index 9114b3a1acd..6e9669403f2 100644 --- a/app/assets/javascripts/repo/components/repo_editor.vue +++ b/app/assets/javascripts/repo/components/repo_editor.vue @@ -74,7 +74,7 @@ export default { }, watch: { activeFile(oldVal, newVal) { - if (!newVal.active) { + if (newVal && !newVal.active) { this.initMonaco(); } }, diff --git a/app/assets/javascripts/repo/stores/actions.js b/app/assets/javascripts/repo/stores/actions.js index c8be50116eb..d5dc57e331b 100644 --- a/app/assets/javascripts/repo/stores/actions.js +++ b/app/assets/javascripts/repo/stores/actions.js @@ -2,9 +2,8 @@ import Vue from 'vue'; import flash from '../../flash'; import service from '../services'; import * as types from './mutation_types'; -import { visitUrl } from '../../lib/utils/url_utility'; -export const redirectToUrl = url => visitUrl(url); +export const redirectToUrl = url => gl.utils.visitUrl(url); export const setInitialData = ({ commit }, data) => commit(types.SET_INITIAL_DATA, data); @@ -26,7 +25,7 @@ export const closeAllFiles = ({ state, dispatch }) => { state.openFiles.forEach(file => dispatch('closeFile', { file })); }; -export const toggleEditMode = ({ commit, getters, dispatch }, force = false) => { +export const toggleEditMode = ({ state, commit, getters, dispatch }, force = false) => { const changedFiles = getters.changedFiles; if (changedFiles.length && !force) { @@ -35,7 +34,10 @@ export const toggleEditMode = ({ commit, getters, dispatch }, force = false) => commit(types.TOGGLE_EDIT_MODE); commit(types.TOGGLE_DISCARD_POPUP, false); dispatch('toggleBlobView'); - dispatch('discardAllChanges'); + + if (!state.editMode) { + dispatch('discardAllChanges'); + } } }; @@ -111,9 +113,12 @@ export const popHistoryState = ({ state, dispatch, getters }) => { export const scrollToTab = () => { Vue.nextTick(() => { const tabs = document.getElementById('tabs'); - const tabEl = tabs.querySelector('.active'); - tabs.scrollLeft = tabEl.offsetLeft; + if (tabs) { + const tabEl = tabs.querySelector('.active'); + + tabs.scrollLeft = tabEl.offsetLeft; + } }); }; diff --git a/app/assets/javascripts/repo/stores/actions/file.js b/app/assets/javascripts/repo/stores/actions/file.js index 5759ff07aef..013a0b3f4da 100644 --- a/app/assets/javascripts/repo/stores/actions/file.js +++ b/app/assets/javascripts/repo/stores/actions/file.js @@ -3,6 +3,7 @@ import flash from '../../../flash'; import service from '../../services'; import * as types from '../mutation_types'; import { + findEntry, pushState, setPageTitle, createTemp, @@ -88,11 +89,16 @@ export const createTempFile = ({ state, commit, dispatch }, { tree, name }) => { changed: true, }); + if (findEntry(tree, 'blob', file.name)) return; + commit(types.CREATE_TMP_FILE, { parent: tree, file, }); commit(types.TOGGLE_FILE_OPEN, file); dispatch('setFileActive', file); - dispatch('toggleEditMode', true); + + if (!state.editMode) { + dispatch('toggleEditMode', true); + } }; diff --git a/app/assets/javascripts/repo/stores/actions/tree.js b/app/assets/javascripts/repo/stores/actions/tree.js index 9d084a952a2..129743c66c2 100644 --- a/app/assets/javascripts/repo/stores/actions/tree.js +++ b/app/assets/javascripts/repo/stores/actions/tree.js @@ -76,7 +76,7 @@ export const clickedTreeRow = ({ commit, dispatch }, row) => { export const createTempTree = ({ state, commit, dispatch }, name) => { let tree = state; - const dirNames = name.replace(`${state.path}/`, '').split('/'); + const dirNames = name.replace(new RegExp(`^${state.path}/`), '').split('/'); dirNames.forEach((dirName) => { const foundEntry = findEntry(tree, 'tree', dirName); @@ -101,8 +101,10 @@ export const createTempTree = ({ state, commit, dispatch }, name) => { } }); - dispatch('createTempFile', { - tree, - name: '.gitkeep', - }); + if (tree.tempFile) { + dispatch('createTempFile', { + tree, + name: '.gitkeep', + }); + } }; diff --git a/app/assets/javascripts/repo/stores/getters.js b/app/assets/javascripts/repo/stores/getters.js index 1c83c943ef7..9122578cc79 100644 --- a/app/assets/javascripts/repo/stores/getters.js +++ b/app/assets/javascripts/repo/stores/getters.js @@ -15,11 +15,7 @@ export const changedFiles = (state) => { return files.filter(file => file.changed); }; -export const activeFile = (state) => { - const openedFiles = state.openFiles; - - return openedFiles.find(file => file.active); -}; +export const activeFile = state => state.openFiles.find(file => file.active); export const activeFileExtension = (state) => { const file = activeFile(state); diff --git a/app/assets/javascripts/repo/stores/index.js b/app/assets/javascripts/repo/stores/index.js index f8565fb244c..6ac9bfd8189 100644 --- a/app/assets/javascripts/repo/stores/index.js +++ b/app/assets/javascripts/repo/stores/index.js @@ -8,7 +8,7 @@ import mutations from './mutations'; Vue.use(Vuex); export default new Vuex.Store({ - state, + state: state(), actions, mutations, getters, diff --git a/app/assets/javascripts/repo/stores/state.js b/app/assets/javascripts/repo/stores/state.js index 643239eee19..1301350c627 100644 --- a/app/assets/javascripts/repo/stores/state.js +++ b/app/assets/javascripts/repo/stores/state.js @@ -1,4 +1,4 @@ -export default { +export default () => ({ project: { id: 0, name: '', @@ -20,4 +20,4 @@ export default { openFiles: [], parentTreeUrl: '', previousUrl: '', -}; +}); diff --git a/app/assets/javascripts/repo/stores/utils.js b/app/assets/javascripts/repo/stores/utils.js index feafcebcfe2..5d5ee99ed43 100644 --- a/app/assets/javascripts/repo/stores/utils.js +++ b/app/assets/javascripts/repo/stores/utils.js @@ -36,8 +36,8 @@ export const decorateData = (entity, projectUrl = '') => { last_commit, tree_url, path, - tempFile, renderError, + tempFile = false, active = false, opened = false, changed = false, |