mirror of
https://github.com/lxsang/antos-frontend.git
synced 2025-07-21 00:09:45 +02:00
working on VFS binding of Google drive
This commit is contained in:
@ -156,23 +156,34 @@ self.OS.API =
|
||||
path = "resources/#{r}"
|
||||
_API.get path, c, f
|
||||
|
||||
libready: (l) ->
|
||||
return _API.shared[l] || false
|
||||
|
||||
require: (l,f) ->
|
||||
path = "os:///scripts/"
|
||||
if not _API.shared[l]
|
||||
js = "#{path}#{l}.js"
|
||||
js.asFileHandler().onready (d) ->
|
||||
_API.shared[l] = true
|
||||
el = $ '<script>', { src: "#{_API.handler.get}/#{js}" }
|
||||
.appendTo 'head'
|
||||
#load css file
|
||||
css = "#{path}#{l}.css"
|
||||
css.asFileHandler().onready (d) ->
|
||||
el = $ '<link>', { rel: 'stylesheet', type: 'text/css', 'href': "#{_API.handler.get}/#{css}" }
|
||||
.appendTo 'head'
|
||||
, () ->
|
||||
console.log "loaded", l
|
||||
_courrier.trigger "sharedlibraryloaded", l
|
||||
f() if f
|
||||
if l.match /^(https?:\/\/[^\s]+)/g
|
||||
_API.script l, () ->
|
||||
_API.shared[l] = true
|
||||
_courrier.trigger "sharedlibraryloaded", l
|
||||
f() if f
|
||||
, (e, s) ->
|
||||
_courrier.oserror "Cannot load 3rd library at: #{l}", e, r
|
||||
else
|
||||
path = "os:///scripts/"
|
||||
js = "#{path}#{l}.js"
|
||||
js.asFileHandler().onready (d) ->
|
||||
_API.shared[l] = true
|
||||
el = $ '<script>', { src: "#{_API.handler.get}/#{js}" }
|
||||
.appendTo 'head'
|
||||
#load css file
|
||||
css = "#{path}#{l}.css"
|
||||
css.asFileHandler().onready (d) ->
|
||||
el = $ '<link>', { rel: 'stylesheet', type: 'text/css', 'href': "#{_API.handler.get}/#{css}" }
|
||||
.appendTo 'head'
|
||||
, () ->
|
||||
console.log "loaded", l
|
||||
_courrier.trigger "sharedlibraryloaded", l
|
||||
f() if f
|
||||
else
|
||||
console.log l, "Library exist, no need to load"
|
||||
_courrier.trigger "sharedlibraryloaded", l
|
||||
|
@ -352,30 +352,8 @@ self.OS.GUI =
|
||||
# clean up things
|
||||
_OS.cleanup()
|
||||
# get setting from conf
|
||||
_OS.setting.desktop = conf.desktop if conf.desktop
|
||||
_OS.setting.applications = conf.applications if conf.applications
|
||||
_OS.setting.appearance = conf.appearance if conf.appearance
|
||||
_OS.setting.user = conf.user
|
||||
_OS.setting.VFS = conf.VFS if conf.VFS
|
||||
_OS.setting.desktop.path = "home:///.desktop" unless _OS.setting.desktop.path
|
||||
_OS.setting.desktop.menu = {} unless _OS.setting.desktop.menu
|
||||
_OS.setting.VFS.mountpoints = [
|
||||
#TODO: multi app try to write to this object, it neet to be cloned
|
||||
{ text: "Applications", path: 'app:///', iconclass: "fa fa-adn", type: "app" },
|
||||
{ text: "Home", path: 'home:///', iconclass: "fa fa-home", type: "fs" },
|
||||
{ text: "OS", path: 'os:///', iconclass: "fa fa-inbox", type: "fs" },
|
||||
{ text: "Desktop", path: _OS.setting.desktop.path , iconclass: "fa fa-desktop", type: "fs" },
|
||||
{ text: "Shared", path: 'shared:///' , iconclass: "fa fa-share-square", type: "fs" }
|
||||
] if not _OS.setting.VFS.mountpoints
|
||||
|
||||
_OS.setting.system = conf.system if conf.system
|
||||
_OS.setting.system.pkgpaths = [
|
||||
"home:///.packages",
|
||||
"os:///packages"
|
||||
] unless _OS.setting.system.pkgpaths
|
||||
_OS.setting.system.menu = {} unless _OS.setting.system.menu
|
||||
_OS.setting.system.repositories = [] unless _OS.setting.system.repositories
|
||||
_OS.setting.appearance.theme = "antos" unless _OS.setting.appearance.theme
|
||||
_OS.systemSetting(conf)
|
||||
console.log _OS.setting
|
||||
# load theme
|
||||
_GUI.loadTheme _OS.setting.appearance.theme
|
||||
# initDM
|
||||
|
@ -84,7 +84,7 @@ self.OS.API.handler =
|
||||
, (e, s) ->
|
||||
_courrier.osfail "Fail to make request: #{p}", e, s
|
||||
|
||||
dbquery: (cmd,d, c) ->
|
||||
dbquery: (cmd, d, c) ->
|
||||
path = "#{_REST}/db/#{cmd}"
|
||||
_API.post path, d, c, (e, s) ->
|
||||
_courrier.osfail "Fail to query data from database: #{path}", e, s
|
33
src/core/settings.coffee
Normal file
33
src/core/settings.coffee
Normal file
@ -0,0 +1,33 @@
|
||||
self.OS.systemSetting = (conf) ->
|
||||
_OS.setting.desktop = conf.desktop if conf.desktop
|
||||
_OS.setting.applications = conf.applications if conf.applications
|
||||
_OS.setting.appearance = conf.appearance if conf.appearance
|
||||
_OS.setting.user = conf.user
|
||||
_OS.setting.VFS = conf.VFS if conf.VFS
|
||||
_OS.setting.desktop.path = "home:///.desktop" unless _OS.setting.desktop.path
|
||||
_OS.setting.desktop.menu = {} unless _OS.setting.desktop.menu
|
||||
_OS.setting.VFS.mountpoints = [
|
||||
#TODO: multi app try to write to this object, it neet to be cloned
|
||||
{ text: "Applications", path: 'app:///', iconclass: "fa fa-adn", type: "app" },
|
||||
{ text: "Home", path: 'home:///', iconclass: "fa fa-home", type: "fs" },
|
||||
{ text: "OS", path: 'os:///', iconclass: "fa fa-inbox", type: "fs" },
|
||||
{ text: "Desktop", path: _OS.setting.desktop.path , iconclass: "fa fa-desktop", type: "fs" },
|
||||
{ text: "Shared", path: 'shared:///' , iconclass: "fa fa-share-square", type: "fs" }
|
||||
] if not _OS.setting.VFS.mountpoints
|
||||
|
||||
_OS.setting.system = conf.system if conf.system
|
||||
_OS.setting.system.pkgpaths = [
|
||||
"home:///.packages",
|
||||
"os:///packages"
|
||||
] unless _OS.setting.system.pkgpaths
|
||||
_OS.setting.system.menu = {} unless _OS.setting.system.menu
|
||||
_OS.setting.system.repositories = [] unless _OS.setting.system.repositories
|
||||
_OS.setting.appearance.theme = "antos" unless _OS.setting.appearance.theme
|
||||
|
||||
_OS.setting.VFS.gdrive = {
|
||||
CLIENT_ID: "1006507170703-l322pfkrhf9cgta4l4jh2p8ughtc14id.apps.googleusercontent.com"
|
||||
API_KEY: "AIzaSyBZhM5KbARvT10acWC8JQKlRn2WbSsmfLc"
|
||||
apilink: "https://apis.google.com/js/api.js"
|
||||
DISCOVERY_DOCS: ["https://www.googleapis.com/discovery/v1/apis/drive/v3/rest"]
|
||||
SCOPES: 'https://www.googleapis.com/auth/drive.metadata.readonly'
|
||||
} unless _OS.setting.VFS.gdrive
|
@ -1,6 +1,68 @@
|
||||
|
||||
# GoogleDrive File Handler
|
||||
class GoogleDriveHandler extends this.OS.API.VFS.BaseFileHandler
|
||||
constructor: (path) ->
|
||||
super path
|
||||
me = @
|
||||
@setting = _OS.setting.VFS.gdrive
|
||||
return _courrier.oserror "Unknown API setting for google drive VFS", (_API.throwe "OS.VFS"), null unless @setting
|
||||
@gid = 'root' if @isRoot()
|
||||
|
||||
oninit: (f) ->
|
||||
me = @
|
||||
return unless @setting
|
||||
if _API.libready @setting.apilink
|
||||
f()
|
||||
else
|
||||
_API.require @setting.apilink, () ->
|
||||
gapi.load "client:auth2", () ->
|
||||
gapi.client.init {
|
||||
apiKey: me.setting.API_KEY,
|
||||
clientId: me.setting.CLIENT_ID,
|
||||
discoveryDocs: me.setting.DISCOVERY_DOCS,
|
||||
scope: me.setting.SCOPES
|
||||
}
|
||||
.then () ->
|
||||
fn = (r) ->
|
||||
return f() if r
|
||||
# perform the login
|
||||
gapi.auth2.getAuthInstance().signIn()
|
||||
|
||||
gapi.auth2.getAuthInstance().isSignedIn.listen (r) ->
|
||||
fn(r)
|
||||
fn(gapi.auth2.getAuthInstance().isSignedIn.get())
|
||||
|
||||
meta: (f) ->
|
||||
@oninit () ->
|
||||
gapi.client.drive.files.list {
|
||||
q: 'parents = "root" and trashed = false ',
|
||||
fields: "nextPageToken, files(id, name)"
|
||||
}
|
||||
.then (r) ->
|
||||
console.log(r)
|
||||
f()
|
||||
|
||||
action: (n, p, f) ->
|
||||
me = @
|
||||
switch n
|
||||
when "read"
|
||||
return
|
||||
when "mk"
|
||||
return
|
||||
when "write"
|
||||
return
|
||||
when "upload"
|
||||
return
|
||||
when "remove"
|
||||
return
|
||||
when "publish"
|
||||
return
|
||||
when "download"
|
||||
return
|
||||
when "move"
|
||||
return
|
||||
else
|
||||
return _courrier.osfail "VFS unknown action: #{n}", (_API.throwe "OS.VFS"), n
|
||||
|
||||
|
||||
self.OS.API.VFS.register "^gdv$", GoogleDriveHandler
|
Reference in New Issue
Block a user