const { connect } = require('preact-redux'); const preact = require('preact'); const { stringSort, NULL_UUID, COLOURS } = require('./../utils'); const { ConstructAvatar } = require('./construct'); const actions = require('./../actions'); const InstanceCreateForm = require('./instance.create.buttons'); const idSort = stringSort('id'); const addState = connect( function receiveState(state) { const { ws, constructs, team, instanceList, account } = state; function sendInstanceJoin(instance) { if (team.length) { return ws.sendInstanceJoin(instance.id, team); } return false; } function sendInstanceState(instance) { return ws.sendInstanceState(instance.id); } function sendInstanceList() { return ws.sendInstanceList(); } return { account, constructs, team, sendInstanceJoin, sendInstanceState, sendInstanceList, instanceList, }; }, ); function List(args) { const { account, team, constructs, sendInstanceState, sendInstanceJoin, sendInstanceList, instanceList, } = args; function listElements() { if (!instanceList) return
...
; const instancePanels = instanceList.map(instance => { const player = instance.players.find(p => p.id === account.id); const scoreText = player ? `${player.wins} : ${player.losses}` : ''; function instanceClick() { if (!player) return sendInstanceJoin(instance); return sendInstanceState(instance); } return ( {instance.name} {instance.players.length} / {instance.max_players} {scoreText} ); }); return ( ); } const constructPanels = constructs .filter(c => team.includes(c.id)) .sort(idSort) .map(construct => ); return (
{constructPanels}
{listElements()}
); } module.exports = addState(List);