Skip to content

Commit b1ccd34

Browse files
committed
Merge branch '355-chat' of github.com:Seluj78/PyMatcha into 355-chat
2 parents 69b79ae + 70d3d79 commit b1ccd34

File tree

3 files changed

+47
-18
lines changed

3 files changed

+47
-18
lines changed

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

Lines changed: 30 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,25 @@
1111
<h1 class="noSelect capitalize opacity-50">←</h1>
1212
</div>
1313
</div>
14-
<div class="messages rounded-md overflow-scroll pt-4 pb-2 w-full">
15-
<div
16-
v-bind:class="{
17-
'flex': true,
18-
'mt-1': true,
19-
'justify-start': message.to_id === loggedInUserId,
20-
'justify-end': message.to_id !== loggedInUserId}"
21-
v-for="message in messages" :key="message.id">
22-
<h1 v-if="message.to_id === loggedInUserId"
23-
class="py-2 px-4 rounded-t-md rounded-br-md bg-purple-matcha text-white-matcha">{{message.content}}</h1>
24-
<h1 v-else
25-
class="py-2 px-4 rounded-t-md rounded-bl-md bg-green-500 text-white-matcha">{{message.content}}</h1>
26-
</div>
14+
<div id="messageBox" v-if="messages" class="messages my-2 break-words rounded-md overflow-scroll w-full">
15+
<h1 v-for="message in messages" :key="message.id"
16+
v-bind:class="{
17+
'py-2': true,
18+
'px-4': true,
19+
'mt-2': true,
20+
'sm:w-48': true,
21+
'lg:w-64': true,
22+
'rounded-t-md': true,
23+
'rounded-br-md': message.to_id === loggedInUserId,
24+
'rounded-bl-md': message.to_id !== loggedInUserId,
25+
'text-left': message.to_id === loggedInUserId,
26+
'text-right': message.to_id !== loggedInUserId,
27+
'mr-auto': message.to_id === loggedInUserId,
28+
'ml-auto': message.to_id !== loggedInUserId,
29+
'bg-purple-matcha': message.to_id === loggedInUserId,
30+
'bg-green-500': message.to_id !== loggedInUserId,
31+
'text-white-matcha': true}"
32+
>{{message.content}}</h1>
2733
</div>
2834
<div class="send w-full flex items-stretch">
2935
<div class="w-10/12 h-full">
@@ -47,7 +53,7 @@ export default {
4753
ChatUser,
4854
},
4955
data: () => ({
50-
messages: [],
56+
messages: null,
5157
user: null,
5258
message: '',
5359
loggedInUserId: null,
@@ -61,6 +67,12 @@ export default {
6167
to_uid: this.user.id.toString(),
6268
content: this.message,
6369
});
70+
this.messages.push({ to_id: this.chatWithUserId, content: this.message });
71+
this.message = '';
72+
this.$nextTick(() => {
73+
const messageBox = document.getElementById('messageBox');
74+
messageBox.scrollTop = messageBox.scrollHeight;
75+
});
6476
},
6577
},
6678
async beforeMount() {
@@ -69,6 +81,10 @@ export default {
6981
const userRequest = await this.$http.get(`/users/${this.chatWithUserId}`);
7082
this.user = userRequest.data;
7183
this.loggedInUserId = this.$store.getters.getLoggedInUser.id;
84+
this.$nextTick(() => {
85+
const messageBox = document.getElementById('messageBox');
86+
messageBox.scrollTop = messageBox.scrollHeight;
87+
});
7288
},
7389
};
7490
</script>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,6 @@ export default {
7171
},
7272
beforeMount() {
7373
this.match = this.message.with_user;
74-
console.log(this.message);
7574
},
7675
};
7776
</script>

frontend/src/views/app/Matches.vue

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,14 +84,28 @@ export default {
8484
fetchingDone: false,
8585
}),
8686
methods: {
87+
async fetchMatch(user1, user2) {
88+
if (this.$store.getters.getLoggedInUser.id === user1) {
89+
const userRequest = await this.$http.get(`/users/${user2}`);
90+
this.matches.push(userRequest.data);
91+
} else {
92+
const userRequest = await this.$http.get(`/users/${user1}`);
93+
this.matches.push(userRequest.data);
94+
}
95+
},
8796
async fetchMatches() {
8897
const matchesRequest = await this.$http.get('/matches');
8998
const { matches } = matchesRequest.data;
99+
if (!this.messages.length) {
100+
for (let i = 0; i < matches.length; i += 1) {
101+
await this.fetchMatch(matches[i].user_1, matches[i].user_2);
102+
}
103+
return;
104+
}
90105
for (let i = 0; i < matches.length; i += 1) {
91106
for (let j = 0; j < this.messages.length; j += 1) {
92-
if (this.messages[j].length && this.messages[j][0].to_id !== matches[i].user_1) {
93-
const userRequest = await this.$http.get(`/users/${matches[i].user_1}`);
94-
this.matches.push(userRequest.data);
107+
if (this.messages[j].with_user.id !== matches[i].user_1 && this.messages[j].with_user.id !== matches[i].user_2) {
108+
await this.fetchMatch(matches[i].user_1, matches[i].user_2);
95109
}
96110
}
97111
}

0 commit comments

Comments
 (0)