sending basic replies

master
f0x 5 years ago
parent 711c324f30
commit c2dfaa3f40

@ -56,6 +56,10 @@ let chat = create({
} }
}, },
onReplyClick: function(e) {
this.setState({replyEvent: e})
},
render: function() { render: function() {
let empty = ( let empty = (
<div className="main"> <div className="main">
@ -100,7 +104,7 @@ let chat = create({
messageGroups.groups.push(messageGroups.current) messageGroups.groups.push(messageGroups.current)
events = messageGroups.groups.map((events, id) => { events = messageGroups.groups.map((events, id) => {
return <EventGroup key={`${this.props.roomId}-${id}`} events={events} client={this.props.client} room={room}/> return <EventGroup key={`${this.props.roomId}-${id}`} events={events} client={this.props.client} room={room} onReplyClick={this.onReplyClick}/>
}) })
} }
//TODO: replace with something that only renders events in view //TODO: replace with something that only renders events in view
@ -112,7 +116,7 @@ let chat = create({
{events} {events}
</div> </div>
</div> </div>
<Input client={this.props.client} roomId={this.props.roomId}/> <Input client={this.props.client} roomId={this.props.roomId} replyEvent={this.state.replyEvent} onReplyClick={this.onReplyClick}/>
</div> </div>
) )
} }
@ -146,7 +150,7 @@ let EventGroup = create({
render: function() { render: function() {
let events = this.props.events.map((event, key) => { let events = this.props.events.map((event, key) => {
return <Event event={event} key={key} client={this.props.client} room={this.props.room} /> return <Event event={event} key={key} client={this.props.client} room={this.props.room} onReplyClick={this.props.onReplyClick}/>
}) })
return <div className="eventGroup"> return <div className="eventGroup">
{this.state.avatar} {this.state.avatar}

@ -63,8 +63,7 @@ let Event = create({
} }
return ( return (
<div className={"event" + state} onClick={() => {console.log(parsedBody, event) <div className={"event" + state} onClick={() => {this.props.onReplyClick(event)}}>
}}>
{reply} {reply}
{element} {element}
</div> </div>

@ -71,6 +71,7 @@ let input = create({
body: string, body: string,
msgtype: "m.text" msgtype: "m.text"
} }
content = this.sendReply(content)
this.props.client.sendEvent(this.props.roomId, "m.room.message", content, (err, res) => { this.props.client.sendEvent(this.props.roomId, "m.room.message", content, (err, res) => {
console.log(err) console.log(err)
}) })
@ -83,13 +84,33 @@ let input = create({
format: "org.matrix.custom.html", format: "org.matrix.custom.html",
msgtype: "m.text" msgtype: "m.text"
} }
content = this.sendReply(content)
this.props.client.sendEvent(this.props.roomId, "m.room.message", content, (err, res) => { this.props.client.sendEvent(this.props.roomId, "m.room.message", content, (err, res) => {
console.log(err) console.log(err)
}) })
}, },
sendReply: function(content) {
if (this.props.replyEvent != undefined) {
content['m.relates_to'] = {
'm.in_reply_to': {
event_id: this.props.replyEvent.event_id
}
}
this.props.onReplyClick()
}
return content
},
render: function() { render: function() {
return <div className="input"> return <div className="input">
{this.props.replyEvent &&
<div className="replyEvent">
{this.props.replyEvent.content.body}
</div>
}
<textarea ref={this.setRef} rows="1" spellCheck="false" placeholder="unencrypted message"></textarea> <textarea ref={this.setRef} rows="1" spellCheck="false" placeholder="unencrypted message"></textarea>
</div> </div>
} }

@ -361,8 +361,18 @@ body {
.input { .input {
display: flex; display: flex;
flex-direction: column;
border-top: $borderwidth solid transparent; border-top: $borderwidth solid transparent;
.replyEvent {
border-bottom: $borderwidth/2 solid $bg3;
padding: $spacing/2 $spacing;
max-width: 100%;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
textarea { textarea {
background: transparent; background: transparent;
box-sizing: border-box; box-sizing: border-box;

Loading…
Cancel
Save