summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2017-10-19 16:24:00 +0100
committerPhil Hughes <me@iamphill.com>2017-10-23 10:46:27 +0100
commit60ce5155c8e0804b71c55d1492d7812133673fa2 (patch)
treed69150768f502be579ed8b2f0131029711da0f5e
parent10dcaea1c3e9061d8f65d3ec15becbd17c7b2716 (diff)
downloadgitlab-ce-60ce5155c8e0804b71c55d1492d7812133673fa2.tar.gz
fixed bug with tabs not switching correctly
clears all tmp files after cancelling edit mode
-rw-r--r--app/assets/javascripts/repo/components/new_dropdown/modal.vue19
-rw-r--r--app/assets/javascripts/repo/components/repo.vue3
-rw-r--r--app/assets/javascripts/repo/components/repo_commit_section.vue4
-rw-r--r--app/assets/javascripts/repo/helpers/repo_helper.js24
-rw-r--r--app/assets/javascripts/repo/stores/repo_store.js14
-rw-r--r--app/controllers/projects/blob_controller.rb1
-rw-r--r--spec/javascripts/repo/components/repo_file_buttons_spec.js2
7 files changed, 54 insertions, 13 deletions
diff --git a/app/assets/javascripts/repo/components/new_dropdown/modal.vue b/app/assets/javascripts/repo/components/new_dropdown/modal.vue
index ff13b3072bb..6c869580962 100644
--- a/app/assets/javascripts/repo/components/new_dropdown/modal.vue
+++ b/app/assets/javascripts/repo/components/new_dropdown/modal.vue
@@ -21,13 +21,22 @@
},
methods: {
createEntryInStore() {
- if (this.entryName === '') return;
+ const originalPath = RepoStore.path;
+ let entryName = this.entryName;
- const fileName = this.type === 'tree' ? '.gitkeep' : this.entryName;
+ if (entryName.indexOf(`${RepoStore.path}/`) !== 0) {
+ RepoStore.path = '';
+ } else {
+ entryName = entryName.replace(`${RepoStore.path}/`, '');
+ }
+
+ if (entryName === '') return;
+
+ const fileName = this.type === 'tree' ? '.gitkeep' : entryName;
let tree = RepoStore;
if (this.type === 'tree') {
- const dirNames = this.entryName.split('/');
+ const dirNames = entryName.split('/');
dirNames.forEach((dirName) => {
if (dirName === '') return;
@@ -43,11 +52,13 @@
RepoHelper.setFile(file.entry, file.entry);
RepoStore.editMode = true;
- RepoStore.toggleBlobView();
+ RepoStore.currentBlobView = 'repo-editor';
}
}
this.toggleModalOpen();
+
+ RepoStore.path = originalPath;
},
toggleModalOpen() {
this.$emit('toggle');
diff --git a/app/assets/javascripts/repo/components/repo.vue b/app/assets/javascripts/repo/components/repo.vue
index 0a89a9f16cb..cdcd8e15495 100644
--- a/app/assets/javascripts/repo/components/repo.vue
+++ b/app/assets/javascripts/repo/components/repo.vue
@@ -37,6 +37,9 @@ export default {
dialogSubmitted(status) {
this.toggleDialogOpen(false);
this.dialog.status = status;
+
+ // remove tmp files
+ Helper.removeAllTmpFiles();
},
toggleBlobView: Store.toggleBlobView,
diff --git a/app/assets/javascripts/repo/components/repo_commit_section.vue b/app/assets/javascripts/repo/components/repo_commit_section.vue
index e3003fbf477..0d6259a37a8 100644
--- a/app/assets/javascripts/repo/components/repo_commit_section.vue
+++ b/app/assets/javascripts/repo/components/repo_commit_section.vue
@@ -62,7 +62,6 @@ export default {
if (newBranch) {
payload.start_branch = this.currentBranch;
}
- this.submitCommitsLoading = true;
Service.commitFiles(payload)
.then(() => {
this.resetCommitState();
@@ -78,6 +77,8 @@ export default {
},
tryCommit(e, skipBranchCheck = false, newBranch = false) {
+ this.submitCommitsLoading = true;
+
if (skipBranchCheck) {
this.makeCommit(newBranch);
} else {
@@ -90,6 +91,7 @@ export default {
this.makeCommit(newBranch);
})
.catch(() => {
+ this.submitCommitsLoading = false;
Flash('An error occurred while committing your changes');
});
}
diff --git a/app/assets/javascripts/repo/helpers/repo_helper.js b/app/assets/javascripts/repo/helpers/repo_helper.js
index 09573e6e707..c30bd6fa0c1 100644
--- a/app/assets/javascripts/repo/helpers/repo_helper.js
+++ b/app/assets/javascripts/repo/helpers/repo_helper.js
@@ -62,6 +62,7 @@ const RepoHelper = {
});
RepoHelper.updateHistoryEntry(tree.url, title);
+ Store.path = tree.path;
},
setDirectoryToClosed(entry) {
@@ -157,7 +158,18 @@ const RepoHelper = {
},
serializeRepoEntity(type, entity, level = 0) {
- const { id, url, name, icon, last_commit, tree_url, path, tempFile, opened = false } = entity;
+ const {
+ id,
+ url,
+ name,
+ icon,
+ last_commit,
+ tree_url,
+ path,
+ tempFile,
+ active,
+ opened,
+ } = entity;
return {
id,
@@ -172,6 +184,7 @@ const RepoHelper = {
files: [],
loading: false,
opened,
+ active,
// eslint-disable-next-line camelcase
lastCommit: last_commit ? {
url: `${Store.projectUrl}/commit/${last_commit.id}`,
@@ -215,7 +228,7 @@ const RepoHelper = {
},
findOpenedFileFromActive() {
- return Store.openedFiles.find(openedFile => Store.activeFile.url === openedFile.url);
+ return Store.openedFiles.find(openedFile => Store.activeFile.id === openedFile.id);
},
getFileFromPath(path) {
@@ -232,11 +245,13 @@ const RepoHelper = {
if (!foundEntry) {
foundEntry = RepoHelper.serializeRepoEntity(type, {
+ id: name,
name,
path: tree.path ? `${tree.path}/${name}` : name,
icon: type === 'tree' ? 'folder' : 'file-text-o',
tempFile: true,
opened: true,
+ active: true,
}, tree.level !== undefined ? tree.level + 1 : 0);
exists = false;
@@ -248,6 +263,11 @@ const RepoHelper = {
exists,
};
},
+
+ removeAllTmpFiles() {
+ Store.openedFiles = Store.openedFiles.filter(f => !f.tempFile);
+ Store.files = Store.files.filter(f => !f.tempFile);
+ },
};
export default RepoHelper;
diff --git a/app/assets/javascripts/repo/stores/repo_store.js b/app/assets/javascripts/repo/stores/repo_store.js
index 4978af07067..cdf5b00a817 100644
--- a/app/assets/javascripts/repo/stores/repo_store.js
+++ b/app/assets/javascripts/repo/stores/repo_store.js
@@ -76,7 +76,7 @@ const RepoStore = {
RepoStore.blobRaw = file.base64;
} else if (file.newContent || file.plain) {
RepoStore.blobRaw = file.newContent || file.plain;
- } else if (!file.tempFile) {
+ } else {
Service.getRaw(file)
.then((rawResponse) => {
RepoStore.blobRaw = rawResponse.data;
@@ -84,14 +84,16 @@ const RepoStore = {
}).catch(Helper.loadingError);
}
- if (!file.loading) Helper.updateHistoryEntry(file.url, file.pageTitle || file.name);
+ if (!file.loading && !file.tempFile) {
+ Helper.updateHistoryEntry(file.url, file.pageTitle || file.name);
+ }
RepoStore.binary = file.binary;
RepoStore.setActiveLine(-1);
},
setFileActivity(file, openedFile, i) {
const activeFile = openedFile;
- activeFile.active = file.url === activeFile.url;
+ activeFile.active = file.id === activeFile.id;
if (activeFile.active) RepoStore.setActiveFile(activeFile, i);
@@ -99,7 +101,7 @@ const RepoStore = {
},
setActiveFile(activeFile, i) {
- RepoStore.activeFile = Object.assign({}, RepoStore.activeFile, activeFile);
+ RepoStore.activeFile = Object.assign({}, Helper.getDefaultActiveFile(), activeFile);
RepoStore.activeFileIndex = i;
},
@@ -175,7 +177,7 @@ const RepoStore = {
// getters
isActiveFile(file) {
- return file && file.url === RepoStore.activeFile.url;
+ return file && file.id === RepoStore.activeFile.id;
},
isPreviewView() {
@@ -183,4 +185,6 @@ const RepoStore = {
},
};
+window.RepoStore = RepoStore;
+
export default RepoStore;
diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb
index 183a6f88a6a..770381472c5 100644
--- a/app/controllers/projects/blob_controller.rb
+++ b/app/controllers/projects/blob_controller.rb
@@ -205,6 +205,7 @@ class Projects::BlobController < Projects::ApplicationController
tree_path = path_segments.join('/')
render json: json.merge(
+ id: @blob.id,
path: blob.path,
name: blob.name,
extension: blob.extension,
diff --git a/spec/javascripts/repo/components/repo_file_buttons_spec.js b/spec/javascripts/repo/components/repo_file_buttons_spec.js
index bc5cb5b8f38..063186be42d 100644
--- a/spec/javascripts/repo/components/repo_file_buttons_spec.js
+++ b/spec/javascripts/repo/components/repo_file_buttons_spec.js
@@ -2,7 +2,7 @@ import Vue from 'vue';
import repoFileButtons from '~/repo/components/repo_file_buttons.vue';
import RepoStore from '~/repo/stores/repo_store';
-fdescribe('RepoFileButtons', () => {
+describe('RepoFileButtons', () => {
const activeFile = {
extension: 'md',
url: 'url',