fixed bug with tabs not switching correctly
clears all tmp files after cancelling edit mode
This commit is contained in:
		
							parent
							
								
									10dcaea1c3
								
							
						
					
					
						commit
						60ce5155c8
					
				| 
						 | 
					@ -21,13 +21,22 @@
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    methods: {
 | 
					    methods: {
 | 
				
			||||||
      createEntryInStore() {
 | 
					      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;
 | 
					        let tree = RepoStore;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (this.type === 'tree') {
 | 
					        if (this.type === 'tree') {
 | 
				
			||||||
          const dirNames = this.entryName.split('/');
 | 
					          const dirNames = entryName.split('/');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          dirNames.forEach((dirName) => {
 | 
					          dirNames.forEach((dirName) => {
 | 
				
			||||||
            if (dirName === '') return;
 | 
					            if (dirName === '') return;
 | 
				
			||||||
| 
						 | 
					@ -43,11 +52,13 @@
 | 
				
			||||||
            RepoHelper.setFile(file.entry, file.entry);
 | 
					            RepoHelper.setFile(file.entry, file.entry);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            RepoStore.editMode = true;
 | 
					            RepoStore.editMode = true;
 | 
				
			||||||
            RepoStore.toggleBlobView();
 | 
					            RepoStore.currentBlobView = 'repo-editor';
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.toggleModalOpen();
 | 
					        this.toggleModalOpen();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RepoStore.path = originalPath;
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      toggleModalOpen() {
 | 
					      toggleModalOpen() {
 | 
				
			||||||
        this.$emit('toggle');
 | 
					        this.$emit('toggle');
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,6 +37,9 @@ export default {
 | 
				
			||||||
    dialogSubmitted(status) {
 | 
					    dialogSubmitted(status) {
 | 
				
			||||||
      this.toggleDialogOpen(false);
 | 
					      this.toggleDialogOpen(false);
 | 
				
			||||||
      this.dialog.status = status;
 | 
					      this.dialog.status = status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // remove tmp files
 | 
				
			||||||
 | 
					      Helper.removeAllTmpFiles();
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    toggleBlobView: Store.toggleBlobView,
 | 
					    toggleBlobView: Store.toggleBlobView,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,6 @@ export default {
 | 
				
			||||||
      if (newBranch) {
 | 
					      if (newBranch) {
 | 
				
			||||||
        payload.start_branch = this.currentBranch;
 | 
					        payload.start_branch = this.currentBranch;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      this.submitCommitsLoading = true;
 | 
					 | 
				
			||||||
      Service.commitFiles(payload)
 | 
					      Service.commitFiles(payload)
 | 
				
			||||||
        .then(() => {
 | 
					        .then(() => {
 | 
				
			||||||
          this.resetCommitState();
 | 
					          this.resetCommitState();
 | 
				
			||||||
| 
						 | 
					@ -78,6 +77,8 @@ export default {
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    tryCommit(e, skipBranchCheck = false, newBranch = false) {
 | 
					    tryCommit(e, skipBranchCheck = false, newBranch = false) {
 | 
				
			||||||
 | 
					      this.submitCommitsLoading = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (skipBranchCheck) {
 | 
					      if (skipBranchCheck) {
 | 
				
			||||||
        this.makeCommit(newBranch);
 | 
					        this.makeCommit(newBranch);
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
| 
						 | 
					@ -90,6 +91,7 @@ export default {
 | 
				
			||||||
            this.makeCommit(newBranch);
 | 
					            this.makeCommit(newBranch);
 | 
				
			||||||
          })
 | 
					          })
 | 
				
			||||||
          .catch(() => {
 | 
					          .catch(() => {
 | 
				
			||||||
 | 
					            this.submitCommitsLoading = false;
 | 
				
			||||||
            Flash('An error occurred while committing your changes');
 | 
					            Flash('An error occurred while committing your changes');
 | 
				
			||||||
          });
 | 
					          });
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,6 +62,7 @@ const RepoHelper = {
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    RepoHelper.updateHistoryEntry(tree.url, title);
 | 
					    RepoHelper.updateHistoryEntry(tree.url, title);
 | 
				
			||||||
 | 
					    Store.path = tree.path;
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  setDirectoryToClosed(entry) {
 | 
					  setDirectoryToClosed(entry) {
 | 
				
			||||||
| 
						 | 
					@ -157,7 +158,18 @@ const RepoHelper = {
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  serializeRepoEntity(type, entity, level = 0) {
 | 
					  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 {
 | 
					    return {
 | 
				
			||||||
      id,
 | 
					      id,
 | 
				
			||||||
| 
						 | 
					@ -172,6 +184,7 @@ const RepoHelper = {
 | 
				
			||||||
      files: [],
 | 
					      files: [],
 | 
				
			||||||
      loading: false,
 | 
					      loading: false,
 | 
				
			||||||
      opened,
 | 
					      opened,
 | 
				
			||||||
 | 
					      active,
 | 
				
			||||||
      // eslint-disable-next-line camelcase
 | 
					      // eslint-disable-next-line camelcase
 | 
				
			||||||
      lastCommit: last_commit ? {
 | 
					      lastCommit: last_commit ? {
 | 
				
			||||||
        url: `${Store.projectUrl}/commit/${last_commit.id}`,
 | 
					        url: `${Store.projectUrl}/commit/${last_commit.id}`,
 | 
				
			||||||
| 
						 | 
					@ -215,7 +228,7 @@ const RepoHelper = {
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  findOpenedFileFromActive() {
 | 
					  findOpenedFileFromActive() {
 | 
				
			||||||
    return Store.openedFiles.find(openedFile => Store.activeFile.url === openedFile.url);
 | 
					    return Store.openedFiles.find(openedFile => Store.activeFile.id === openedFile.id);
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  getFileFromPath(path) {
 | 
					  getFileFromPath(path) {
 | 
				
			||||||
| 
						 | 
					@ -232,11 +245,13 @@ const RepoHelper = {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!foundEntry) {
 | 
					    if (!foundEntry) {
 | 
				
			||||||
      foundEntry = RepoHelper.serializeRepoEntity(type, {
 | 
					      foundEntry = RepoHelper.serializeRepoEntity(type, {
 | 
				
			||||||
 | 
					        id: name,
 | 
				
			||||||
        name,
 | 
					        name,
 | 
				
			||||||
        path: tree.path ? `${tree.path}/${name}` : name,
 | 
					        path: tree.path ? `${tree.path}/${name}` : name,
 | 
				
			||||||
        icon: type === 'tree' ? 'folder' : 'file-text-o',
 | 
					        icon: type === 'tree' ? 'folder' : 'file-text-o',
 | 
				
			||||||
        tempFile: true,
 | 
					        tempFile: true,
 | 
				
			||||||
        opened: true,
 | 
					        opened: true,
 | 
				
			||||||
 | 
					        active: true,
 | 
				
			||||||
      }, tree.level !== undefined ? tree.level + 1 : 0);
 | 
					      }, tree.level !== undefined ? tree.level + 1 : 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      exists = false;
 | 
					      exists = false;
 | 
				
			||||||
| 
						 | 
					@ -248,6 +263,11 @@ const RepoHelper = {
 | 
				
			||||||
      exists,
 | 
					      exists,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  removeAllTmpFiles() {
 | 
				
			||||||
 | 
					    Store.openedFiles = Store.openedFiles.filter(f => !f.tempFile);
 | 
				
			||||||
 | 
					    Store.files = Store.files.filter(f => !f.tempFile);
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default RepoHelper;
 | 
					export default RepoHelper;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,7 +76,7 @@ const RepoStore = {
 | 
				
			||||||
      RepoStore.blobRaw = file.base64;
 | 
					      RepoStore.blobRaw = file.base64;
 | 
				
			||||||
    } else if (file.newContent || file.plain) {
 | 
					    } else if (file.newContent || file.plain) {
 | 
				
			||||||
      RepoStore.blobRaw = file.newContent || file.plain;
 | 
					      RepoStore.blobRaw = file.newContent || file.plain;
 | 
				
			||||||
    } else if (!file.tempFile) {
 | 
					    } else {
 | 
				
			||||||
      Service.getRaw(file)
 | 
					      Service.getRaw(file)
 | 
				
			||||||
        .then((rawResponse) => {
 | 
					        .then((rawResponse) => {
 | 
				
			||||||
          RepoStore.blobRaw = rawResponse.data;
 | 
					          RepoStore.blobRaw = rawResponse.data;
 | 
				
			||||||
| 
						 | 
					@ -84,14 +84,16 @@ const RepoStore = {
 | 
				
			||||||
        }).catch(Helper.loadingError);
 | 
					        }).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.binary = file.binary;
 | 
				
			||||||
    RepoStore.setActiveLine(-1);
 | 
					    RepoStore.setActiveLine(-1);
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  setFileActivity(file, openedFile, i) {
 | 
					  setFileActivity(file, openedFile, i) {
 | 
				
			||||||
    const activeFile = openedFile;
 | 
					    const activeFile = openedFile;
 | 
				
			||||||
    activeFile.active = file.url === activeFile.url;
 | 
					    activeFile.active = file.id === activeFile.id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (activeFile.active) RepoStore.setActiveFile(activeFile, i);
 | 
					    if (activeFile.active) RepoStore.setActiveFile(activeFile, i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -99,7 +101,7 @@ const RepoStore = {
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  setActiveFile(activeFile, i) {
 | 
					  setActiveFile(activeFile, i) {
 | 
				
			||||||
    RepoStore.activeFile = Object.assign({}, RepoStore.activeFile, activeFile);
 | 
					    RepoStore.activeFile = Object.assign({}, Helper.getDefaultActiveFile(), activeFile);
 | 
				
			||||||
    RepoStore.activeFileIndex = i;
 | 
					    RepoStore.activeFileIndex = i;
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -175,7 +177,7 @@ const RepoStore = {
 | 
				
			||||||
  // getters
 | 
					  // getters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  isActiveFile(file) {
 | 
					  isActiveFile(file) {
 | 
				
			||||||
    return file && file.url === RepoStore.activeFile.url;
 | 
					    return file && file.id === RepoStore.activeFile.id;
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  isPreviewView() {
 | 
					  isPreviewView() {
 | 
				
			||||||
| 
						 | 
					@ -183,4 +185,6 @@ const RepoStore = {
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					window.RepoStore = RepoStore;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default RepoStore;
 | 
					export default RepoStore;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -205,6 +205,7 @@ class Projects::BlobController < Projects::ApplicationController
 | 
				
			||||||
    tree_path = path_segments.join('/')
 | 
					    tree_path = path_segments.join('/')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    render json: json.merge(
 | 
					    render json: json.merge(
 | 
				
			||||||
 | 
					      id: @blob.id,
 | 
				
			||||||
      path: blob.path,
 | 
					      path: blob.path,
 | 
				
			||||||
      name: blob.name,
 | 
					      name: blob.name,
 | 
				
			||||||
      extension: blob.extension,
 | 
					      extension: blob.extension,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@ import Vue from 'vue';
 | 
				
			||||||
import repoFileButtons from '~/repo/components/repo_file_buttons.vue';
 | 
					import repoFileButtons from '~/repo/components/repo_file_buttons.vue';
 | 
				
			||||||
import RepoStore from '~/repo/stores/repo_store';
 | 
					import RepoStore from '~/repo/stores/repo_store';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fdescribe('RepoFileButtons', () => {
 | 
					describe('RepoFileButtons', () => {
 | 
				
			||||||
  const activeFile = {
 | 
					  const activeFile = {
 | 
				
			||||||
    extension: 'md',
 | 
					    extension: 'md',
 | 
				
			||||||
    url: 'url',
 | 
					    url: 'url',
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue