Skip to content

Instantly share code, notes, and snippets.

@coderberry
Created March 12, 2014 20:25
Show Gist options
  • Select an option

  • Save coderberry/9515556 to your computer and use it in GitHub Desktop.

Select an option

Save coderberry/9515556 to your computer and use it in GitHub Desktop.
import ajax from 'appkit/utils/ajax';
import Video from 'appkit/libs/media/video';
import Image from 'appkit/libs/media/image';
import Quiz from 'appkit/libs/media/quiz';
import Folder from 'appkit/libs/media/folder';
var Browse = Ember.Object.extend({
folders : null,
items : null,
init: function() {
this._super.apply(this, arguments);
this.set('folders', Em.A([]));
this.set('items', Em.A([]));
}
});
Browse.reopenClass({
findFolder: function(toolId, folder, parentFolderChain) {
var browse = Browse.create(),
folderChain = parentFolderChain + '.' + folder;
return ajax({
type: 'POST',
url: '/api/v1/browse',
dataType: 'json',
data: {
folder: folder,
tool_id: toolId
}
}).then(
function(data) { // Success
var items = data.driver_response.items;
items.forEach(function(item) {
var obj;
obj = null;
switch (item.kind) {
case 'folder':
obj = Folder.createFromData(item);
browse.get('folders').pushObject(obj);
break;
case 'video':
obj = Video.createFromData(item);
obj.set('folderChain', folderChain);
browse.get('items').pushObject(obj);
break;
case 'image':
obj = Image.createFromData(item);
obj.set('folderChain', folderChain);
browse.get('items').pushObject(obj);
break;
case 'quiz':
obj = Quiz.createFromData(item);
obj.set('folderChain', folderChain);
browse.get('items').pushObject(obj);
break;
default:
Em.debug('UNKNOWN KIND: ' + item.kind);
}
});
return new Ember.RSVP.Promise(function(resolve, reject) {
resolve(browse);
reject(browse);
});
},
function(err) { // Failure
Ember.debug('Error: ' + err);
return new Ember.RSVP.Promise(function(resolve, reject) {
resolve(browse);
reject(err);
});
}
);
}
});
export default Browse;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment