diff --git a/app/adapters/user.js b/app/adapters/user.js index f51c8cc12ca6a466c37be03d6535a2799b60dacf..ee4bca0c2242084f793c661aec963d72b83f475d 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 ce0abdbca6b8e318601a12c9e0f42a9a2b420d88..1c2e813af4c916955efbeef81a60d7cbb3b45094 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 811a7f1f4368cafc7a01f06b34886c7dedef3c26..e927302e58bf077cec2f798bb423e9874228ba06 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 78f4a219598c2819a77c1457ccf9577f99dfdee1..04a374cfbbb1f76f7415dff5fb65a007a17bfb69 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 48beb36ce96ebf4b5fea01d45e0d8f9d17311ce4..42a2c37e58e1f7af442cdcd5dc4050ebb56af533 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 3aeff0acfd68a6e6a9c55fc67b6b14d7faeb8aa3..a1957fa5b850fefbd780b6a2e3ddcbb1bb7cc200 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 f7931f5fba6e72253534f1b2e5475cc04aaca2b4..0000000000000000000000000000000000000000 --- 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 a4c022e6768953a93ea9ddbc6c195c6f716be934..b6819507c10dc900563f7bd503e7583a9d3bbf8f 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 3b68a6b5d06ee9b71193a7f6b15f19f4810a5636..d0874fb7484228e8fbe0a966d0532f8a19ad2e78 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 809e7f36b2ddad957d0d162678e249e52f5fe0f5..172b3b36e6ee18300eb8f03ccb6bc02d99243ef0 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 dc1ba260e827cb47c31f20e112bbd58102df8c1b..1461efa05e6003df2733726a3680e29a57d49bb0 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 b65611eb3cefdfc439cff3ed98ddfdcd7b211dbd..8e4d0efb7cec5015df2393df69e6027a5d9894e1 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