repo: janusweb
action: commit
revision: 
path_from: 
revision_from: 545edf7c34983307465e8045688db6948a60e098:
path_to: 
revision_to: 
git.thebackupbox.net
janusweb
git clone git://git.thebackupbox.net/janusweb
commit 545edf7c34983307465e8045688db6948a60e098
Author: James Baicoianu 
Date:   Sun Jan 30 14:34:49 2022 -0800

    room.updateSource()

diff --git a/scripts/room.js b/scripts/room.js
index 9350867b496f530978cc122a79c80dd96b08b5f4..
index ..1bc3fbc6c8bdf06627f7e2beb4ee81951528f00c 100644
--- a/scripts/room.js
+++ b/scripts/room.js
@@ -730,6 +730,40 @@ elation.require([
       }
       return parsed;
     }
+    this.updateSource = function(source) {
+      var datapath = elation.config.get('janusweb.datapath', '/media/janusweb');
+      try {
+        var roomdata = this.janus.parser.parse(source, this.baseurl, datapath);
+      } catch (e) {
+      }
+      console.log('updated roomdata!', roomdata);
+      if (roomdata && roomdata.room) {
+        for (let k in roomdata.room) {
+          let val = roomdata.room[k];
+          if (val !== null && room[k] != val) {
+            console.log('update room value', k, room[k], val);
+            room[k] = val;
+          }
+        }
+        if (roomdata.object) {
+          for (let i = 0; i < roomdata.object.length; i++) {
+            let objdata = roomdata.object[i];
+            let roomobj = room.objects[objdata.js_id];
+            if (roomobj) {
+              for (let k in objdata) {
+                let val = objdata[k];
+                if (roomobj[k] != objdata[k] && val !== null) {
+                  roomobj[k] = val;
+                }
+              }
+            } else {
+              objdata.persist = true;
+              this.createObject('object', objdata);
+            }
+          }
+        }
+      }
+    }

     this.loadRoomAssets = function(roomdata) {
       if (roomdata && roomdata.assets && roomdata.assets.assetlist && roomdata.assets.assetlist.length > 0) {

-----END OF PAGE-----