const { connect } = require('preact-redux');
const preact = require('preact');
const actions = require('../actions');
const AccountStatus = require('./account.status');
const addState = connect(
function receiveState(state) {
const {
ws,
account,
instances,
team,
ping,
game,
} = state;
function sendInstanceState(instance) {
return ws.sendInstanceState(instance.id);
}
return {
account,
instances,
team,
game,
ping,
sendInstanceState,
};
},
function receiveDispatch(dispatch) {
function setNav(place) {
dispatch(actions.setGame(null));
dispatch(actions.setInstance(null));
dispatch(actions.setCombiner([]));
dispatch(actions.setReclaiming(false));
dispatch(actions.setActiveSkill(null));
dispatch(actions.setActiveConstruct(null));
dispatch(actions.setInfo(null));
dispatch(actions.setItemEquip(null));
dispatch(actions.setItemUnequip([]));
dispatch(actions.setVboxHighlight([]));
return dispatch(actions.setNav(place));
}
function hideNav() {
return dispatch(actions.setShowNav(false));
}
return {
setNav,
hideNav,
};
}
);
function Nav(args) {
const {
account,
instances,
game,
team,
sendInstanceState,
setNav,
hideNav,
} = args;
if (!account) return false;
function navTo(p) {
return setNav(p);
}
function joinInstance(i) {
sendInstanceState(i);
if (game) navTo('transition');
return true;
}
const joined = instances.map(i => {
const score = i.players.find(p => p.id === account.id);
const phase = i.phase === 'Lobby'
? 'Lobby' : i.rounds[i.rounds.length - 1].game_id
? 'In game'
: 'Vbox';
return
});
const canJoin = team.some(c => !c);
return (
);
}
module.exports = addState(Nav);