Skip to content

Commit dae6df1

Browse files
authored
Merge pull request #159 from Detaysoft/meeting-link
meetingLink added
2 parents ebfb4e8 + 993ca37 commit dae6df1

File tree

10 files changed

+2200
-1539
lines changed

10 files changed

+2200
-1539
lines changed

README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ import { MessageBox } from 'react-chat-elements/native';
6262
14. [SpotifyMessage](#spotifymessage-component)
6363
15. [MeetingItem](#meetingitem-component)
6464
16. [MeetingList](#meetinglist-component)
65+
17. [MeetingLink](#meetinglink-component)
6566

6667
## ChatItem Component
6768

@@ -154,6 +155,7 @@ import { MessageBox } from 'react-chat-elements'
154155
| onReplyMessageClick | none | function | reply message on click event |
155156
| onRemoveMessageClick | none | function | message remove on click event |
156157
| onMeetingMoreSelect | none | function | message list item onMeetingMoreSelect event, gets 3 parameters: message item, index of item, event |
158+
| onMeetingLinkClick | none | function | meeting link on click event |
157159
| onContextMenu | none | function | message contextmenu click event |
158160
| forwarded | none | boolean | message forward icon |
159161
| replyButton | none | boolean | message reply icon |
@@ -251,6 +253,26 @@ import { MeetingMessage } from 'react-chat-elements'
251253
| onMeetingVideoLinkClick | none | function | meeting video link message on click event (message(object) is returned) |
252254
| onMeetingMoreSelect | none | function | message list item onMeetingMoreSelect event, gets 3 parameters: message item, index of item, event |
253255

256+
257+
## MeetingLink Component
258+
259+
![meetinglink-photo](https://user-images.githubusercontent.com/53093667/152175228-4fcb5d83-8a54-4378-8cb3-c85f939e510f.png)
260+
261+
```javascript
262+
import { MeetingLink } from 'react-chat-elements'
263+
<MeetingLink
264+
meetingID='1'
265+
title='Lorem ipsum dolor sit amet.'/>
266+
```
267+
268+
#### MeetingLink props
269+
270+
| prop | default | type | description |
271+
| ---- | ---- | ---- | ---- |
272+
| meetingID | none | string | Meeting Link id |
273+
| title | none | string | Meeting Link title |
274+
| onMeetingLinkClick | none | function | meeting link on click event |
275+
254276
## SystemMessage Component
255277

256278
```javascript

example/App.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export class App extends Component {
4343
}
4444

4545
UNSAFE_componentWillMount() {
46-
this.addMessage(7)
46+
this.addMessage(8)
4747
}
4848

4949
getRandomColor() {
@@ -100,6 +100,9 @@ export class App extends Component {
100100
case 7:
101101
mtype = 'audio';
102102
break;
103+
case 8:
104+
mtype = 'meetingLink';
105+
break;
103106
default:
104107
mtype = 'text';
105108
status = 'read';

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
"jest": "21.2.1",
2323
"lorem-ipsum": "^1.0.4",
2424
"nwb": "^0.23.0",
25-
"react": "16.0.0-beta.5",
25+
"react": "^17.0.2",
2626
"react-dom": "^16.3.0",
2727
"react-native": "0.49.5",
2828
"react-scripts": "^1.0.10",
29-
"react-test-renderer": "16.0.0-beta.5",
29+
"react-test-renderer": "^17.0.2",
3030
"webpack-cli": "^3.3.0",
3131
"webpack-node-externals": "^1.6.0"
3232
},

src/MeetingLink/MeetingLink.css

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
.rce-mtlink {
2+
padding-bottom: 15px;
3+
min-width: 400px;
4+
}
5+
6+
.rce-mtlink-content {
7+
background-color: #e2dfec;
8+
border-radius: 100px;
9+
padding: 10px;
10+
display: flex;
11+
align-items: center;
12+
justify-content: space-between;
13+
overflow: hidden;
14+
}
15+
16+
.rce-mtlink-item {
17+
color: #6c687c;
18+
display: flex;
19+
align-items: center;
20+
user-select: none;
21+
max-width: 100%;
22+
overflow: hidden;
23+
min-width: 240px;
24+
justify-content: flex-start;
25+
}
26+
27+
.rce-mtlink-title {
28+
color: #07030a;
29+
padding-left: 7px;
30+
font-size: 15px;
31+
}
32+
33+
.rce-mtlink-btn {
34+
background: #ededed;
35+
border-radius: 50%;
36+
margin-left: 15px;
37+
display: flex;
38+
padding: 7px;
39+
cursor: pointer;
40+
}
41+
42+
.rce-mtlink-svg {
43+
color: #585858;
44+
font-size: 16px;
45+
}

src/MeetingLink/MeetingLink.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React from 'react';
2+
import './MeetingLink.css';
3+
4+
import MdOutlineVideoCameraFront from 'react-icons/lib/md/video-call';
5+
6+
function MeetingLink({meetingID, title, onMeetingMoreSelect}) {
7+
const onHandleClick = () => {
8+
onMeetingMoreSelect(meetingID);
9+
}
10+
11+
return (
12+
<div className='rce-mtlink'>
13+
<div className='rce-mtlink-content'>
14+
<div className='rce-mtlink-item'>
15+
<div className='rce-mtlink-title'>
16+
{title}
17+
</div>
18+
</div>
19+
<div className='rce-mtlink-btn' onClick={onHandleClick}>
20+
<MdOutlineVideoCameraFront className='rce-mtlink-svg'/>
21+
</div>
22+
</div>
23+
</div>
24+
);
25+
}
26+
27+
MeetingLink.defaultProps = {
28+
meetingID: '',
29+
title: '',
30+
onMeetingMoreSelect: () => void(0),
31+
};
32+
33+
export default MeetingLink;
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import React, { Component } from 'react';
2+
import { shallow } from 'enzyme';
3+
import toJson from 'enzyme-to-json';
4+
import MeetingLink from '../MeetingLink';
5+
6+
describe('MeetingLink component', () => {
7+
it('should render without issues', () => {
8+
const component = shallow(<MeetingLink status='read'/>);
9+
10+
expect(component.length).toBe(1);
11+
expect(toJson(component)).toMatchSnapshot();
12+
});
13+
});
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`MeetingLink component should render without issues 1`] = `
4+
<div
5+
className="rce-mtlink"
6+
>
7+
<div
8+
className="rce-mtlink-content"
9+
>
10+
<div
11+
className="rce-mtlink-item"
12+
>
13+
<div
14+
className="rce-mtlink-title"
15+
/>
16+
</div>
17+
<div
18+
className="rce-mtlink-btn"
19+
onClick={[Function]}
20+
>
21+
<MdVideoCall
22+
className="rce-mtlink-svg"
23+
/>
24+
</div>
25+
</div>
26+
</div>
27+
`;

src/MessageBox/MessageBox.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import ReplyMessage from '../ReplyMessage/ReplyMessage';
1010
import MeetingMessage from '../MeetingMessage/MeetingMessage';
1111
import VideoMessage from '../VideoMessage/VideoMessage';
1212
import AudioMessage from '../AudioMessage/AudioMessage';
13+
import MeetingLink from '../MeetingLink/MeetingLink';
1314

1415
import Avatar from '../Avatar/Avatar';
1516

@@ -258,6 +259,14 @@ export class MessageBox extends React.PureComponent {
258259
text={this.props.text} />
259260
}
260261

262+
{
263+
this.props.type === 'meetingLink' &&
264+
<MeetingLink
265+
meetingID={this.props.meetingID}
266+
title={this.props.text}
267+
onMeetingMoreSelect={this.props.onMeetingLinkClick}/>
268+
}
269+
261270
<div
262271
className={classNames(
263272
'rce-mbox-time',

src/MessageList/MessageList.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,11 @@ export class MessageList extends Component {
155155
this.props.onMeetingMoreSelect(item, i, e);
156156
}
157157

158+
onMeetingLinkClick(item, i, e) {
159+
if (this.props.onMeetingLinkClick instanceof Function)
160+
this.props.onMeetingLinkClick(item, i, e);
161+
}
162+
158163
render() {
159164
return (
160165
<div
@@ -183,6 +188,7 @@ export class MessageList extends Component {
183188
onMeetingMessageClick={this.props.onMeetingMessageClick && ((e) => this.onMeetingMessageClick(x, i, e))}
184189
onMeetingTitleClick={this.props.onMeetingTitleClick}
185190
onMeetingVideoLinkClick={this.props.onMeetingVideoLinkClick}
191+
onMeetingLinkClick={this.props.onMeetingLinkClick && ((e) => this.onMeetingLinkClick(x, i, e))}
186192
/>
187193
))
188194
}

0 commit comments

Comments
 (0)