Browse Source

Add RoomRecord.

pull/1/head
Titouan Rigoudy 9 years ago
parent
commit
8ed133f17c
3 changed files with 29 additions and 18 deletions
  1. +2
    -3
      src/components/Room.js
  2. +3
    -3
      src/containers/RoomsPane.js
  3. +24
    -12
      src/reducers/rooms.js

+ 2
- 3
src/components/Room.js View File

@ -5,8 +5,7 @@ import ImmutablePropTypes from "react-immutable-proptypes";
import md5 from "md5";
const Room = ({ name, data }) => {
const membership = data.get("membership");
const user_count = data.get("user_count");
const { membership, userCount } = data;
const classes = ["room"];
if (membership == "Member") {
@ -21,7 +20,7 @@ const Room = ({ name, data }) => {
className={classes.join(" ")}
>
<span className="room-name">{name}</span>
<span className="room-user-count">({user_count})</span>
<span className="room-user-count">({userCount})</span>
</Link>
);
};


+ 3
- 3
src/containers/RoomsPane.js View File

@ -23,9 +23,9 @@ const RoomsPane = (props) => {
if (roomData) {
const room = {
name: roomName,
membership: roomData.get("membership"),
messages: roomData.get("messages"),
showUsers: roomData.get("showUsers")
membership: roomData.membership,
messages: roomData.messages,
showUsers: roomData.showUsers
};
roomChat = (


+ 24
- 12
src/reducers/rooms.js View File

@ -11,10 +11,19 @@ import {
SOCKET_RECEIVE_MESSAGE
} from "../constants/ActionTypes";
const initialState = OrderedMap();
const RoomRecord = Immutable.Record({
membership: "",
visibility: "",
operated: false,
userCount: 0,
owner: "",
operators: Immutable.Map(),
members: Immutable.Map(),
messages: Immutable.List(),
tickers: Immutable.List()
});
const reduceRoomList = (state, roomList) => {
};
const initialState = OrderedMap();
const reduceReceiveMessageRoom = (roomData, { variant, data }) => {
switch (variant) {
@ -27,8 +36,7 @@ const reduceReceiveMessageRoom = (roomData, { variant, data }) => {
case "RoomMessageResponse":
{
const { user_name, message } = data;
const messages = roomData.get("messages")
.push({user_name, message});
const messages = roomData.messages.push({user_name, message});
return roomData.set("messages", messages);
}
}
@ -54,14 +62,18 @@ const reduceReceiveMessage = (state, message) => {
case "RoomListResponse":
return state.updateAll(data.rooms, (newData, oldData) => {
if (oldData) {
// Remove the messages array, we want to overwrite it
// completely.
oldData.remove("messages");
} else {
oldData = Immutable.Map();
if(!oldData) {
oldData = RoomRecord();
}
return oldData.merge(newData);
return oldData
.set("membership", newData.membership)
.set("visibility", newData.visibility)
.set("operated", newData.operated)
.set("userCount", newData.user_count)
.set("owner", newData.owner)
.set("operators", newData.operators)
.set("members", newData.members)
.set("tickers", newData.tickers);
});
default:


Loading…
Cancel
Save