Skip to content

Commit 269f4e2

Browse files
committed
chat message component
1 parent bb06236 commit 269f4e2

File tree

2 files changed

+47
-19
lines changed

2 files changed

+47
-19
lines changed

frontend/src/components/app/matches/Chat.vue

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,9 @@
2121
<h1
2222
class="text-xs font-light inline-block rounded-md bg-gray-200 px-2 py-1">{{message.timestamp_ago}}</h1>
2323
</div>
24-
<h1
25-
v-bind:class="{
26-
'p-2': true,
27-
'px-4': true,
28-
'mt-2': true,
29-
'inline-block': true,
30-
'max-w-xs': true,
31-
'rounded-t-md': true,
32-
'rounded-br-md': message.to_id === loggedInUserId,
33-
'rounded-bl-md': message.to_id !== loggedInUserId,
34-
'bg-purple-matcha': message.to_id === loggedInUserId,
35-
'bg-green-500': message.to_id !== loggedInUserId,
36-
'text-white-matcha': true}"
37-
>{{message.content}}<span class="block text-xs font-light">{{getDateHoursMinutes(message.timestamp)}}</span></h1>
24+
<MessageBubble
25+
v-bind:loggedInUserId="loggedInUserId"
26+
v-bind:message="message"></MessageBubble>
3827
</div>
3928
</div>
4029
<form v-on:submit.prevent="sendMessage()" class="send w-full flex items-stretch">
@@ -52,11 +41,13 @@
5241
<script>
5342
/* eslint-disable no-param-reassign */
5443
import ChatUser from '@/components/app/matches/ChatUser.vue';
44+
import MessageBubble from '@/components/app/matches/MessageBubble.vue';
5545
5646
export default {
5747
props: ['chatWithUserId'],
5848
components: {
5949
ChatUser,
50+
MessageBubble,
6051
},
6152
data: () => ({
6253
messages: null,
@@ -67,11 +58,6 @@ export default {
6758
latestMessagesDate: null,
6859
}),
6960
methods: {
70-
getDateHoursMinutes(timestamp) {
71-
const splitBySpace = timestamp.split(' ');
72-
const splitByColon = splitBySpace[4].split(':');
73-
return `${splitByColon[0]}:${splitByColon[1]}`;
74-
},
7561
determineFirstMessagesOfTimespans(messages) {
7662
const len = messages.length;
7763
for (let i = 0; i < len; i += 1) {
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<template>
2+
<!-- eslint-disable max-len -->
3+
<h1
4+
v-on:dblclick="likeMessage(message.id, message.is_liked)"
5+
v-bind:class="{
6+
'p-2': true,
7+
'px-4': true,
8+
'mt-2': true,
9+
'cursor-pointer': true,
10+
'inline-block': true,
11+
'max-w-xs': true,
12+
'rounded-t-md': true,
13+
'rounded-br-md': message.to_id === loggedInUserId,
14+
'rounded-bl-md': message.to_id !== loggedInUserId,
15+
'bg-purple-matcha': message.to_id === loggedInUserId,
16+
'bg-green-500': message.to_id !== loggedInUserId,
17+
'text-white-matcha': true}"
18+
>{{message.content}}<span class="block text-xs font-light">{{getDateHoursMinutes(message.timestamp)}}</span></h1>
19+
</template>
20+
21+
<script>
22+
export default {
23+
props: ['message', 'loggedInUserId'],
24+
methods: {
25+
getDateHoursMinutes(timestamp) {
26+
if (!timestamp) {
27+
return '';
28+
}
29+
const splitBySpace = timestamp.split(' ');
30+
const splitByColon = splitBySpace[4].split(':');
31+
return `${splitByColon[0]}:${splitByColon[1]}`;
32+
},
33+
async likeMessage(id, isLiked) {
34+
if (!isLiked) {
35+
await this.$http.post(`/messages/like/${id}`);
36+
} else {
37+
await this.$http.post(`/messages/unlike/${id}`);
38+
}
39+
},
40+
},
41+
};
42+
</script>

0 commit comments

Comments
 (0)