From 1e54c8d1971ab776bcaeb58de2222f42c7770d4f Mon Sep 17 00:00:00 2001 From: Eugen Ciur <eugen@papermerge.com> Date: Thu, 24 Feb 2022 20:56:37 +0100 Subject: [PATCH] refactoring --- app/adapters/user.js | 2 -- app/components/nav/sidebar.hbs | 12 ++++++------ app/controllers/authenticated/nodes.js | 1 - app/controllers/login.js | 7 ++++++- app/models/user.js | 17 ----------------- app/routes/authenticated.js | 17 ++++++++++++++--- app/routes/authenticated/index.js | 22 ---------------------- app/routes/authenticated/nodes.js | 20 +++----------------- app/routes/base.js | 20 +------------------- app/services/current-user.js | 6 ++++++ app/services/session.js | 1 - app/templates/authenticated.hbs | 6 +++--- 12 files changed, 39 insertions(+), 92 deletions(-) delete mode 100644 app/routes/authenticated/index.js diff --git a/app/adapters/user.js b/app/adapters/user.js index f51c8cc..ee4bca0 100644 --- a/app/adapters/user.js +++ b/app/adapters/user.js @@ -38,7 +38,6 @@ export default class UserAdapter extends ApplicationAdapter { let record, me_id; me_id = window.localStorage.getItem('me'); - if (me_id) { record = this.store.peekRecord('user', me_id); @@ -46,7 +45,6 @@ export default class UserAdapter extends ApplicationAdapter { return record; } } - record = await this.store.queryRecord( 'user', { me: true } ); diff --git a/app/components/nav/sidebar.hbs b/app/components/nav/sidebar.hbs index ce0abdb..1c2e813 100644 --- a/app/components/nav/sidebar.hbs +++ b/app/components/nav/sidebar.hbs @@ -2,7 +2,7 @@ <div class="d-flex flex-column flex-shrink-0 p-3 text-white bg-dark sidebar-open" > <LinkTo @route="authenticated.nodes" - @model="{{@home_folder.id}}" + @model="{{@home_folder_id}}" class="d-flex brand text-white text-decoration-none"> <img src="/assets/images/logo_bbg.svg" @@ -15,7 +15,7 @@ <li> <LinkTo @route="authenticated.nodes" - @model="{{@home_folder.id}}" + @model="{{@home_folder_id}}" class="nav-link text-white" aria-current="page"> <i class="fa fa-home me-2"></i>Home </LinkTo> @@ -40,7 +40,7 @@ <li> <LinkTo @route="authenticated.nodes" - @model="{{@inbox_folder.id}}" + @model="{{@inbox_folder_id}}" class="nav-link text-white" aria-current="page"> <i class="bi-inbox me-2"></i>Inbox </LinkTo> @@ -76,7 +76,7 @@ <div class="d-flex flex-column flex-shrink-1 text-white bg-dark" > <LinkTo @route="authenticated.nodes" - @model="{{@home_folder.id}}" + @model="{{@home_folder_id}}" class="d-flex brand text-white text-decoration-none px-3 pb-0 pt-2"> <img src="/assets/images/logo_bbg.svg" @@ -88,7 +88,7 @@ <li class="nav-item"> <LinkTo @route="authenticated.nodes" - @model="{{@home_folder.id}}" + @model="{{@home_folder_id}}" {{tooltip title="Home"}} class="nav-link text-white"> <i class="fa fa-home me-2"></i> @@ -97,7 +97,7 @@ <li> <LinkTo @route="authenticated.nodes" - @model="{{@inbox_folder.id}}" + @model="{{@inbox_folder_id}}" {{tooltip title="Inbox"}} class="nav-link text-white" > <i class="bi-inbox me-2"></i> diff --git a/app/controllers/authenticated/nodes.js b/app/controllers/authenticated/nodes.js index 811a7f1..e927302 100644 --- a/app/controllers/authenticated/nodes.js +++ b/app/controllers/authenticated/nodes.js @@ -34,5 +34,4 @@ export default class NodesController extends DualPanelBaseController { this.extra_type = 'folder'; } } - } diff --git a/app/controllers/login.js b/app/controllers/login.js index 78f4a21..04a374c 100644 --- a/app/controllers/login.js +++ b/app/controllers/login.js @@ -10,6 +10,7 @@ export default class LoginController extends Controller { @tracked in_progress = false; @service session; @service router; + @service currentUser; @action async authenticate(username, password) { @@ -35,7 +36,11 @@ export default class LoginController extends Controller { if (this.session.isAuthenticated) { // What to do with all this success? - this.router.transitionTo('authenticated.index'); + await this.currentUser.loadCurrentUser(); + this.router.transitionTo( + 'authenticated.nodes', + this.currentUser.user.home_folder.get('id') + ); } } diff --git a/app/models/user.js b/app/models/user.js index 48beb36..42a2c37 100644 --- a/app/models/user.js +++ b/app/models/user.js @@ -23,23 +23,6 @@ class UserModel extends Model { return adapter.changePassword(this, new_password); } - async getHomeFolder() { - let home_id, adapter; - - adapter = this.store.adapterFor('node'); - home_id = this.home_folder.get('id'); - - return adapter.getFolder(home_id); - } - - async getInboxFolder() { - let inbox_id, adapter; - - adapter = this.store.adapterFor('node'); - inbox_id = this.inbox_folder.get('id'); - - return adapter.getFolder(inbox_id); - } } export default UserModel; diff --git a/app/routes/authenticated.js b/app/routes/authenticated.js index 3aeff0a..a1957fa 100644 --- a/app/routes/authenticated.js +++ b/app/routes/authenticated.js @@ -4,8 +4,19 @@ import BaseRoute from 'papermerge/routes/base'; export default class AuthenticatedRoute extends BaseRoute { async model() { - return this.store.findAll('tag').then((tags) => { - return tags.filter(tag => tag.pinned); - }); + let home_folder_id, + inbox_folder_id, + pinned_tags, + tags; + + tags = await this.store.findAll('tag'); + pinned_tags = tags.filter(tag => tag.pinned); + + if (this.currentUser.user) { + home_folder_id = this.currentUser.user.home_folder.get('id'); + inbox_folder_id = this.currentUser.user.inbox_folder.get('id'); + } + + return {pinned_tags, home_folder_id, inbox_folder_id}; } } diff --git a/app/routes/authenticated/index.js b/app/routes/authenticated/index.js deleted file mode 100644 index f7931f5..0000000 --- a/app/routes/authenticated/index.js +++ /dev/null @@ -1,22 +0,0 @@ -import Route from '@ember/routing/route'; -import { service } from '@ember/service'; - - -export default class IndexRoute extends Route { - @service store; - @service session; - @service router; - @service currentUser; - - async beforeModel(transition) { - /* Redirects to user's home folder - */ - let that = this; - this.session.requireAuthentication(transition, 'login'); - await this.currentUser.loadCurrentUser(); - this.currentUser.user.getHomeFolder().then((home_folder) => { - that.router.replaceWith("authenticated.nodes", home_folder.id); - }); - } - -} diff --git a/app/routes/authenticated/nodes.js b/app/routes/authenticated/nodes.js index a4c022e..b681950 100644 --- a/app/routes/authenticated/nodes.js +++ b/app/routes/authenticated/nodes.js @@ -1,10 +1,10 @@ -import Route from '@ember/routing/route'; -import { inject as service } from '@ember/service'; +import BaseRoute from 'papermerge/routes/base'; +import { service } from '@ember/service'; import { getPanelInfo } from './utils'; -export default class NodesRoute extends Route { +export default class NodesRoute extends BaseRoute { @service store; @service currentUser; @@ -52,8 +52,6 @@ export default class NodesRoute extends Route { 'last_document_version': extra_last_version, 'pages': extra_pages_with_url, } - context['home_folder'] = this.currentUser.user.home_folder; - context['inbox_folder'] = this.currentUser.user.inbox_folder; return context; } @@ -67,18 +65,6 @@ export default class NodesRoute extends Route { this.dualpanel_mode = true; } - context['home_folder'] = await this.currentUser.user.getHomeFolder(); - context['inbox_folder'] = await this.currentUser.user.getInboxFolder(); - return context; } - - setupController(controller, model) { - - let _auth_controller = this.controllerFor('authenticated'); - - _auth_controller.set('home_folder', model.home_folder); - _auth_controller.set('inbox_folder', model.inbox_folder); - } - } diff --git a/app/routes/base.js b/app/routes/base.js index 3b68a6b..d0874fb 100644 --- a/app/routes/base.js +++ b/app/routes/base.js @@ -8,25 +8,7 @@ export default class BaseRoute extends Route { @service currentUser; async beforeModel(transition) { - this.session.requireAuthentication(transition, 'login'); - await this.currentUser.loadCurrentUser(); - - if (this.currentUser.user) { - return this.currentUser.user.getHomeFolder(); - } - } - - async setupController() { - super.setupController(...arguments); - let app_controller = this.controllerFor('authenticated'), - home_folder, - inbox_folder; - - home_folder = await this.currentUser.user.getHomeFolder(); - inbox_folder = await this.currentUser.user.getInboxFolder(); - - app_controller.set('home_folder', home_folder); - app_controller.set('inbox_folder', inbox_folder); + this.session.requireAuthentication(transition, 'login'); } } diff --git a/app/services/current-user.js b/app/services/current-user.js index 809e7f3..172b3b3 100644 --- a/app/services/current-user.js +++ b/app/services/current-user.js @@ -11,11 +11,17 @@ export default class CurrentUserService extends Service { async loadCurrentUser() { let adapter, user; + if (this.isAuthenticated && this.user) { + return this.user; + } + if (this.session.isAuthenticated) { adapter = this.store.adapterFor('user'); user = await adapter.getCurrentUser(); this.user = user; } + + return this.user; } get isAuthenticated() { diff --git a/app/services/session.js b/app/services/session.js index dc1ba26..1461efa 100644 --- a/app/services/session.js +++ b/app/services/session.js @@ -10,7 +10,6 @@ export default class SessionService extends BaseSessionService { super.handleAuthentication("authenticated.index"); try { await this.currentUser.loadCurrentUser(); - await this.preferences.load(); } catch (err) { await this.invalidate(); } diff --git a/app/templates/authenticated.hbs b/app/templates/authenticated.hbs index b65611e..8e4d0ef 100644 --- a/app/templates/authenticated.hbs +++ b/app/templates/authenticated.hbs @@ -1,8 +1,8 @@ <main> <Nav::Sidebar - @home_folder={{this.home_folder}} - @inbox_folder={{this.inbox_folder}} - @pinned_tags={{@model}} + @home_folder_id={{@model.home_folder_id}} + @inbox_folder_id={{@model.inbox_folder_id}} + @pinned_tags={{@model.pinned_tags}} @expanded={{this.expanded}} /> <div class="w-100 central-bar"> <Nav::Topbar -- GitLab