mirror of
https://github.com/danbulant/Nertivia-Client
synced 2026-07-06 19:40:57 +00:00
added crown to owner
This commit is contained in:
parent
16792cbf4b
commit
5ba9750cea
9 changed files with 214 additions and 85 deletions
33
package-lock.json
generated
33
package-lock.json
generated
|
|
@ -1138,6 +1138,7 @@
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@vue/eslint-plugin/-/eslint-plugin-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@vue/eslint-plugin/-/eslint-plugin-4.2.0.tgz",
|
||||||
"integrity": "sha512-XVSLEVoNnrjaxvsun5kqZyeuWyUkp97gSnLkLOvkPkoAnLwIfjG3TuZQNm7yTEukZWmaa+7FpgMdSFqL8Z0XkA==",
|
"integrity": "sha512-XVSLEVoNnrjaxvsun5kqZyeuWyUkp97gSnLkLOvkPkoAnLwIfjG3TuZQNm7yTEukZWmaa+7FpgMdSFqL8Z0XkA==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"vue-eslint-parser": "^2.0.1"
|
"vue-eslint-parser": "^2.0.1"
|
||||||
}
|
}
|
||||||
|
|
@ -1350,7 +1351,8 @@
|
||||||
"acorn": {
|
"acorn": {
|
||||||
"version": "5.7.3",
|
"version": "5.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
|
"resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
|
||||||
"integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw=="
|
"integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"acorn-dynamic-import": {
|
"acorn-dynamic-import": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
|
|
@ -1365,6 +1367,7 @@
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
|
"resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz",
|
||||||
"integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
|
"integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"acorn": "^3.0.4"
|
"acorn": "^3.0.4"
|
||||||
},
|
},
|
||||||
|
|
@ -1372,7 +1375,8 @@
|
||||||
"acorn": {
|
"acorn": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
|
"resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz",
|
||||||
"integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo="
|
"integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=",
|
||||||
|
"dev": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -4017,6 +4021,7 @@
|
||||||
"version": "3.7.1",
|
"version": "3.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
|
||||||
"integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
|
"integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"esrecurse": "^4.1.0",
|
"esrecurse": "^4.1.0",
|
||||||
"estraverse": "^4.1.1"
|
"estraverse": "^4.1.1"
|
||||||
|
|
@ -4031,12 +4036,14 @@
|
||||||
"eslint-visitor-keys": {
|
"eslint-visitor-keys": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
|
||||||
"integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ=="
|
"integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"espree": {
|
"espree": {
|
||||||
"version": "3.5.4",
|
"version": "3.5.4",
|
||||||
"resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
|
"resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
|
||||||
"integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
|
"integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"acorn": "^5.5.0",
|
"acorn": "^5.5.0",
|
||||||
"acorn-jsx": "^3.0.0"
|
"acorn-jsx": "^3.0.0"
|
||||||
|
|
@ -4052,6 +4059,7 @@
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
|
||||||
"integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
|
"integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"estraverse": "^4.0.0"
|
"estraverse": "^4.0.0"
|
||||||
}
|
}
|
||||||
|
|
@ -4060,6 +4068,7 @@
|
||||||
"version": "4.2.1",
|
"version": "4.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
|
||||||
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
|
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"estraverse": "^4.1.0"
|
"estraverse": "^4.1.0"
|
||||||
}
|
}
|
||||||
|
|
@ -4067,7 +4076,8 @@
|
||||||
"estraverse": {
|
"estraverse": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
|
||||||
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
|
"integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"esutils": {
|
"esutils": {
|
||||||
"version": "2.0.2",
|
"version": "2.0.2",
|
||||||
|
|
@ -6627,7 +6637,8 @@
|
||||||
"lodash": {
|
"lodash": {
|
||||||
"version": "4.17.11",
|
"version": "4.17.11",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
||||||
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
|
"integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
|
||||||
|
"dev": true
|
||||||
},
|
},
|
||||||
"lodash.debounce": {
|
"lodash.debounce": {
|
||||||
"version": "4.0.8",
|
"version": "4.0.8",
|
||||||
|
|
@ -10194,6 +10205,11 @@
|
||||||
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"twemoji": {
|
||||||
|
"version": "11.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/twemoji/-/twemoji-11.3.0.tgz",
|
||||||
|
"integrity": "sha512-xN/vlR6+gDmfjt6LInAqwGAv3Agwrmzx5TD1jEFwKS19IOGDrX0/3OB8GP1wUYPVIdkaer5hw6qd+52jzvz0Lg=="
|
||||||
|
},
|
||||||
"type-check": {
|
"type-check": {
|
||||||
"version": "0.3.2",
|
"version": "0.3.2",
|
||||||
"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",
|
||||||
|
|
@ -10618,6 +10634,7 @@
|
||||||
"version": "2.0.3",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-2.0.3.tgz",
|
||||||
"integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==",
|
"integrity": "sha512-ZezcU71Owm84xVF6gfurBQUGg8WQ+WZGxgDEQu1IHFBZNx7BFZg3L1yHxrCBNNwbwFtE1GuvfJKMtb6Xuwc/Bw==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"debug": "^3.1.0",
|
"debug": "^3.1.0",
|
||||||
"eslint-scope": "^3.7.1",
|
"eslint-scope": "^3.7.1",
|
||||||
|
|
@ -10631,6 +10648,7 @@
|
||||||
"version": "3.2.6",
|
"version": "3.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
||||||
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"ms": "^2.1.1"
|
"ms": "^2.1.1"
|
||||||
}
|
}
|
||||||
|
|
@ -10732,6 +10750,11 @@
|
||||||
"integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==",
|
"integrity": "sha512-x3LV3wdmmERhVCYy3quqA57NJW7F3i6faas++pJQWtknWT+n7k30F4TVdHvCLn48peTJFRvCpxs3UuFPqgeELg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"vue-twemoji": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-twemoji/-/vue-twemoji-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-vKdA9vZuV0ADB8O2qCah//nGv9seb+S1hMTwU6IhPmmOsax4EHqwzyXSTf7kr3jCobsQIBBtNg2bpuRYoxalAA=="
|
||||||
|
},
|
||||||
"vuex": {
|
"vuex": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/vuex/-/vuex-3.0.1.tgz",
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
"jquery": "^3.3.1",
|
"jquery": "^3.3.1",
|
||||||
"socket.io": "^2.2.0",
|
"socket.io": "^2.2.0",
|
||||||
"socket.io-client": "^2.2.0",
|
"socket.io-client": "^2.2.0",
|
||||||
|
"twemoji": "^11.3.0",
|
||||||
"uws": "^10.148.1",
|
"uws": "^10.148.1",
|
||||||
"vue": "^2.5.17",
|
"vue": "^2.5.17",
|
||||||
"vue-headful": "^2.0.1",
|
"vue-headful": "^2.0.1",
|
||||||
|
|
@ -22,6 +23,7 @@
|
||||||
"vue-router": "^3.0.2",
|
"vue-router": "^3.0.2",
|
||||||
"vue-socket.io": "^3.0.4",
|
"vue-socket.io": "^3.0.4",
|
||||||
"vue-socket.io-extended": "^3.2.0",
|
"vue-socket.io-extended": "^3.2.0",
|
||||||
|
"vue-twemoji": "^1.0.1",
|
||||||
"vuex": "^3.0.1"
|
"vuex": "^3.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,111 @@
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div :class="`profile-picture ${adminType ? adminType.name : ''}`">
|
||||||
class="profile-picture"
|
<img v-if="adminType" class="emote" :src="adminType.emotePath">
|
||||||
:style="`height: ${$props.height}; width: ${$props.width}; background-image: url(${$props.url})`"
|
<div
|
||||||
></div>
|
class="inner-profile-picture"
|
||||||
|
:style="`height: ${$props.height}; width: ${$props.width}; background-image: url(${$props.url})`"
|
||||||
|
></div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
props: ['url', 'height', 'width']
|
props: ["url", "height", "width", "admin"],
|
||||||
}
|
data() {
|
||||||
|
return {
|
||||||
|
crown: require("twemoji/2/svg/1f451.svg"),
|
||||||
|
flower: require("twemoji/2/svg/1f33a.svg"),
|
||||||
|
};
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
adminType() {
|
||||||
|
if (this.$props.admin == 3)
|
||||||
|
return {
|
||||||
|
name: "creator",
|
||||||
|
emotePath: this.crown
|
||||||
|
};
|
||||||
|
if (this.$props.admin == 4)
|
||||||
|
return {
|
||||||
|
name: "cute",
|
||||||
|
emotePath: this.flower
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.profile-picture {
|
.profile-picture {
|
||||||
background-color: rgba(0, 0, 0, 0.281);
|
position: relative;
|
||||||
margin: auto;
|
padding: 3px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
.inner-profile-picture {
|
||||||
|
background-color: rgba(0, 0, 0, 0.315);
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
margin-right: 5px;
|
|
||||||
margin-left: 0;
|
|
||||||
flex-shrink: 0;
|
|
||||||
background-position: center;
|
background-position: center;
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.creator {
|
||||||
|
margin-right: 5px;
|
||||||
|
margin-left: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin: auto;
|
||||||
|
background: linear-gradient(
|
||||||
|
45deg,
|
||||||
|
#288cff 1%,
|
||||||
|
#288cff 40%,
|
||||||
|
#63acff 50%,
|
||||||
|
#288cff 60%,
|
||||||
|
#288cff 99%,
|
||||||
|
#288cff 100%,
|
||||||
|
#288cff 100%
|
||||||
|
);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
|
||||||
|
animation: Anime 4s ease infinite;
|
||||||
|
}
|
||||||
|
.cute {
|
||||||
|
margin-right: 5px;
|
||||||
|
margin-left: 0;
|
||||||
|
flex-shrink: 0;
|
||||||
|
margin: auto;
|
||||||
|
background: linear-gradient(
|
||||||
|
45deg,
|
||||||
|
#ffb7ed 1%,
|
||||||
|
#ffb7ed 40%,
|
||||||
|
#ffb7ed 50%,
|
||||||
|
#ffe2f8 60%,
|
||||||
|
#ffb7ed 99%,
|
||||||
|
#ffb7ed 100%,
|
||||||
|
#ffb7ed 100%
|
||||||
|
);
|
||||||
|
background-size: 400% 400%;
|
||||||
|
|
||||||
|
animation: Anime 4s ease infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes Anime {
|
||||||
|
0% {
|
||||||
|
background-position: 0% 50%;
|
||||||
|
}
|
||||||
|
50% {
|
||||||
|
background-position: 100% 50%;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
background-position: 0% 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.emote {
|
||||||
|
position: absolute;
|
||||||
|
height: 20px;
|
||||||
|
width: 20px;
|
||||||
|
transform: rotate(-40deg);
|
||||||
|
top: -6px;
|
||||||
|
left: -6px;
|
||||||
|
z-index: -1;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div :class="{message: true, ownMessage: user.uniqueID === $props.uniqueID}">
|
<div :class="{message: true, ownMessage: user.uniqueID === $props.uniqueID}">
|
||||||
<profile-picture :url="userAvatar" height="50px" width="50px"/>
|
<profile-picture :admin="$props.admin" :url="userAvatar" height="50px" width="50px"/>
|
||||||
<div class="triangle">
|
<div class="triangle">
|
||||||
<div class="triangle-inner"></div>
|
<div class="triangle-inner"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -39,6 +39,7 @@ import config from "@/config.js";
|
||||||
import friendlyDate from "@/date";
|
import friendlyDate from "@/date";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
ProfilePicture
|
ProfilePicture
|
||||||
|
|
@ -50,7 +51,8 @@ export default {
|
||||||
"avatar",
|
"avatar",
|
||||||
"date",
|
"date",
|
||||||
"uniqueID",
|
"uniqueID",
|
||||||
"files"
|
"files",
|
||||||
|
"admin"
|
||||||
],
|
],
|
||||||
methods: {
|
methods: {
|
||||||
imageClicked(event) {
|
imageClicked(event) {
|
||||||
|
|
@ -174,6 +176,9 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-picture {
|
.profile-picture {
|
||||||
|
margin: auto;
|
||||||
|
margin-left: 0;
|
||||||
|
margin-right: 5px;
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -275,3 +280,11 @@ export default {
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
<style>
|
||||||
|
img.emoji {
|
||||||
|
height: 1.5em;
|
||||||
|
width: 1.5em;
|
||||||
|
margin: 0 .05em 0 .1em;
|
||||||
|
vertical-align: -0.1em;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="my-mini-information">
|
<div class="my-mini-information">
|
||||||
<profile-picture :url="avatar" height="50px" width="50px"/>
|
<profile-picture :url="avatar" :admin="user.admin" height="50px" width="50px"/>
|
||||||
<div class="information">
|
<div class="information">
|
||||||
<div class="name">{{user.username}}</div>
|
<div class="name">{{user.username}}</div>
|
||||||
<div class="tag">@{{user.tag}}</div>
|
<div class="tag">@{{user.tag}}</div>
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
v-for="(msg, index) in messages[selectedChannelID]"
|
v-for="(msg, index) in messages[selectedChannelID]"
|
||||||
:key="index"
|
:key="index"
|
||||||
:date="msg.created"
|
:date="msg.created"
|
||||||
|
:admin="msg.creator.admin"
|
||||||
:username="msg.creator.username"
|
:username="msg.creator.username"
|
||||||
:uniqueID="msg.creator.uniqueID"
|
:uniqueID="msg.creator.uniqueID"
|
||||||
:avatar="msg.creator.avatar"
|
:avatar="msg.creator.avatar"
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="my-profile-panel">
|
<div class="my-profile-panel">
|
||||||
<profile-picture :url="avatar" height="100px" width="100px" />
|
<profile-picture :url="avatar" :admin="user.admin" height="100px" width="100px" />
|
||||||
<div class="information">
|
<div class="information">
|
||||||
<div class="username">
|
<div class="username">
|
||||||
<strong>Username:</strong>
|
<strong>Username:</strong>
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="logged-in">
|
<div class="logged-in">
|
||||||
<div class="card">
|
<div class="card">
|
||||||
<div class="avatar-outer">
|
<div class="avatar-outer">
|
||||||
<profile-picture :url="avatar" height="90px" width="90px" />
|
<profile-picture :url="avatar" :admin="user.admin" height="90px" width="90px" />
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<div class="username">{{user.username}}<span class="tag">@{{user.tag}}</span></div>
|
<div class="username">{{user.username}}<span class="tag">@{{user.tag}}</span></div>
|
||||||
|
|
|
||||||
|
|
@ -1,83 +1,89 @@
|
||||||
import futoji from 'futoji'
|
import futoji from 'futoji'
|
||||||
|
import twemoji from 'twemoji'
|
||||||
|
|
||||||
export default (message) => {
|
|
||||||
message = escapeHtml(message)
|
|
||||||
|
|
||||||
futoji.addTransformer({
|
export default (message) => {
|
||||||
name: 'bold-and-italic',
|
message = twemoji.parse(escapeHtml(message),
|
||||||
symbol: '***',
|
function (icon, options, variant) {
|
||||||
transformer: text => `<strong><em>${text}</em></strong>`
|
console.log(icon)
|
||||||
})
|
return require("twemoji/2/svg/" + icon + ".svg")
|
||||||
|
})
|
||||||
|
|
||||||
futoji.addTransformer({
|
futoji.addTransformer({
|
||||||
name: 'bold',
|
name: 'bold-and-italic',
|
||||||
symbol: '**',
|
symbol: '***',
|
||||||
transformer: text => `<strong>${text}</strong>`
|
transformer: text => `<strong><em>${text}</em></strong>`
|
||||||
})
|
})
|
||||||
|
|
||||||
futoji.addTransformer({
|
|
||||||
name: 'italic',
|
|
||||||
symbol: '*',
|
|
||||||
transformer: text => `<em>${text}</em>`
|
|
||||||
})
|
|
||||||
|
|
||||||
futoji.addTransformer({
|
futoji.addTransformer({
|
||||||
name: 'underline',
|
name: 'bold',
|
||||||
symbol: '__',
|
symbol: '**',
|
||||||
transformer: text => `<u>${text}</u>`
|
transformer: text => `<strong>${text}</strong>`
|
||||||
})
|
})
|
||||||
futoji.addTransformer({
|
|
||||||
name: 'italic',
|
|
||||||
symbol: '_',
|
|
||||||
transformer: text => `<em>${text}</em>`
|
|
||||||
})
|
|
||||||
futoji.addTransformer({
|
|
||||||
name: 'srike',
|
|
||||||
symbol: '~~',
|
|
||||||
transformer: text => `<s>${text.trim()}</s>`
|
|
||||||
})
|
|
||||||
|
|
||||||
futoji.addTransformer({
|
futoji.addTransformer({
|
||||||
name: 'code-block',
|
name: 'italic',
|
||||||
symbol: '```',
|
symbol: '*',
|
||||||
recursive: false,
|
transformer: text => `<em>${text}</em>`
|
||||||
transformer: text => `<div class="codeblock"><code>${formatCode(text.trim())}</code></div>`,
|
})
|
||||||
})
|
|
||||||
|
futoji.addTransformer({
|
||||||
futoji.addTransformer({
|
name: 'underline',
|
||||||
name: 'code',
|
symbol: '__',
|
||||||
symbol: '`',
|
transformer: text => `<u>${text}</u>`
|
||||||
recursive: false,
|
})
|
||||||
transformer: text => `<code>${text}</code>`,
|
futoji.addTransformer({
|
||||||
})
|
name: 'italic',
|
||||||
return futoji.format(message);
|
symbol: '_',
|
||||||
|
transformer: text => `<em>${text}</em>`
|
||||||
|
})
|
||||||
|
futoji.addTransformer({
|
||||||
|
name: 'srike',
|
||||||
|
symbol: '~~',
|
||||||
|
transformer: text => `<s>${text.trim()}</s>`
|
||||||
|
})
|
||||||
|
|
||||||
|
futoji.addTransformer({
|
||||||
|
name: 'code-block',
|
||||||
|
symbol: '```',
|
||||||
|
recursive: false,
|
||||||
|
transformer: text => `<div class="codeblock"><code>${formatCode(text.trim())}</code></div>`,
|
||||||
|
})
|
||||||
|
|
||||||
|
futoji.addTransformer({
|
||||||
|
name: 'code',
|
||||||
|
symbol: '`',
|
||||||
|
recursive: false,
|
||||||
|
transformer: text => `<code>${text}</code>`,
|
||||||
|
})
|
||||||
|
return futoji.format(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* format code to add syntax highlighting
|
* format code to add syntax highlighting
|
||||||
*/
|
*/
|
||||||
function formatCode(text) {
|
function formatCode(text) {
|
||||||
// matches if word until newline
|
// matches if word until newline
|
||||||
// if spaces then it won't match
|
// if spaces then it won't match
|
||||||
let nameRegex = new RegExp('^(\\w+)\\n')
|
let nameRegex = new RegExp('^(\\w+)\\n')
|
||||||
|
|
||||||
if(nameRegex.test(text)) {
|
if (nameRegex.test(text)) {
|
||||||
let language = nameRegex.exec(text)[1]
|
let language = nameRegex.exec(text)[1]
|
||||||
let newText = text.replace(nameRegex, '')
|
let newText = text.replace(nameRegex, '')
|
||||||
|
|
||||||
// TODO: format newText with language
|
// TODO: format newText with language
|
||||||
|
|
||||||
return newText
|
return newText
|
||||||
}
|
}
|
||||||
|
|
||||||
return text
|
return text
|
||||||
}
|
}
|
||||||
|
|
||||||
function escapeHtml(unsafe) {
|
function escapeHtml(unsafe) {
|
||||||
return unsafe
|
return unsafe
|
||||||
.replace(/&/g, "&")
|
.replace(/&/g, "&")
|
||||||
.replace(/</g, "<")
|
.replace(/</g, "<")
|
||||||
.replace(/>/g, ">")
|
.replace(/>/g, ">")
|
||||||
.replace(/"/g, """)
|
.replace(/"/g, """)
|
||||||
.replace(/'/g, "'");
|
.replace(/'/g, "'");
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue