summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/repo
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/repo')
-rw-r--r--app/assets/javascripts/repo/components/repo_editor.vue2
-rw-r--r--app/assets/javascripts/repo/stores/actions.js17
-rw-r--r--app/assets/javascripts/repo/stores/actions/file.js8
-rw-r--r--app/assets/javascripts/repo/stores/actions/tree.js12
-rw-r--r--app/assets/javascripts/repo/stores/getters.js6
-rw-r--r--app/assets/javascripts/repo/stores/index.js2
-rw-r--r--app/assets/javascripts/repo/stores/state.js4
-rw-r--r--app/assets/javascripts/repo/stores/utils.js2
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,