diff --git a/app/adapters/application.js b/app/adapters/application.js index 14f50f8a62604620255fc7d10e1c09cadcfe08e4..fa01ec20b3653103685c90f10a5d0732fff12762 100644 --- a/app/adapters/application.js +++ b/app/adapters/application.js @@ -11,6 +11,21 @@ export default class ApplicationAdapter extends JSONAPIAdapter { return `${super.buildURL(...args)}/`; } + pathForType(modelName) { + let ret = super.pathForType(modelName); + + // `nodes` is polymorphic endpoint + // with POST /api/nodes/ we can create a Folder + // or a Document + if (modelName == 'folder') { + return 'nodes'; + } else if (modeName == 'document') { + return 'nodes'; + } + + return ret; + } + @computed('session.data.authenticated.token', 'session.isAuthenticated') get headers() { let _headers = {}, diff --git a/app/adapters/node.js b/app/adapters/node.js index 6dffdad523d76d120c4333fe6477231c28a8967a..01326e26a7878cf0155b324eb28dcc175c6a9293 100644 --- a/app/adapters/node.js +++ b/app/adapters/node.js @@ -9,4 +9,5 @@ export default class NodeAdapter extends ApplicationAdapter { return ret; } + } diff --git a/app/components/modal/new_folder.js b/app/components/modal/new_folder.js index f61154005b96a5a8bcfecdb8763ae7aaecd265c8..d1d49fdffadb9055c20c757d8410abaefc43a549 100644 --- a/app/components/modal/new_folder.js +++ b/app/components/modal/new_folder.js @@ -9,17 +9,23 @@ import { Modal } from 'bootstrap'; export default class NewFolderComponent extends Component { @tracked title = ''; @service store; + @service currentUser; @action onSubmit() { - let new_folder; - new_folder = this.store.createRecord('node'); - new_folder.title = this.title; - new_folder.save(); + this.currentUser.user.home_folder.then((home_folder) => { + let new_folder; + + new_folder = this.store.createRecord('folder'); + new_folder.title = this.title; + new_folder.parent = home_folder; + new_folder.save(); + + this.args.onClose(); + this.title = ''; + }); - this.args.onClose(); - this.title = ''; } @action diff --git a/app/models/node.js b/app/models/node.js index af9489cb5d8c1433682a867f14ed0640f14feb0f..c8dc0446216ef66c37a1ad765f4f3dc44f6c4f69 100644 --- a/app/models/node.js +++ b/app/models/node.js @@ -3,7 +3,7 @@ import Model, { attr, hasMany, belongsTo } from '@ember-data/model'; export default class NodeModel extends Model { @attr title; @attr model; - @belongsTo('folder', { inverse: null }) parent; + @belongsTo('node', { inverse: 'descendants', polymorphic: true }) parent; @hasMany('node', { polymorphic: true }) descendants; get is_folder() {