{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-bp2019/src/components/tools/lively-filesystems.js"],"names":["authGithub","authDropbox","authGoogledrive","Morph","LivleyFilesystems","initialize","container","get","windowTitle","addEventListener","loginGitHub","logoutGitHub","loginDropbox","logoutDropbox","loginGoogledrive","logoutGoogledrive","mountHttp","updateMountList","dispatchEvent","Event","getMountURL","console","log","mountPath","shadowRoot","querySelector","value","repo","branch","challengeForAuth","Date","now","token","mountGithub","fetch","method","body","JSON","stringify","then","resp","status","lively","error","logout","unmountGithub","notify","subfolder","mount","httpUrl","unmountPath","path","alert","text","list","mounts","parse","innerHTML","forEach","ea","remotePoint","options","base","appendChild","name","openBrowser"],"mappings":"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","file":"lively-filesystems.js","sourcesContent":["import authGithub from 'src/client/auth-github.js'\nimport authDropbox from 'src/client/auth-dropbox.js'\nimport authGoogledrive from 'src/client/auth-googledrive.js'\n\nimport Morph from 'src/components/widgets/lively-morph.js';\n\nexport default class LivleyFilesystems extends Morph {\n\n  initialize() {\n    var container = this.get(\".container\");\n\n    this.windowTitle = \"Lively Mounts\";\n    // #TODO refactor to \"connections\"\n\n    this.get('#githubLoginButton').addEventListener('click', () => this.loginGitHub());\n    this.get('#githubLogoutButton').addEventListener('click', () => this.logoutGitHub());\n    this.get('#dropboxLoginButton').addEventListener('click', () => this.loginDropbox());\n    this.get('#dropboxLogoutButton').addEventListener('click', () => this.logoutDropbox());\n    this.get('#googledriveLoginButton').addEventListener('click', () => this.loginGoogledrive());\n    this.get('#googledriveLogoutButton').addEventListener('click', () => this.logoutGoogledrive());\n    this.get('#httpMountButton').addEventListener('click', () => this.mountHttp());\n    this.get('#updateMountList').addEventListener('click', () => this.updateMountList());\n\n    this.updateMountList();\n\n    container.dispatchEvent(new Event(\"initialized\"));\n  }\n\n  getMountURL() { return \"https://lively4/sys/fs/mount\"; }\n\n  loginGitHub() {\n    console.log(\"login\")\n    var mountPath = this.shadowRoot.querySelector('#githubMount').value\n    var repo = this.shadowRoot.querySelector('#githubRepo').value\n    var branch = this.shadowRoot.querySelector('#githubBranch').value\n\n    authGithub.challengeForAuth(Date.now(), (token) => {\n      console.log('We are authenticated with the Token: ' + token)\n      var mountGithub = {\n        \"path\": mountPath,\n        \"name\": \"github\",\n        \"options\": {\n          \"repo\": repo,\n          \"branch\": branch,\n          \"token\": token\n        }\n      }\n      console.log(\"mount: \" + this.getMountURL())\n      fetch(this.getMountURL(), {\n        method: 'PUT',\n        body: JSON.stringify(mountGithub)\n      }).then(resp => {\n\n        if (resp.status == 200) {\n          console.log(\"mounted github\")\n\n        } else {\n          lively.error(\"could not mount gitub \", resp)\n        }\n      })\n    })\n  }\n\n  logoutGitHub() {\n    authGithub.logout();\n    console.log('logged out of github')\n    var unmountGithub = {\n      \"path\": \"/\",\n      \"name\": \"github\",\n      \"options\": {\n        \"repo\": \"LivelyKernel/lively4-core\",\n        \"branch\": \"gh-pages\"\n        // No token, so we mount it read-only\n      }\n    }\n    fetch(this.getMountURL(), {\n      method: 'PUT',\n      body: JSON.stringify(unmountGithub)\n    }).then(resp => {\n      if (resp.status == 200) {\n        console.log(\"unmounted github\")\n        this.updateMountList()\n      } else {\n        lively.notify(\"could not unmount github \", resp)\n      }\n    })\n  }\n\n  loginDropbox() {\n    console.log(\"login dropbox\")\n\n    // #FutureWork -> make object lookup look nicer\n    var mountPath = this.shadowRoot.querySelector('#dropboxMountPath').value\n    var subfolder = this.shadowRoot.querySelector('#dropboxSubfolder').value\n\n    lively.authDropbox.challengeForAuth(Date.now(), (token) => {\n      console.log('We are authenticated with the Token: ' + token)\n      var mount = {\n        \"path\": mountPath,\n        \"name\": \"dropbox\",\n        \"options\": {\n          \"token\": token,\n          \"subfolder\": subfolder\n        }\n      }\n      console.log(\"mount: \" + this.getMountURL())\n      fetch(this.getMountURL(), {\n        method: 'PUT',\n        body: JSON.stringify(mount)\n      }).then(resp => {\n        if (resp.status == 200) {\n          console.log(\"mounted dropbox\")\n        } else {\n          console.log(\"could not mount dropbox \" + resp)\n        }\n        this.updateMountList()\n      })\n    })\n  }\n\n  logoutDropbox() {\n    authDropbox.logout();\n    lively.notify('logged out of dropbox');\n  }\n\n  loginGoogledrive() {\n    console.log(\"login googledrive\")\n\n    var mountPath = this.shadowRoot.querySelector('#googledriveMountPath').value\n    var subfolder = this.shadowRoot.querySelector('#googledriveSubfolder').value\n\n    lively.authGoogledrive.challengeForAuth(Date.now(), (token) => {\n      console.log('We are authenticated with the Token: ' + token)\n      var mount = {\n        \"path\": mountPath,\n        \"name\": \"googledrive\",\n        \"options\": {\n          \"token\": token,\n          \"subfolder\": subfolder\n        }\n      }\n      console.log(\"mount: \" + this.getMountURL())\n      fetch(this.getMountURL(), {\n        method: 'PUT',\n        body: JSON.stringify(mount)\n      }).then(resp => {\n        if (resp.status == 200) {\n          console.log(\"mounted googledrive\")\n\n        } else {\n          console.log(\"could not mount googledrive \" + resp)\n        }\n        this.updateMountList()\n      })\n\n    })\n  }\n\n  logoutGoogledrive() {\n    lively.authGoogledrive.logout();\n    lively.notify('logged out of googledrive')\n  }\n\n  mountHttp() {\n    console.log(\"mount http\")\n\n    var mountPath = this.shadowRoot.querySelector('#httpMountPath').value\n    var httpUrl = this.shadowRoot.querySelector('#httpUrl').value\n\n    var mount = {\n      \"path\": mountPath,\n      \"name\": \"http\",\n      \"options\": {\n        \"base\": httpUrl\n      }\n    }\n    fetch(this.getMountURL(), {\n      method: 'PUT',\n      body: JSON.stringify(mount)\n    }).then(resp => {\n      if (resp.status == 200) {\n        console.log(\"mounted http\")\n      } else {\n        console.log(\"could not mount http \" + resp)\n      }\n      this.updateMountList()\n    })\n  }\n\n  unmountPath(path) {\n    console.log(\"unmountPath: \" + path)\n    fetch(\"https://lively4/sys/fs/umount\", {\n      method: 'PUT',\n      body: JSON.stringify({ path: path })\n    }).then(resp => {\n      if (resp.status == 200) {\n        console.log(\"unmounted path: \" + path)\n      } else {\n        alert(\"could not unmount path: \" + path + resp)\n      }\n      this.updateMountList()\n    })\n\n  }\n\n  updateMountList() {\n    fetch(\"https://lively4/sys/mounts\").then(async (resp) => {\n      if (resp.status == 200) {\n        var text = await resp.text()\n        console.log(\"show mounts...\")\n        var list = this.shadowRoot.querySelector('#listOfMountPoints')\n        var mounts = JSON.parse(text)\n        console.log(mounts)\n\n        list.innerHTML = \"\";\n        mounts.forEach(ea => {\n          let remotePoint = ea.options ? '> ' + (ea.options.base || ea.options.branch || ea.options.subfolder ||\n            '') : '';\n\n          list.appendChild( < li > { ea.path } { remotePoint }({ ea.name }) <\n            button class = \"unmount\"\n            click = {\n              () => {\n                this.unmountPath(ea.path);\n              }\n            } > unmount < /button> <\n            button class = \"browse\"\n            click = {\n              () => {\n                lively.openBrowser(\"https://lively4\" + ea.path);\n              }\n            } > browse < /button> < /\n            li > );\n        });\n      } else {\n        console.log(\"could not get list of mounts: \" + resp)\n      }\n    })\n  }\n}\n"]}