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