summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/repo/stores/mutations/tree.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/repo/stores/mutations/tree.js')
-rw-r--r--app/assets/javascripts/repo/stores/mutations/tree.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/app/assets/javascripts/repo/stores/mutations/tree.js b/app/assets/javascripts/repo/stores/mutations/tree.js
new file mode 100644
index 00000000000..700aff46827
--- /dev/null
+++ b/app/assets/javascripts/repo/stores/mutations/tree.js
@@ -0,0 +1,27 @@
+import * as types from '../mutation_types';
+import * as utils from '../utils';
+
+export default {
+ [types.TOGGLE_TREE_OPEN](state, tree) {
+ Object.assign(tree, {
+ opened: !tree.opened,
+ });
+ },
+ [types.SET_DIRECTORY_DATA](state, { data, tree }) {
+ const level = tree.level !== undefined ? tree.level + 1 : 0;
+ const parentTreeUrl = data.parent_tree_url ? `${data.parent_tree_url}${data.path}` : state.endpoints.rootUrl;
+
+ Object.assign(tree, {
+ tree: [
+ ...data.trees.map(t => utils.decorateData(t, 'tree', parentTreeUrl, level)),
+ ...data.submodules.map(m => utils.decorateData(m, 'submodule', parentTreeUrl, level)),
+ ...data.blobs.map(b => utils.decorateData(b, 'blob', parentTreeUrl, level)),
+ ],
+ });
+ },
+ [types.SET_PARENT_TREE_URL](state, url) {
+ Object.assign(state, {
+ parentTreeUrl: url,
+ });
+ },
+};