From 432f46f411ffb3b95c1011e8385e8312e38f2a17 Mon Sep 17 00:00:00 2001 From: Eugen Ciur <eugen@papermerge.com> Date: Sun, 31 Oct 2021 13:36:29 +0100 Subject: [PATCH] Create a folder use POST /api/nodes endpoint --- app/adapters/application.js | 15 +++++++++++++++ app/adapters/node.js | 1 + app/components/modal/new_folder.js | 18 ++++++++++++------ app/models/node.js | 2 +- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/app/adapters/application.js b/app/adapters/application.js index 14f50f8..fa01ec2 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 6dffdad..01326e2 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 f611540..d1d49fd 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 af9489c..c8dc044 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() { -- GitLab