|
|
@ -1,39 +1,45 @@ |
|
|
import React, { PropTypes } from "react"; |
|
|
import React, { PropTypes } from "react"; |
|
|
import ImmutablePropTypes from "react-immutable-proptypes"; |
|
|
import ImmutablePropTypes from "react-immutable-proptypes"; |
|
|
|
|
|
|
|
|
const ID = "room-chat-header"; |
|
|
|
|
|
|
|
|
const make_header = (title, button) => ( |
|
|
|
|
|
<div id="room-chat-header"> |
|
|
|
|
|
<div id="room-chat-header-title">{title}</div> |
|
|
|
|
|
{button} |
|
|
|
|
|
</div> |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
const RoomChatHeader = ({ membership, room_name, roomActions }) => { |
|
|
|
|
|
switch (membership) { |
|
|
|
|
|
|
|
|
const RoomChatHeader = ({ room, roomActions }) => { |
|
|
|
|
|
if (!room) { |
|
|
|
|
|
return make_header("Select a room"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
switch (room.membership) { |
|
|
case "Member": |
|
|
case "Member": |
|
|
{ |
|
|
{ |
|
|
const onClick = (event) => { |
|
|
const onClick = (event) => { |
|
|
roomActions.leave(room_name); |
|
|
|
|
|
roomActions.select(null); |
|
|
roomActions.select(null); |
|
|
event.preventDefault(); |
|
|
|
|
|
|
|
|
roomActions.leave(room.name); |
|
|
}; |
|
|
}; |
|
|
return ( |
|
|
|
|
|
<div id={ID}> |
|
|
|
|
|
{room_name} |
|
|
|
|
|
<button onClick={onClick}>Leave</button> |
|
|
|
|
|
</div> |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
const button = <button onClick={onClick}>Leave</button>; |
|
|
|
|
|
return make_header(room.name, button); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
case "NonMember": |
|
|
case "NonMember": |
|
|
return <div id={ID}>Not a member of {room_name}</div>; |
|
|
|
|
|
|
|
|
return make_header(`Not a member of ${room.name}`); |
|
|
|
|
|
|
|
|
case "Joining": |
|
|
case "Joining": |
|
|
return <div id={ID}>Joining {room_name}</div>; |
|
|
|
|
|
|
|
|
return make_header(`Joining ${room.name}`); |
|
|
|
|
|
|
|
|
case "Leaving": |
|
|
case "Leaving": |
|
|
return <div id={ID}>Leaving {room_name}</div>; |
|
|
|
|
|
|
|
|
return make_header(`Leaving ${room.name}`); |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
RoomChatHeader.propTypes = { |
|
|
RoomChatHeader.propTypes = { |
|
|
membership: PropTypes.string.isRequired, |
|
|
|
|
|
room_name: PropTypes.string.isRequired, |
|
|
|
|
|
|
|
|
room: PropTypes.shape({ |
|
|
|
|
|
membership: PropTypes.string.isRequired, |
|
|
|
|
|
name: PropTypes.string.isRequired |
|
|
|
|
|
}), |
|
|
roomActions: PropTypes.shape({ |
|
|
roomActions: PropTypes.shape({ |
|
|
leave: PropTypes.func.isRequired, |
|
|
leave: PropTypes.func.isRequired, |
|
|
select: PropTypes.func.isRequired |
|
|
select: PropTypes.func.isRequired |
|
|
|