mirror of
https://github.com/danbulant/Nertivia-Client
synced 2026-06-24 17:11:43 +00:00
modified embeds and added a proxy for images.
This commit is contained in:
parent
97db89eeb2
commit
5d1f101019
6 changed files with 107 additions and 17 deletions
|
|
@ -20,6 +20,7 @@
|
||||||
:uniqueID="msg.creator.uniqueID"
|
:uniqueID="msg.creator.uniqueID"
|
||||||
:avatar="msg.creator.avatar"
|
:avatar="msg.creator.avatar"
|
||||||
:message="msg.message"
|
:message="msg.message"
|
||||||
|
:embed="msg.embed"
|
||||||
:files="msg.files"
|
:files="msg.files"
|
||||||
:status="msg.status"
|
:status="msg.status"
|
||||||
:type="msg.type"
|
:type="msg.type"
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,7 @@
|
||||||
@click="imageClicked"
|
@click="imageClicked"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
|
<message-embed-template v-if="embed" :embed="embed"/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="sending-status"
|
class="sending-status"
|
||||||
|
|
@ -94,6 +95,7 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import ProfilePicture from "@/components/ProfilePictureTemplate.vue";
|
import ProfilePicture from "@/components/ProfilePictureTemplate.vue";
|
||||||
|
import messageEmbedTemplate from "./messageEmbedTemplate";
|
||||||
import messageFormatter from "@/utils/messageFormatter.js";
|
import messageFormatter from "@/utils/messageFormatter.js";
|
||||||
import config from "@/config.js";
|
import config from "@/config.js";
|
||||||
import friendlyDate from "@/utils/date";
|
import friendlyDate from "@/utils/date";
|
||||||
|
|
@ -103,7 +105,8 @@ import { mapState } from "vuex";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
ProfilePicture
|
ProfilePicture,
|
||||||
|
messageEmbedTemplate
|
||||||
},
|
},
|
||||||
props: [
|
props: [
|
||||||
"message",
|
"message",
|
||||||
|
|
@ -114,7 +117,8 @@ export default {
|
||||||
"uniqueID",
|
"uniqueID",
|
||||||
"files",
|
"files",
|
||||||
"admin",
|
"admin",
|
||||||
"type"
|
"type",
|
||||||
|
"embed"
|
||||||
],
|
],
|
||||||
methods: {
|
methods: {
|
||||||
openUserInformation() {
|
openUserInformation() {
|
||||||
|
|
@ -126,12 +130,6 @@ export default {
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState("settingsModule", ["apperance"]),
|
...mapState("settingsModule", ["apperance"]),
|
||||||
getLinks(){
|
|
||||||
const message = this.$props['message']
|
|
||||||
if (!message) return [];
|
|
||||||
console.log(message.match(/(https?:\/\/[^\s]+)/g) || [])
|
|
||||||
return "LOL"
|
|
||||||
},
|
|
||||||
getImage() {
|
getImage() {
|
||||||
if (!this.$props.files || this.$props.files.length === 0)
|
if (!this.$props.files || this.$props.files.length === 0)
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
@ -381,7 +379,7 @@ export default {
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.msg-link {
|
.msg-link {
|
||||||
color: rgb(50, 138, 253);
|
color: rgb(86, 159, 253);
|
||||||
}
|
}
|
||||||
.message .sending-status .material-icons {
|
.message .sending-status .material-icons {
|
||||||
font-size: 15px;
|
font-size: 15px;
|
||||||
|
|
|
||||||
|
|
@ -28,17 +28,17 @@
|
||||||
key="add-server"
|
key="add-server"
|
||||||
class="content"
|
class="content"
|
||||||
>
|
>
|
||||||
<div class="title">
|
<!-- <div class="title">
|
||||||
Set your server's avatar
|
Set your server's avatar
|
||||||
</div>
|
</div> -->
|
||||||
<profile-picture
|
<profile-picture
|
||||||
class="avatar"
|
class="avatar"
|
||||||
size="90px"
|
size="90px"
|
||||||
:url="tempImage"
|
:url="tempImage"
|
||||||
/>
|
/>
|
||||||
<div class="button">
|
<!-- <div class="button">
|
||||||
Browse Avatar Coming Soon!
|
Browse Avatar Coming Soon!
|
||||||
</div>
|
</div> -->
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<div class="input-name">
|
<div class="input-name">
|
||||||
Server Name
|
Server Name
|
||||||
|
|
|
||||||
76
src/components/app/messageEmbedTemplate.vue
Normal file
76
src/components/app/messageEmbedTemplate.vue
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
<template>
|
||||||
|
<div class="embed" :class="{article: embed.type === 'article' || embed.type === 'video.other'}">
|
||||||
|
<div class="right">
|
||||||
|
<div class="image"><img v-if="embed.image" :src="`//images.weserv.nl/?url=${embed.image}`" alt=""></div>
|
||||||
|
</div>
|
||||||
|
<div class="left">
|
||||||
|
<div class="title" v-if="embed.url"><a target=”_blank” :href="embed.url">{{embed.title}}</a></div>
|
||||||
|
<div class="title" v-else>{{embed.title}}</div>
|
||||||
|
<div class="description">{{embed.description}}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: ["embed"]
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.embed{
|
||||||
|
background: rgba(0, 0, 0, 0.507);
|
||||||
|
border-radius: 10px;
|
||||||
|
padding: 5px;
|
||||||
|
display: flex;
|
||||||
|
max-width: 500px;
|
||||||
|
min-width: 200px;
|
||||||
|
align-self: flex-start;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
.embed.article {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.article .left {
|
||||||
|
order: 1;
|
||||||
|
}
|
||||||
|
.article .right {
|
||||||
|
order: 2;
|
||||||
|
}
|
||||||
|
.article .image img {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
margin-top: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
.description {
|
||||||
|
font-size: 14px;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
.image img {
|
||||||
|
width: auto;
|
||||||
|
height: 100px;
|
||||||
|
border-radius: 5px;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
.image {
|
||||||
|
display: flex;
|
||||||
|
margin-right: 10px;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: rgb(86, 159, 253);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
@ -61,7 +61,6 @@ const actions = {
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
messages(context, data) {
|
messages(context, data) {
|
||||||
context.commit("messages", data);
|
context.commit("messages", data);
|
||||||
},
|
},
|
||||||
|
|
@ -77,6 +76,17 @@ const actions = {
|
||||||
},
|
},
|
||||||
replaceMessage(context, data) {
|
replaceMessage(context, data) {
|
||||||
context.commit("replaceMessage", data);
|
context.commit("replaceMessage", data);
|
||||||
|
},
|
||||||
|
updateMessage(context, {channelID, messageID, message}) {
|
||||||
|
console.log(message)
|
||||||
|
const messages = context.state.messages[channelID];
|
||||||
|
messages.find((obj, index) => {
|
||||||
|
if (obj.messageID === messageID){
|
||||||
|
const newObj = Object.assign({}, obj, message);
|
||||||
|
context.commit('updateMessage', {message: newObj, index});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -101,6 +111,10 @@ async function getMessages(context, channelID, isServerChannel) {
|
||||||
|
|
||||||
|
|
||||||
const mutations = {
|
const mutations = {
|
||||||
|
updateMessage(state, {message, index}) {
|
||||||
|
console.log(message);
|
||||||
|
Vue.set(state.messages[message.channelID], index, message);
|
||||||
|
},
|
||||||
messages(state, data) {
|
messages(state, data) {
|
||||||
Vue.set(state.messages, data.channelID, data.messages);
|
Vue.set(state.messages, data.channelID, data.messages);
|
||||||
},
|
},
|
||||||
|
|
@ -112,7 +126,6 @@ const mutations = {
|
||||||
data.message
|
data.message
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
replaceMessage(state, data) {
|
replaceMessage(state, data) {
|
||||||
const { tempID, message } = data;
|
const { tempID, message } = data;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -266,11 +266,13 @@ const actions = {
|
||||||
},
|
},
|
||||||
['socket_server:removeChannel'](context, {server_id, channelID}) {
|
['socket_server:removeChannel'](context, {server_id, channelID}) {
|
||||||
context.dispatch('servers/removeServerChannel', {server_id, channelID});
|
context.dispatch('servers/removeServerChannel', {server_id, channelID});
|
||||||
// context.dispatch('removeChannel', {channelID});
|
|
||||||
},
|
},
|
||||||
['socket_server:updateServer'](context, data) {
|
['socket_server:updateServer'](context, data) {
|
||||||
context.dispatch('servers/updateServer', {server_id: data.server_id, server: data});
|
context.dispatch('servers/updateServer', {server_id: data.server_id, server: data});
|
||||||
// context.dispatch('removeChannel', {channelID});
|
},
|
||||||
|
['socket_updateMessage'](context, data) {
|
||||||
|
context.dispatch('updateMessage', {channelID: data.channelID, messageID: data.messageID, message: data});
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue