uppy/src/plugins/GoogleDrive.js
2016-02-01 00:53:55 -05:00

95 lines
2.4 KiB
JavaScript

// import Utils from '../core/Utils'
import Plugin from './Plugin'
import request from 'superagent'
export default class Drive extends Plugin {
constructor (core, opts) {
super(core, opts)
this.type = 'selecter'
this.authenticate = this.authenticate.bind(this)
this.connect = this.connect.bind(this)
this.render = this.render.bind(this)
this.files = []
this.currentDir = '/'
}
connect (target) {
this.getDirectory()
}
authenticate () {
request.get('/drive/authenticate')
.query({})
.end((err, res) => {
if (err) {
console.err(err)
}
})
}
addFile () {
}
getDirectory () {
var opts = {
dir: 'pizza'
}
request.get('//localhost:3002/dropbox/readdir')
.query(opts)
.set('Content-Type', 'application/json')
.end((err, res) => {
console.log(err)
console.log('yo!')
console.log(res)
})
}
run (results) {
}
render (files) {
// for each file in the directory, create a list item element
const elems = files.map((file, i) => {
const icon = (file.isFolder) ? 'folder' : 'file'
return `<li data-type="${icon}" data-name="${file.name}"><span>${icon}: </span><span> ${file.name}</span></li>`
})
// appends the list items to the target
this._target.innerHTML = elems.sort().join('')
if (this.currentDir.length > 1) {
const parent = document.createElement('LI')
parent.setAttribute('data-type', 'parent')
parent.innerHTML = '<span>...</span>'
this._target.appendChild(parent)
}
// add an onClick to each list item
const fileElems = this._target.querySelectorAll('li')
Array.prototype.forEach.call(fileElems, element => {
const type = element.getAttribute('data-type')
if (type === 'file') {
element.addEventListener('click', () => {
this.files.push(element.getAttribute('data-name'))
console.log(`files: ${this.files}`)
})
} else {
element.addEventListener('dblclick', () => {
const length = this.currentDir.split('/').length
if (type === 'folder') {
this.currentDir = `${this.currentDir}${element.getAttribute('data-name')}/`
} else if (type === 'parent') {
this.currentDir = `${this.currentDir.split('/').slice(0, length - 2).join('/')}/`
}
console.log(this.currentDir)
this.getDirectory()
})
}
})
}
}