remove extra state property

pending tabs now get added into openfiles & just filtered correctly
This commit is contained in:
Phil Hughes 2018-03-27 11:57:58 +01:00
parent 89bb7b85ec
commit a515b45929
No known key found for this signature in database
GPG Key ID: 32245528C52E0F9F
6 changed files with 50 additions and 54 deletions

View File

@ -32,7 +32,7 @@ export default {
},
computed: {
...mapState(['changedFiles', 'openFiles', 'viewer']),
...mapGetters(['activeFile', 'hasChanges', 'tabs']),
...mapGetters(['activeFile', 'hasChanges']),
},
mounted() {
const returnValue = 'Are you sure you want to lose unsaved changes?';
@ -61,7 +61,7 @@ export default {
>
<repo-tabs
:active-file="activeFile"
:files="tabs"
:files="openFiles"
:viewer="viewer"
:has-changes="hasChanges"
/>

View File

@ -76,11 +76,17 @@ router.beforeEach((to, from, next) => {
.then(() => {
if (to.params[0]) {
const path =
to.params[0].slice(-1) === '/'
? to.params[0].slice(0, -1)
: to.params[0];
const treeEntry = store.state.entries[path];
if (treeEntry) {
to.params[0].slice(-1) === '/' ? to.params[0].slice(0, -1) : to.params[0];
const treeEntry = Object.keys(store.state.entries).reduce((acc, key) => {
const file = store.state.entries[key];
if (key === path && !file.pending) {
return file;
}
return acc;
}, {});
if (Object.keys(treeEntry).length) {
store.dispatch('handleTreeEntryAction', treeEntry);
}
}

View File

@ -6,9 +6,9 @@ import * as types from '../mutation_types';
import router from '../../ide_router';
import { setPageTitle } from '../utils';
export const closeFile = ({ commit, state, getters, dispatch }, file) => {
export const closeFile = ({ commit, state, dispatch }, file) => {
const path = file.path;
const indexOfClosedFile = getters.tabs.findIndex(f => f.key === file.key);
const indexOfClosedFile = state.openFiles.findIndex(f => f.key === file.key);
const fileWasActive = file.active;
if (file.pending) {
@ -18,9 +18,9 @@ export const closeFile = ({ commit, state, getters, dispatch }, file) => {
commit(types.SET_FILE_ACTIVE, { path, active: false });
}
if (getters.tabs.length > 0 && fileWasActive) {
if (state.openFiles.length > 0 && fileWasActive) {
const nextIndexToOpen = indexOfClosedFile === 0 ? 0 : indexOfClosedFile - 1;
const nextFileToOpen = getters.tabs[nextIndexToOpen];
const nextFileToOpen = state.openFiles[nextIndexToOpen];
if (nextFileToOpen.pending) {
dispatch('updateViewer', 'diff');
@ -29,7 +29,7 @@ export const closeFile = ({ commit, state, getters, dispatch }, file) => {
dispatch('updateDelayViewerUpdated', true);
router.push(`/project${nextFileToOpen.url}`);
}
} else if (!getters.tabs.length) {
} else if (!state.openFiles.length) {
router.push(`/project/${file.projectId}/tree/${file.branchId}/`);
}
@ -76,14 +76,7 @@ export const getFileData = ({ state, commit, dispatch }, file) => {
})
.catch(() => {
commit(types.TOGGLE_LOADING, { entry: file });
flash(
'Error loading file data. Please try again.',
'alert',
document,
null,
false,
true,
);
flash('Error loading file data. Please try again.', 'alert', document, null, false, true);
});
};
@ -94,14 +87,7 @@ export const getRawFileData = ({ commit, dispatch }, file) =>
commit(types.SET_FILE_RAW_DATA, { file, raw });
})
.catch(() =>
flash(
'Error loading file content. Please try again.',
'alert',
document,
null,
false,
true,
),
flash('Error loading file content. Please try again.', 'alert', document, null, false, true),
);
export const changeFileContent = ({ state, commit }, { path, content }) => {
@ -129,10 +115,7 @@ export const setFileEOL = ({ getters, commit }, { eol }) => {
}
};
export const setEditorPosition = (
{ getters, commit },
{ editorRow, editorColumn },
) => {
export const setEditorPosition = ({ getters, commit }, { editorRow, editorColumn }) => {
if (getters.activeFile) {
commit(types.SET_FILE_POSITION, {
file: getters.activeFile,

View File

@ -1,6 +1,4 @@
export const tabs = state => state.openFiles.concat(state.pendingTabs);
export const activeFile = state => tabs(state).find(file => file.active) || null;
export const activeFile = state => state.openFiles.find(file => file.active) || null;
export const addedFiles = state => state.changedFiles.filter(f => f.tempFile);

View File

@ -6,12 +6,15 @@ export default {
active,
});
if (active) {
if (active && !state.entries[path].pending) {
Object.assign(state, {
pendingTabs: state.pendingTabs.map(f => ({
...f,
active: false,
})),
openFiles: state.openFiles.map(f => {
if (f.pending) {
return Object.assign(f, { active: false });
}
return f;
}),
});
}
},
@ -23,8 +26,10 @@ export default {
if (state.entries[path].opened) {
state.openFiles.push(state.entries[path]);
} else {
const file = state.entries[path];
Object.assign(state, {
openFiles: state.openFiles.filter(f => f.path !== path),
openFiles: state.openFiles.filter(f => f.key !== file.key),
});
}
},
@ -90,26 +95,31 @@ export default {
});
},
[types.ADD_PENDING_TAB](state, file) {
const pendingTab = state.pendingTabs.find(f => f.path === file.path);
const pendingTab = state.openFiles.find(f => f.path === file.path && f.pending);
Object.assign(state, {
openFiles: state.openFiles.map(f =>
Object.assign(f, {
active: false,
openFiles: state.openFiles.map(f => {
if (!f.pending) {
return Object.assign(f, { active: false });
}
return f;
}),
),
});
if (pendingTab) {
Object.assign(state, {
pendingTabs: state.pendingTabs.map(tab => ({
...tab,
active: !!pendingTab,
})),
openFiles: state.openFiles.map(f => {
if (f.pending && f.path === file.path) {
return Object.assign(f, { active: true });
}
return f;
}),
});
} else {
Object.assign(state, {
pendingTabs: state.pendingTabs.concat({
openFiles: state.openFiles.concat({
...file,
active: true,
pending: true,
@ -120,7 +130,7 @@ export default {
},
[types.REMOVE_PENDING_TAB](state, file) {
Object.assign(state, {
pendingTabs: state.pendingTabs.filter(f => f.path !== file.path),
openFiles: state.openFiles.filter(f => f.key !== file.key),
});
},
};

View File

@ -16,5 +16,4 @@ export default () => ({
entries: {},
viewer: 'editor',
delayViewerUpdated: false,
pendingTabs: [],
});