160 lines
4.9 KiB
JavaScript
160 lines
4.9 KiB
JavaScript
export const SETTINGS_KEYS = [
|
|
/**
|
|
* The CSS class that should be applied to the root element.
|
|
* Essentially, the name of the background theme.
|
|
*/
|
|
"THEME_CLASS",
|
|
|
|
/**
|
|
* The hex color code for the currently active theme.
|
|
*/
|
|
"THEME_COLOR",
|
|
|
|
/**
|
|
* Whether or not THEME_COLOR is considered 'vibrant'.
|
|
*
|
|
* For readability reasons, if the THEME_COLOR is vibrant,
|
|
* any text placed on the theme color will have its color
|
|
* inverted from white to black.
|
|
*/
|
|
"THEME_COLOR_VIBRANT",
|
|
|
|
/**
|
|
* Normally, section frames are multicolored in the UI
|
|
* to emphasise the different sections.
|
|
* This setting allows that to be turned off.
|
|
*/
|
|
"DISABLE_FRAME_COLORS",
|
|
|
|
/**
|
|
* Whether or not requests should be proxied.
|
|
*/
|
|
"PROXY_ENABLED",
|
|
|
|
/**
|
|
* The URL of the proxy to connect to for requests.
|
|
*/
|
|
"PROXY_URL",
|
|
/**
|
|
* The security key of the proxy.
|
|
*/
|
|
"PROXY_KEY"
|
|
];
|
|
|
|
export const state = () => ({
|
|
settings: {},
|
|
collections: [{
|
|
name: 'My First Collection',
|
|
folders: [],
|
|
requests: [],
|
|
}],
|
|
selectedRequest: {},
|
|
editingRequest: {},
|
|
});
|
|
|
|
export const mutations = {
|
|
|
|
applySetting (state, setting) {
|
|
if (setting == null || !(setting instanceof Array) || setting.length !== 2)
|
|
throw new Error("You must provide a setting (array in the form [key, value])");
|
|
|
|
const [key, value] = setting;
|
|
// Do not just remove this check.
|
|
// Add your settings key to the SETTINGS_KEYS array at the
|
|
// top of the file.
|
|
// This is to ensure that application settings remain documented.
|
|
if (!SETTINGS_KEYS.includes(key)) throw new Error("The settings structure does not include the key " + key);
|
|
|
|
state.settings[key] = value;
|
|
},
|
|
|
|
addCollection (state, newCollection) {
|
|
state.collections.push(newCollection);
|
|
},
|
|
|
|
removeCollection (state, payload) {
|
|
const { collectionIndex } = payload;
|
|
state.collections.splice(collectionIndex, 1)
|
|
},
|
|
|
|
saveCollection (state, payload) {
|
|
const { savedCollection } = payload;
|
|
state.collections[savedCollection.collectionIndex] = savedCollection;
|
|
},
|
|
|
|
addFolder (state, payload) {
|
|
const { collectionIndex, folder } = payload;
|
|
state.collections[collectionIndex].folders.push(folder);
|
|
},
|
|
|
|
removeFolder (state, payload) {
|
|
const { collectionIndex, folderIndex } = payload;
|
|
state.collections[collectionIndex].folders.splice(folderIndex, 1)
|
|
},
|
|
|
|
saveFolder (state, payload) {
|
|
const { savedFolder } = payload;
|
|
state.collections[savedFolder.collectionIndex].folders[savedFolder.folderIndex] = savedFolder;
|
|
},
|
|
|
|
addRequest (state, payload) {
|
|
const { request } = payload;
|
|
|
|
// Request that is directly attached to collection
|
|
if (request.folder === -1) {
|
|
state.collections[request.collection].requests.push(request);
|
|
return
|
|
}
|
|
|
|
state.collections[request.collection].folders[request.folder].requests.push(request);
|
|
},
|
|
|
|
saveRequest (state, payload) {
|
|
const { request } = payload;
|
|
|
|
// Remove the old request from collection
|
|
if (request.hasOwnProperty('oldCollection') && request.oldCollection > -1) {
|
|
const folder = request.hasOwnProperty('oldFolder') && request.oldFolder >= -1 ? request.oldFolder : request.folder;
|
|
if (folder > -1) {
|
|
state.collections[request.oldCollection].folders[folder].requests.splice(request.requestIndex, 1)
|
|
} else {
|
|
state.collections[request.oldCollection].requests.splice(request.requestIndex, 1)
|
|
}
|
|
} else if (request.hasOwnProperty('oldFolder') && request.oldFolder !== -1) {
|
|
state.collections[request.collection].folders[folder].requests.splice(request.requestIndex, 1)
|
|
}
|
|
|
|
delete request.oldCollection;
|
|
delete request.oldFolder;
|
|
|
|
// Request that is directly attached to collection
|
|
if (request.folder === -1) {
|
|
state.collections[request.collection].requests[request.requestIndex] = request;
|
|
return
|
|
}
|
|
|
|
state.collections[request.collection].folders[request.folder].requests[request.requestIndex] = request;
|
|
},
|
|
|
|
removeRequest (state, payload) {
|
|
const { collectionIndex, folderIndex, requestIndex } = payload;
|
|
|
|
// Request that is directly attached to collection
|
|
if (folderIndex === -1) {
|
|
state.collections[collectionIndex].requests.splice(requestIndex, 1)
|
|
return
|
|
}
|
|
|
|
state.collections[collectionIndex].folders[folderIndex].requests.splice(requestIndex, 1)
|
|
},
|
|
|
|
selectRequest (state, payload) {
|
|
state.selectedRequest = Object.assign({}, payload.request);
|
|
},
|
|
|
|
editRequest (state, payload) {
|
|
state.editingRequest = Object.assign({}, payload.request);
|
|
},
|
|
|
|
};
|