mirror of
https://github.com/danbulant/Nertivia-Client
synced 2026-06-24 17:11:43 +00:00
fixed bugs with embed, fixed z-index + more.
This commit is contained in:
parent
55ea8fdf4b
commit
2a7a9cfb0d
10 changed files with 75 additions and 14 deletions
11
package-lock.json
generated
11
package-lock.json
generated
|
|
@ -2792,7 +2792,8 @@
|
||||||
"version": "4.6.0",
|
"version": "4.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
|
||||||
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
|
"integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"coa": {
|
"coa": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
|
|
@ -6953,6 +6954,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
|
||||||
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
|
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"prelude-ls": "~1.1.2",
|
"prelude-ls": "~1.1.2",
|
||||||
"type-check": "~0.3.2"
|
"type-check": "~0.3.2"
|
||||||
|
|
@ -9083,7 +9085,8 @@
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
|
||||||
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
|
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"prepend-http": {
|
"prepend-http": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
|
|
@ -9802,7 +9805,8 @@
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
|
||||||
"integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
|
"integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
|
||||||
"dev": true
|
"dev": true,
|
||||||
|
"optional": true
|
||||||
},
|
},
|
||||||
"rx-lite-aggregates": {
|
"rx-lite-aggregates": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
|
|
@ -11355,6 +11359,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
|
||||||
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
|
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"prelude-ls": "~1.1.2"
|
"prelude-ls": "~1.1.2"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,9 @@
|
||||||
<div v-else-if="selectedChannelID" ref="msg-logs" class="message-logs" >
|
<div v-else-if="selectedChannelID" ref="msg-logs" class="message-logs" >
|
||||||
<div class="scroll">
|
<div class="scroll">
|
||||||
<message
|
<message
|
||||||
|
class="message-container"
|
||||||
v-for="(msg, index) in selectedChannelMessages"
|
v-for="(msg, index) in selectedChannelMessages"
|
||||||
:key="index"
|
:key="index + selectedChannelID"
|
||||||
:date="msg.created"
|
:date="msg.created"
|
||||||
:admin="msg.creator.admin"
|
:admin="msg.creator.admin"
|
||||||
:username="msg.creator.username"
|
:username="msg.creator.username"
|
||||||
|
|
@ -537,6 +538,16 @@ export default {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
uploadQueue() {
|
||||||
|
let element = this.$refs['msg-logs'];
|
||||||
|
let currentScroll = element.scrollHeight - element.scrollTop;
|
||||||
|
let total = element.clientHeight;
|
||||||
|
this.$nextTick(function () {
|
||||||
|
if (currentScroll === total) {
|
||||||
|
this.scrollDown(true);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
editMessage(editMessage) {
|
editMessage(editMessage) {
|
||||||
if (!editMessage) {
|
if (!editMessage) {
|
||||||
this.message = ""
|
this.message = ""
|
||||||
|
|
@ -549,7 +560,7 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getWindowWidth(dimentions) {
|
getWindowWidth(dimentions) {
|
||||||
this.onResize(dimentions)
|
this.onResize();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -624,6 +635,8 @@ export default {
|
||||||
|
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
|
|
||||||
.no-channel-selected {
|
.no-channel-selected {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
|
||||||
|
|
@ -322,7 +322,6 @@ export default {
|
||||||
.message {
|
.message {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
animation: showMessage 0.3s ease-in-out;
|
animation: showMessage 0.3s ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -375,7 +374,7 @@ export default {
|
||||||
|
|
||||||
@keyframes showMessage {
|
@keyframes showMessage {
|
||||||
from {
|
from {
|
||||||
transform: translate(0px, -5px);
|
transform: translate(-50px, 0);
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,9 @@ export default {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
.left-panel{
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
.slidein-enter-active,
|
.slidein-enter-active,
|
||||||
.slidein-leave-active {
|
.slidein-leave-active {
|
||||||
transition: 0.5s;
|
transition: 0.5s;
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,10 @@ export default {
|
||||||
.direct-message-tab{
|
.direct-message-tab{
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
.left-panel{
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
|
||||||
.slide-left-enter-active,
|
.slide-left-enter-active,
|
||||||
.slide-left-leave-active {
|
.slide-left-leave-active {
|
||||||
transition: 0.5s;
|
transition: 0.5s;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="embed" :class="{article: embed.type === 'article' || embed.type === 'video.other'}">
|
<div class="embed" :class="{article: embed.type === 'article' || embed.type === 'video.other', website: embed.type === 'website'}">
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="image" v-if="embed.image" @click="embedImgClicked"><img :src="`//images.weserv.nl/?url=${embed.image}`" alt=""></div>
|
<div class="image" v-if="embed.image" @click="embedImgClicked"><img :src="`//images.weserv.nl/?url=${embed.image}`" alt=""></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -32,10 +32,25 @@ export default {
|
||||||
min-width: 200px;
|
min-width: 200px;
|
||||||
align-self: flex-start;
|
align-self: flex-start;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
|
text-overflow: ellipsis;
|
||||||
}
|
}
|
||||||
.embed.article {
|
.embed.article {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
.embed.website {
|
||||||
|
height: 100px;
|
||||||
|
}
|
||||||
|
.embed.website .image {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.embed.article .image {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.article .left {
|
.article .left {
|
||||||
order: 1;
|
order: 1;
|
||||||
}
|
}
|
||||||
|
|
@ -58,6 +73,10 @@ export default {
|
||||||
.description {
|
.description {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
white-space: pre-wrap;
|
white-space: pre-wrap;
|
||||||
|
overflow: hidden;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 3;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
}
|
}
|
||||||
.image img {
|
.image img {
|
||||||
width: auto;
|
width: auto;
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ export default {
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
width: 180px;
|
width: 180px;
|
||||||
z-index: 1;
|
z-index: 4;
|
||||||
}
|
}
|
||||||
.status-list {
|
.status-list {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
|
|
|
||||||
|
|
@ -153,9 +153,9 @@ const actions = {
|
||||||
if (context.rootState.channelModule.selectedChannelID == data.message.channelID && document.hasFocus()) {
|
if (context.rootState.channelModule.selectedChannelID == data.message.channelID && document.hasFocus()) {
|
||||||
this._vm.$socket.emit('notification:dismiss', {channelID: data.message.channelID});
|
this._vm.$socket.emit('notification:dismiss', {channelID: data.message.channelID});
|
||||||
} else {
|
} else {
|
||||||
bus.$emit('title:change', data.message.creator.username + " sent a message.");
|
|
||||||
// send notification if other users message the recipient
|
// send notification if other users message the recipient
|
||||||
if (data.message.creator.uniqueID === context.getters.user.uniqueID) return;
|
if (data.message.creator.uniqueID === context.getters.user.uniqueID) return;
|
||||||
|
bus.$emit('title:change', data.message.creator.username + " sent a message.");
|
||||||
desktopNotification();
|
desktopNotification();
|
||||||
}
|
}
|
||||||
const notification = {
|
const notification = {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
import Vue from "vue";
|
import Vue from "vue";
|
||||||
import debounce from "lodash/debounce";
|
import throttle from "lodash/throttle";
|
||||||
|
|
||||||
const WindowProperties = new Vue({
|
const WindowProperties = new Vue({
|
||||||
data () {
|
data () {
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
this.resizeWidth = window.innerWidth;
|
this.resizeWidth = window.innerWidth;
|
||||||
this.resizeHeight = window.innerHeight;
|
this.resizeHeight = window.innerHeight;
|
||||||
|
|
||||||
this.debouncedResize = debounce(this.onResize, 20);
|
this.debouncedResize = throttle(this.onResize, 70);
|
||||||
window.addEventListener("resize", this.debouncedResize);
|
window.addEventListener("resize", this.debouncedResize);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<template>
|
<template>
|
||||||
<div id="app">
|
<div id="app" ref="app">
|
||||||
<vue-headful :title="title" description="Nertivia Chat Client"/>
|
<vue-headful :title="title" description="Nertivia Chat Client"/>
|
||||||
<div class="background-image"></div>
|
<div class="background-image"></div>
|
||||||
<transition name="fade-between-two" appear>
|
<transition name="fade-between-two" appear>
|
||||||
|
|
@ -58,6 +58,7 @@ import changelog from "@/utils/changelog.js";
|
||||||
import ConnectingScreen from "./../components/app/ConnectingScreen.vue";
|
import ConnectingScreen from "./../components/app/ConnectingScreen.vue";
|
||||||
import Spinner from "./../components/Spinner.vue";
|
import Spinner from "./../components/Spinner.vue";
|
||||||
|
|
||||||
|
|
||||||
const ElectronFrameButtons = () =>
|
const ElectronFrameButtons = () =>
|
||||||
import("./../components/ElectronJS/FrameButtons.vue");
|
import("./../components/ElectronJS/FrameButtons.vue");
|
||||||
|
|
||||||
|
|
@ -129,6 +130,17 @@ export default {
|
||||||
this.switchChannel(true)
|
this.switchChannel(true)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
resizeEvent(dimensions) {
|
||||||
|
const width = dimensions.width;
|
||||||
|
const height = dimensions.height;
|
||||||
|
this.$refs.app.style.height = height + 'px';
|
||||||
|
this.$refs.app.style.width = width + 'px';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
getWindowWidth(dimensions) {
|
||||||
|
this.resizeEvent(dimensions)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
||||||
|
|
@ -146,6 +158,9 @@ export default {
|
||||||
bus.$on("title:change", title => {
|
bus.$on("title:change", title => {
|
||||||
this.title = title;
|
this.title = title;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
loggedIn() {
|
loggedIn() {
|
||||||
|
|
@ -179,7 +194,10 @@ export default {
|
||||||
return allFriend[key];
|
return allFriend[key];
|
||||||
});
|
});
|
||||||
return result.find(friend => friend.status === 1);
|
return result.find(friend => friend.status === 1);
|
||||||
}
|
},
|
||||||
|
getWindowWidth() {
|
||||||
|
return {width: windowProperties.resizeWidth, height: windowProperties.resizeHeight};
|
||||||
|
},
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue