Просмотр исходного кода

force to use user's proxy files

Nikolay Suslov 4 лет назад
Родитель
Сommit
c51ad4c442
2 измененных файлов с 111 добавлено и 12 удалено
  1. 109 10
      public/app.js
  2. 2 2
      public/vwf.js

+ 109 - 10
public/app.js

@@ -125,18 +125,18 @@ class App {
     this.user = this.db.user();
     window._LCSDB = this.db;
     window._LCSUSER = this.user;
-    window._LCS_SYS_USER = undefined;
+    //window._LCS_SYS_USER = undefined;
     window._LCS_WORLD_USER = undefined;
 
     // _LCSDB.get('lcs/app').load();
     // _LCSDB.get('users').load();
 
-    _q(_LCSDB).get('lcs/app').get('pub').data().then(function (res) {
+    // _q(_LCSDB).get('lcs/app').get('pub').data().then(function (res) {
 
-      if (res) {
-        window._LCS_SYS_USER = _LCSDB.user(res);
-      }
-    });
+    //   if (res) {
+    //     window._LCS_SYS_USER = _LCSDB.user(res);
+    //   }
+    // });
 
     // _LCSDB.get('lcs/app').get('pub').once(function (res) {
 
@@ -696,7 +696,7 @@ class App {
 
       },
       $init: function () {
-        console.log('init d&d area');
+        console.log('init d&d area for worlds protos');
         this._refresh('Drag & Drop a folder with world files here...');
         let self = this;
         DragDrop("#ddWorlds",
@@ -787,6 +787,97 @@ class App {
       }
     }
 
+ 
+    let dragDropProxyArea = {
+      $cell: true,
+      $type: 'div',
+      id: "ddProxy",
+      class: 'dragdropArea',
+      _ddText: '',
+      _refresh: function (aText) {
+        this._ddText = aText;
+
+      },
+      $init: function () {
+        console.log('init d&d area for proxy files');
+        this._refresh('Drag & Drop a folder with proxy files here...');
+        let self = this;
+        DragDrop("#ddProxy",
+        {
+          onDrop: function (files, pos, fileList, directories) {
+            console.log('onDrop: ' + files.length + ' files at ' + pos.x + ', ' + pos.y);
+            //let worldsObj = {};
+            let proxy = _LCSDB.user().get('proxy');
+
+            files.forEach(function (file) {
+
+              let proxyObj = {};
+
+              if ((file.name.indexOf('.yaml') !== -1) ||
+                (file.type == "text/javascript") || 
+                (file.type == "text/html") || 
+                (file.type == "application/json")) {
+
+              console.log('- ' + file.name + ' (' + file.size + ') (' + file.type + ')');
+
+              // convert the file to a Buffer that we can use!
+              const reader = new FileReader()
+              reader.addEventListener('load', e => {
+                // e.target.result is an ArrayBuffer
+                const arr = new Uint8Array(e.target.result)
+                const fileBuffer = new buffer.Buffer(arr);
+                const fileSource = fileBuffer.toString();
+                // do something with the buffer!
+
+                  var entryName = file.fullPath.slice(1).split(".").join("_");
+                  let userPub = _LCSDB.user().is.pub;
+          
+                  let created = new Date().valueOf();
+            
+                      let obj = {
+                        'owner': userPub,
+                        'file': fileSource,
+                        'modified': created,
+                        'created': created
+                      }
+                    proxyObj[entryName] = obj;
+                    console.log(proxyObj);
+                    proxy.put(proxyObj);
+
+                  
+              })
+              reader.addEventListener('error', err => {
+                console.error('FileReader error' + err)
+              })
+              reader.readAsArrayBuffer(file)
+
+            }
+
+            })
+            //console.log('Worlds', worldsObj);
+            console.log('files array', files)
+            console.log('FileList object', fileList)
+            console.log('directories array', directories)
+            self._refresh(directories.map(el=>{return el.name}).toString());
+          },
+          onDropText: function (text, pos) {
+            console.log('onDropText: ' + text + ' at ' + pos.x + ', ' + pos.y)
+          }
+        }
+        )
+      },
+      $update: function () {
+
+        this.$components = [
+          {
+            $type: "h5",
+            class: "mdc-typography--headline5",
+            $text: this._ddText
+          }
+        ]
+
+      }
+    }
 
     let userProfile = {
       $type: 'div',
@@ -799,10 +890,12 @@ class App {
         this._status = "user is not signed in..."
       },
       $update: function () {
-        var ddarea = {};
+        var ddWorldArea = {}
+        var ddProxyArea = {}
 
         if(_LCSDB.user().is){
-          ddarea = dragDropWorldsArea
+          ddWorldArea = dragDropWorldsArea
+          ddProxyArea = dragDropProxyArea
         }
 
         this.$components = [
@@ -817,7 +910,13 @@ class App {
             class: "mdc-typography--headline4",
             $text: 'Load my world\'s protos:' //"Profile for: " + this.db.user().is.alias
           },
-          ddarea
+          ddWorldArea,
+          {
+            $type: "h4",
+            class: "mdc-typography--headline4",
+            $text: 'Load proxy files:' //"Profile for: " + this.db.user().is.alias
+          },
+          ddProxyArea
         ]
       }
     }

+ 2 - 2
public/vwf.js

@@ -4577,7 +4577,7 @@ if ( ! childComponent.source ) {
                 if(dbName.includes("vwf_example_com")){
                     //userDB = await window._LCS_SYS_USER.get('proxy').then();
                    fileName = dbName;
-                   let dbNode = window._LCS_SYS_USER.get('proxy').get(fileName).get('file');
+                   let dbNode = userDB.get('proxy').get(fileName).get('file');
 
                    let nodeProm = new Promise(res => dbNode.once(res))
 
@@ -4669,7 +4669,7 @@ if ( ! childComponent.source ) {
                 if(dbName.includes("vwf_example_com")){
                     //userDB = window._LCS_SYS_USER.get('proxy');
                     fileName = dbName;
-                    let dbNode = window._LCS_SYS_USER.get('proxy').get(fileName).get('file');
+                    let dbNode = userDB.get('proxy').get(fileName).get('file');
                     let nodeProm = new Promise(res => dbNode.once(res))
 
                     nodeProm.then(comp=>{