Skip to content

Commit debf6fe

Browse files
committed
like buttons calling backend
1 parent 40e879a commit debf6fe

File tree

2 files changed

+41
-8
lines changed

2 files changed

+41
-8
lines changed

frontend/src/components/app/users/LikeButton.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
/* eslint-disable max-len */
1717
1818
export default {
19-
props: ['startImage', 'hoverImage', 'clickedImage', 'text', 'textRevert', 'description'],
19+
props: ['name', 'startImage', 'hoverImage', 'clickedImage', 'text', 'textRevert', 'description'],
2020
data: () => ({
2121
hover: false,
2222
clicked: false,
@@ -25,9 +25,9 @@ export default {
2525
toggle() {
2626
this.clicked = !this.clicked;
2727
if (this.clicked) {
28-
this.$emit('clicked');
28+
this.$emit('clicked', this.name);
2929
} else {
30-
this.$emit('revert');
30+
this.$emit('revert', this.name);
3131
}
3232
},
3333
},

frontend/src/components/app/users/UserProfile.vue

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<div class="profileContainer">
44
<div id="sliderScoreContainer" class="text-center w-full rounded-lt-md heatScore relative h-6">
55
<div id="sliderScore" class="bg-purple-matcha absolute top-0 flex flex-col items-center justify-center h-12 w-auto rounded-b-md">
6-
<h1 class="text-white-matcha px-2"><span class="font-bold">{{user.heat_score}}</span> likes</h1>
6+
<h1 class="text-white-matcha px-2"><span class="font-bold">{{getHeatScore}}</span> likes</h1>
77
</div>
88
</div>
99
<div class="text-center text-wrap p-8 mt-4 border-b">
@@ -35,24 +35,26 @@
3535
<div class="text-center flex flex-col mx-auto p-8 border-b">
3636
<LikeButton
3737
v-if="!likeButtons.superLikeClicked"
38+
v-bind:name="'like'"
3839
v-bind:startImage="likeImage"
3940
v-bind:hoverImage="likeImageHover"
4041
v-bind:clickedImage="likeImageClicked"
4142
v-bind:text="'Like'"
4243
v-bind:textRevert="'Unlike'"
43-
v-on:clicked="likeButtons.likeClicked = true"
44-
v-on:revert="likeButtons.likeClicked = false"></LikeButton>
44+
v-on:clicked="buttonClicked"
45+
v-on:revert="buttonRevert"></LikeButton>
4546
<LikeButton
4647
v-if="!likeButtons.likeClicked && superLikesLeft()"
48+
v-bind:name="'superLike'"
4749
v-bind:class="{'mt-8': !likeButtons.superLikeClicked}"
4850
v-bind:startImage="superLikeImage"
4951
v-bind:hoverImage="superLikeImageHover"
5052
v-bind:clickedImage="superLikeImageClicked"
5153
v-bind:text="'Super Like'"
5254
v-bind:textRevert="'Unlike'"
5355
v-bind:description="`Worth 10 likes, and ${user.first_name} sees your extra interest`"
54-
v-on:clicked="likeButtons.superLikeClicked = true"
55-
v-on:revert="likeButtons.superLikeClicked = false"></LikeButton>
56+
v-on:clicked="buttonClicked"
57+
v-on:revert="buttonRevert"></LikeButton>
5658
</div>
5759
<div class="text-center p-8 border-b relative">
5860
<DropdownDisplayChoice
@@ -124,12 +126,43 @@ export default {
124126
superLikesLeft() {
125127
return true;
126128
},
129+
async buttonClicked(...args) {
130+
const [name] = args;
131+
if (name === 'like') {
132+
await this.$http.post(`/like/${this.user.id}`, { is_superlike: false });
133+
this.likeButtons.likeClicked = true;
134+
} else if (name === 'superLike') {
135+
await this.$http.post(`/like/${this.user.id}`, { is_superlike: true });
136+
this.likeButtons.superLikeClicked = true;
137+
}
138+
},
139+
async buttonRevert(...args) {
140+
const [name] = args;
141+
if (name === 'like') {
142+
await this.$http.post(`/unlike/${this.user.id}`, { is_superlike: false });
143+
this.likeButtons.likeClicked = false;
144+
} else if (name === 'superLike') {
145+
await this.$http.post(`/unlike/${this.user.id}`, { is_superlike: true });
146+
this.likeButtons.superLikeClicked = false;
147+
}
148+
},
127149
saveSingleChoice(...args) {
128150
const [key, value] = args;
129151
console.log(key);
130152
console.log(value);
131153
},
132154
},
155+
computed: {
156+
getHeatScore() {
157+
if (this.likeButtons.likeClicked) {
158+
return this.user.heat_score + 1;
159+
}
160+
if (this.likeButtons.superLikeClicked) {
161+
return this.user.heat_score + 10;
162+
}
163+
return this.user.heat_score;
164+
},
165+
},
133166
async beforeMount() {
134167
const sliderRangesRequest = await this.$http.get('/search/values');
135168
const maxScore = sliderRangesRequest.data.search_minmax.max_score;

0 commit comments

Comments
 (0)