Skip to content

Commit 9c47a71

Browse files
committed
toggle heart double click
1 parent 269f4e2 commit 9c47a71

File tree

3 files changed

+43
-18
lines changed

3 files changed

+43
-18
lines changed

frontend/src/assets/heart.png

7.12 KB
Loading

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
</div>
2424
<MessageBubble
2525
v-bind:loggedInUserId="loggedInUserId"
26-
v-bind:message="message"></MessageBubble>
26+
v-bind:messagePassed="message"></MessageBubble>
2727
</div>
2828
</div>
2929
<form v-on:submit.prevent="sendMessage()" class="send w-full flex items-stretch">
Lines changed: 42 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,36 @@
11
<template>
22
<!-- 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>
3+
<div class="noSelect mt-2 relative">
4+
<img v-if="message.to_id !== loggedInUserId && message.is_liked"
5+
src="../../../assets/heart.png" class="w-6 mr-2 inline-block"
6+
v-on:dblclick="likeMessage(message.id, message.is_liked)">
7+
<h1
8+
v-on:dblclick="likeMessage(message.id, message.is_liked)"
9+
v-bind:class="{
10+
'p-2': true,
11+
'px-4': true,
12+
'cursor-pointer': message.to_id === loggedInUserId,
13+
'inline-block': true,
14+
'max-w-xs': true,
15+
'rounded-t-md': true,
16+
'rounded-br-md': message.to_id === loggedInUserId,
17+
'rounded-bl-md': message.to_id !== loggedInUserId,
18+
'bg-purple-matcha': message.to_id === loggedInUserId,
19+
'bg-green-500': message.to_id !== loggedInUserId,
20+
'text-white-matcha': true}"
21+
>{{message.content}}<span class="block text-xs font-light">{{getDateHoursMinutes(message.timestamp)}}</span></h1>
22+
<img v-if="message.to_id === loggedInUserId && message.is_liked"
23+
src="../../../assets/heart.png" class="w-6 ml-2 inline-block absolute heart"
24+
v-on:dblclick="likeMessage(message.id, message.is_liked)">
25+
</div>
1926
</template>
2027

2128
<script>
2229
export default {
23-
props: ['message', 'loggedInUserId'],
30+
props: ['messagePassed', 'loggedInUserId'],
31+
data: () => ({
32+
message: {},
33+
}),
2434
methods: {
2535
getDateHoursMinutes(timestamp) {
2636
if (!timestamp) {
@@ -31,12 +41,27 @@ export default {
3141
return `${splitByColon[0]}:${splitByColon[1]}`;
3242
},
3343
async likeMessage(id, isLiked) {
44+
if (this.message.to_id !== this.loggedInUserId) {
45+
return;
46+
}
3447
if (!isLiked) {
48+
this.message.is_liked = true;
3549
await this.$http.post(`/messages/like/${id}`);
3650
} else {
51+
this.message.is_liked = false;
3752
await this.$http.post(`/messages/unlike/${id}`);
3853
}
3954
},
4055
},
56+
beforeMount() {
57+
this.message = this.messagePassed;
58+
},
4159
};
4260
</script>
61+
62+
<style>
63+
.heart {
64+
top: 50%;
65+
transform: translateY(-50%);
66+
}
67+
</style>

0 commit comments

Comments
 (0)