summaryrefslogtreecommitdiff
path: root/sw-ui/src/redux/user.ts
blob: 2cc25cc06138c8f7225f7ebb399459a168262a64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import { ApiPlayer } from '../api/model';
import { GlobalState } from '../reducers';
import { Action } from './actions/all';
import { SET_CURRENT_PLAYER } from './actions/user';
import { getCurrentGame } from './games';

export type User = {
  username: string,
  displayName: string,
}

export const currentUserReducer = (state: User | null = null, action: Action) => {
  switch (action.type) {
    case SET_CURRENT_PLAYER:
      return {
        username: action.player.username,
        displayName: action.player.displayName
      };
    default:
      return state;
  }
};

export function getCurrentUser(state: GlobalState): User | null {
  return state.currentUser
}

export function getCurrentPlayer(state: GlobalState): ApiPlayer | null {
  if (state.currentUser == null) {
    return null;
  }
  let game = getCurrentGame(state);
  if (game == null) {
    return null;
  }
  for (let i = 0; i < game.players.length; i++) {
    let player = game.players[i];
    if (player.username === state.currentUser.username) {
      return player;
    }
  }
  return null;
}
bgstack15