Skip to content

Commit 41999b2

Browse files
committed
Added ChatRoomEditor to ChatRoomList
1 parent dc374b5 commit 41999b2

File tree

6 files changed

+49
-9
lines changed

6 files changed

+49
-9
lines changed

src/app/chatroom/editor/ChatRoomEditor.js

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,38 @@
11
import React, { Component } from 'react'
22
import ChatRoomEditorModal from './ChatRoomEditorModal';
3-
import {connect} from 'react-redux';
3+
import { connect } from 'react-redux';
4+
import { getUserRoomRight } from './ChatRoomEditorAPI';
5+
import settingIcon from './assets/settings.svg';
46

57
class ChatRoomEditor extends Component {
6-
constructor(props){
8+
constructor(props) {
79
super(props);
10+
this.state = {
11+
isUserAbleToEdit: false
12+
}
813
}
9-
14+
15+
componentDidMount() {
16+
this.checkIfUserIsAbleToEdit();
17+
}
18+
19+
checkIfUserIsAbleToEdit() {
20+
getUserRoomRight(this.props.chatRoomId).then(responseJson => {
21+
if (responseJson.rightLevel === 'OWNER') {
22+
this.setState({ isUserAbleToEdit: true });
23+
}
24+
})
25+
}
26+
1027
render() {
28+
let editTrigger;
29+
if (this.state.isUserAbleToEdit)
30+
editTrigger = <img src={settingIcon} onClick={() => { this.refs.modal.getWrappedInstance().toggle() }} />
31+
1132
return (
12-
<div>
13-
<ChatRoomEditorModal ref='modal' chatRoomId={this.props.chatRoomId}/>
14-
<button type="button" class="btn btn-primary" onClick={() => { this.refs.modal.getWrappedInstance().toggle() }}>Edit</button>
33+
<div className="float-right">
34+
<ChatRoomEditorModal ref='modal' chatRoomId={this.props.chatRoomId} />
35+
{editTrigger}
1536
</div>
1637
)
1738
}

src/app/chatroom/editor/ChatRoomEditorAPI.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,15 @@ export const editChatRoom = async (id, name, description) => {
1818
}).then(jsonResponse => {
1919
return jsonResponse;
2020
})
21+
}
22+
23+
export const getUserRoomRight = async (roomId) => {
24+
return fetch(appConfig.apiUrl + 'secure/user/role?roomId=' + roomId, {
25+
method: 'GET',
26+
headers: {
27+
'Authorization': Cookies.get('Authorization')
28+
}
29+
}).then(response => {
30+
return response.json();
31+
})
2132
}
Lines changed: 1 addition & 0 deletions
Loading

src/app/chatroom/join/ChatRoomJoinModal.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,10 @@ class ChatRoomJoinModal extends Component {
9494
}
9595

9696
prepareEachChatRoomForDisplay() {
97+
if(this.state.roomList.length === 0){
98+
return (<div>Well there is not rooms you can join at this momement, you might consider creating your own room!</div>)
99+
}
100+
97101
return this.state.roomList.map((chatRoom) => {
98102
let isUserMemberOfThisRoom = this.isUserMemberOfThisChatRoom(chatRoom.id);
99103

src/app/chatroom/join/ChatRoomJoinStyle.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
.chat-room-list{
66
height: 320px;
77
overflow: auto;
8+
border: solid 1px rgba(0, 0, 0, 0.12) ;
89
}

src/app/chatroom/list/ChatRoomList.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ class ChatRoomList extends React.Component {
3030
displayList() {
3131
return this.props.chatRooms.map((chatRoom) =>
3232
<div key={chatRoom.id} onClick={() => { this.props.selectChatRoom(chatRoom.id) }} className="room">
33+
<ChatRoomEditor chatRoomId={chatRoom.id} />
34+
3335
{chatRoom.name}
3436
</div>
3537
)
@@ -41,14 +43,14 @@ class ChatRoomList extends React.Component {
4143
<div className="site-logo"><h2>ReactChat</h2></div>
4244
<h5 className="public-category">Public:</h5>
4345
<div className="room-list d-flex flex-fill flex-column flex-grow-1">
44-
46+
4547
{this.displayList()}
4648
</div>
4749
<div className="d-flex flex-shrink-1 button-bar">
4850
<ChatRoomCreator />
49-
<div className="divider"/>
51+
<div className="divider" />
5052
<ChatRoomJoin />
51-
<div className="divider"/>
53+
<div className="divider" />
5254
<LogoutButton />
5355
</div>
5456
</div>

0 commit comments

Comments
 (0)