(function () {
'use strict';
+// poor man's async
+function asyncForEach(items, handler, callback) {
+ var cur = 0;
+
+ if (items.length === 0) return callback();
+
+ (function iterator() {
+ handler(items[cur], function (error) {
+ if (error) return callback(error);
+ if (cur >= items.length-1) return callback();
+ ++cur;
+
+ iterator();
+ });
+ })();
+}
+
function getProfile(accessToken, callback) {
callback = callback || function (error) { if (error) console.error(error); };
app.session.username = result.body.username;
app.session.valid = true;
- callback();
+ superagent.get('/api/settings').query({ access_token: localStorage.accessToken }).end(function (error, result) {
+ if (error) console.error(error);
+
+ app.folderListingEnabled = !!result.body.folderListingEnabled;
+
+ callback();
+ });
});
}
window.open(encode(path));
}
-function up() {
- window.location.hash = sanitize(app.path.split('/').slice(0, -1).filter(function (p) { return !!p; }).join('/'));
-}
-
function uploadFiles(files) {
if (!files || !files.length) return;
- app.uploadStatus = {
- busy: true,
- count: files.length,
- done: 0,
- percentDone: 0
- };
+ app.uploadStatus.busy = true;
+ app.uploadStatus.count = files.length;
+ app.uploadStatus.done = 0;
+ app.uploadStatus.percentDone = 0;
- function uploadFile(file) {
+ asyncForEach(files, function (file, callback) {
var path = encode(sanitize(app.path + '/' + file.name));
var formData = new FormData();
superagent.post('/api/files' + path).query({ access_token: localStorage.accessToken }).send(formData).end(function (error, result) {
if (result && result.statusCode === 401) return logout();
- if (result && result.statusCode !== 201) console.error('Error uploading file: ', result.statusCode);
- if (error) console.error(error);
+ if (result && result.statusCode !== 201) return callback('Error uploading file: ', result.statusCode);
+ if (error) return callback(error);
app.uploadStatus.done += 1;
app.uploadStatus.percentDone = Math.round(app.uploadStatus.done / app.uploadStatus.count * 100);
- if (app.uploadStatus.done >= app.uploadStatus.count) {
- app.uploadStatus = {
- busy: false,
- count: 0,
- done: 0,
- percentDone: 100
- };
-
- refresh();
- }
+ callback();
});
- }
+ }, function (error) {
+ if (error) console.error(error);
- for(var i = 0; i < app.uploadStatus.count; ++i) {
- uploadFile(files[i]);
- }
+ app.uploadStatus.busy = false;
+ app.uploadStatus.count = 0;
+ app.uploadStatus.done = 0;
+ app.uploadStatus.percentDone = 100;
+
+ refresh();
+ });
}
function dragOver(event) {
},
onOptionsMenu: function (command) {
if (command === 'folderListing') {
- console.log('Not implemented');
+ superagent.put('/api/settings').send({ folderListingEnabled: this.folderListingEnabled }).query({ access_token: localStorage.accessToken }).end(function (error) {
+ if (error) console.error(error);
+ });
} else if (command === 'about') {
this.$msgbox({
title: 'About Surfer',
return filesize(cellValue);
},
loadDirectory: loadDirectory,
- up: up,
+ onUp: function () {
+ window.location.hash = sanitize(app.path.split('/').slice(0, -1).filter(function (p) { return !!p; }).join('/'));
+ },
open: open,
drop: drop,
dragOver: dragOver