From 4c51bfe232888a47b2a6c508f2cdb27c242ff44b Mon Sep 17 00:00:00 2001
From: Marcus Eibrink-Lunzenauer <lunzenauer@elan-ev.de>
Date: Mon, 6 Dec 2021 09:35:52 +0100
Subject: [PATCH] Load copied subtree not just the new subtree*s root element.

Fixes #454.
---
 resources/vue/components/courseware/ManagerApp.vue |  1 -
 .../vue/store/courseware/courseware.module.js      | 14 ++++++++------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/resources/vue/components/courseware/ManagerApp.vue b/resources/vue/components/courseware/ManagerApp.vue
index ed493e70b2c..777c5af052f 100755
--- a/resources/vue/components/courseware/ManagerApp.vue
+++ b/resources/vue/components/courseware/ManagerApp.vue
@@ -23,7 +23,6 @@ export default {
         async rebuildStructure() {
             // compute order of structural elements once more
             await this.buildStructure();
-            console.debug("built structure")
 
             // throw away stale cache
             this.invalidateStructureCache();
diff --git a/resources/vue/store/courseware/courseware.module.js b/resources/vue/store/courseware/courseware.module.js
index 949b574a237..be6ea2732de 100755
--- a/resources/vue/store/courseware/courseware.module.js
+++ b/resources/vue/store/courseware/courseware.module.js
@@ -317,14 +317,16 @@ export const actions = {
             // console.log(resp);
         });
     },
-    copyStructuralElement({ dispatch, getters }, { parentId, element }) {
+    async copyStructuralElement({ dispatch, getters, rootGetters }, { parentId, element }) {
         const copy = { data: { parent_id: parentId, }, };
 
-        return state.httpClient.post(`courseware-structural-elements/${element.id}/copy`, copy)
-            .then(({ data }) => {
-                const id = data.data.id;
-                dispatch('loadStructuralElement', id);
-            });
+        const result = await state.httpClient.post(`courseware-structural-elements/${element.id}/copy`, copy);
+        const id = result.data.data.id;
+        await dispatch('loadStructuralElement', id);
+
+        const newElement = rootGetters['courseware-structural-elements/byId']({ id });
+
+        return dispatch('courseware-structure/loadDescendants', { root: newElement });
     },
 
     lockObject({ dispatch, getters }, { id, type }) {
-- 
GitLab