Restrict menu items based on game stage

This commit is contained in:
Garrett Mills 2020-11-08 10:51:08 -06:00
parent 79b928c775
commit 7cd399db07
Signed by: garrettmills
GPG Key ID: D2BF5FBA8298F246
4 changed files with 29 additions and 0 deletions

View File

@ -7,6 +7,9 @@ const { Controller } = require('libflitter')
* are used as handlers for routes specified in the route files.
*/
class Home extends Controller {
static get services() {
return [...super.services, 'sports_data']
}
/*
* Serve the main welcome page.
@ -18,6 +21,15 @@ class Home extends Controller {
return res.redirect('/auth/login')
}
}
async get_status(req, res, next) {
return res.api({
team_id: req.user_team.id,
team_name: req.user_team.team_name,
current_week: await this.sports_data.current_play_week(),
is_draft_stage: await this.sports_data.is_draft_stage(),
})
}
}
module.exports = Home

View File

@ -55,6 +55,8 @@ const index = {
'/matchups': ['controller::Scores.get_weekly_scores'],
'/league-standings': ['controller::Scores.get_league_standings'],
'/status': ['controller::Home.get_status'],
},
/*

View File

@ -1,5 +1,6 @@
import {Component} from '../../lib/vues6.js'
import {router} from '../module/routing.js'
import {api} from '../module/api.js'
const template = `
<div class="top-level-container">
@ -48,11 +49,21 @@ class TopLevelComponent extends Component {
{ title: 'Draft Board', page: 'draft-board' },
]
status = {}
/**
* Called when the component is initialized.
* @return {Promise<void>}
*/
async vue_on_create() {
this.status = await api.get_status()
if ( this.status.is_draft_stage ) {
this.navbar_items = this.navbar_items.filter(x => !['my-team/add-players', 'scores', 'league'].includes(x.page))
} else {
this.navbar_items = this.navbar_items.filter(x => !['draft-board'].includes(x.page))
}
// Listen for navigation changes.
this.router_subscription = router.subscribe((path, args) => this.on_route_change(path, args))
this.current_route = router.current_route

View File

@ -3,6 +3,10 @@ class API {
this.base_url = APP_BASE_PATH.replace('/app/', '/api/v1/')
}
async get_status() {
return this.get_request('status')
}
async get_standings() {
return this.get_request('league-standings')
}