forked from AkkomaGang/akkoma-fe
Add missing component code.
This commit is contained in:
parent
fbee80474b
commit
0e51fac2b2
2 changed files with 75 additions and 0 deletions
26
src/components/chat/chat.js
Normal file
26
src/components/chat/chat.js
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
const chat = {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
messages: [],
|
||||||
|
currentMessage: '',
|
||||||
|
socket: this.$store.state.users.socket,
|
||||||
|
channel: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created () {
|
||||||
|
this.channel = this.socket.channel('chat:public')
|
||||||
|
this.channel.on('new_msg', (msg) => {
|
||||||
|
this.messages.push(msg)
|
||||||
|
this.messages = this.messages.slice(-19, 20)
|
||||||
|
})
|
||||||
|
this.channel.join()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
submit(message) {
|
||||||
|
this.channel.push('new_msg', {text: message}, 10000)
|
||||||
|
this.currentMessage = '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default chat;
|
49
src/components/chat/chat.vue
Normal file
49
src/components/chat/chat.vue
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
<template>
|
||||||
|
<div class="chat-panel panel panel-default">
|
||||||
|
<div class="panel-heading timeline-heading base02-background base04">
|
||||||
|
<div class="title">
|
||||||
|
{{$t('chat.title')}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-body base01-background">
|
||||||
|
<div class="chat-window">
|
||||||
|
<div class="chat-message" v-for="message in messages">
|
||||||
|
<span class="chat-avatar">
|
||||||
|
<img :src="message.author.avatar" />
|
||||||
|
{{message.author.username}}:
|
||||||
|
</span>
|
||||||
|
<span class="chat-text">
|
||||||
|
{{message.text}}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="chat-input">
|
||||||
|
<input v-model="currentMessage" type="text" @keyup.enter="submit(currentMessage)">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script src="./chat.js"></script>
|
||||||
|
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.chat-message {
|
||||||
|
padding: 0.2em 0.5em
|
||||||
|
}
|
||||||
|
.chat-avatar {
|
||||||
|
img {
|
||||||
|
height: 32px;
|
||||||
|
width: 32px;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-right: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.chat-input {
|
||||||
|
display: flex;
|
||||||
|
input {
|
||||||
|
flex: auto;
|
||||||
|
margin: 0.5em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in a new issue