From 064253eae31267ca79befc6a4924df3edfe72320 Mon Sep 17 00:00:00 2001 From: Craig Date: Thu, 23 Jan 2020 16:54:32 +0000 Subject: [PATCH] slight tweaks --- client/.env.development | 2 +- client/ABOUT.md | 12 +++++++ client/src/assets/celebrate.png | Bin 0 -> 2668 bytes client/src/assets/clap.png | Bin 0 -> 3813 bytes client/src/assets/exclam.png | Bin 0 -> 2803 bytes client/src/assets/heart.png | Bin 0 -> 1880 bytes client/src/assets/laughing.png | Bin 0 -> 3960 bytes client/src/assets/sleep.png | Bin 0 -> 4585 bytes client/src/components/chat.vue | 30 +++++++---------- client/src/components/emote.vue | 53 +++++++++++++++++-------------- client/src/components/emotes.vue | 39 ++++++++++++++++++++--- client/src/neko/index.ts | 15 ++++----- 12 files changed, 94 insertions(+), 57 deletions(-) create mode 100644 client/src/assets/celebrate.png create mode 100644 client/src/assets/clap.png create mode 100644 client/src/assets/exclam.png create mode 100644 client/src/assets/heart.png create mode 100644 client/src/assets/laughing.png create mode 100644 client/src/assets/sleep.png diff --git a/client/.env.development b/client/.env.development index 3022d8b..b0dc45c 100644 --- a/client/.env.development +++ b/client/.env.development @@ -1 +1 @@ -VUE_APP_SERVER=localhost:3000 +VUE_APP_SERVER_PORT=3000 diff --git a/client/ABOUT.md b/client/ABOUT.md index e69de29..f0063b6 100644 --- a/client/ABOUT.md +++ b/client/ABOUT.md @@ -0,0 +1,12 @@ +
+ +
+ +# **n**.eko +This is a proof of concept project I threw together over the last few days, it's not perfect, but it looks nice. This uses web rtc to stream a desktop inside of a docker container, I made this because [rabb.it](https://en.wikipedia.org/wiki/Rabb.it) went under and my internet can't handle streaming and discord keeps crashing. I just want to watch anime with my friends ლ(ಠ益ಠლ) so I started digging throughout the net and found a few *kinda* clones, but non of them had the virtual browser, then I found [Turtus](https://github.com/Khauri/Turtus) and I was able to figure out the rest. + +This is by no means a fully featured clone of rabbit. The client has no concept of other peers. It has bugs, but for the most part it works. I'm not sure what the future holds for this. If I continue to use it and like it, I'll probably keep pushing updates to it. I'd be happy to accept PRs for any improvements. + +### Why n.eko? +I like cats (Neko is the Japanese word for cat), I'm a weeb/nerd, I own the domain [n.eko.moe](https://n.eko.moe/) and I love the logo /shrug + diff --git a/client/src/assets/celebrate.png b/client/src/assets/celebrate.png new file mode 100644 index 0000000000000000000000000000000000000000..2faa8bc10716d37eb47c8afbcd6590805dd0f203 GIT binary patch literal 2668 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 bDv}9M+ep=k>-FF}`0+F|u|!oGxkvp6?eL^^ literal 0 HcmV?d00001 diff --git a/client/src/assets/exclam.png b/client/src/assets/exclam.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c3ef1c540fe8fcb79a1582235022c2f6b11532 GIT binary patch literal 2803 zcmaJ@dpOhkAIBU?s6!OpW^!j&m$u(VY#6f26;???1NQQ0goWf=n&vN&?KT+Bhpp-{u=eBfSsC^HfRnyjk_0hu%m$k&DlC33KI z1`~gPOZPcIB2y29Q;{@~gFO%}M9BqMbUpW zI*-a_a`;SkByd@gvX>pj$AIKc|4D(x`7RsD`&uS>!5~5k2Lb~_ms9!%BohBWl*Rgv z=JCDh|N8x(!aQ;`hYsNkif6U{D+sjzi#F>|iiwM@OtP z7Hfw@B9JbKZ7z<8Z(JOk8pWbV^1pFu|8kvw$X#v+7DpZ#N9Qv4(`hbTHVgPAZ4~pz zUYvfY_mxZgu@~$Qxe&P-$nxR-*I|F#l6TPZ^n2^d7vGzo9x3m5uDrE_WMuh$TS0Zh zIg*8a-2tmoNIN&yKlhKleBRZvoT#7Z+}q_&#p9Bl``usIq?h!Sl)M%dm6b&}**xx^ zh2xz;&Z~EXw^!u!q(= zT zym6Y*zw&oLJOgFcwM9BImvK*q`4EjvX&g7cCj%^M39|JM7RJsngyi0)_FuN^R_B^O z_biSXF=ZXY$0W88?kNwxn%m+ZG|GhZpoXIw{J{j@-Q(s(nH)V^?_2F77au%Ut*^qA z>TztR%Jyo{TRay45=C3?Z2hFYQdem)uNbTL#yag?;lP4IJ+D}klRKZgF^$<;-}btv zD7jx$EjldH3W)WQI3{ic435mTHH1r~xhJ1X&XQUzuAPGQIQk?k4>*3jPyB5h6MZ-$X z?*6w8j9>#V#faitab`=k&ysnIo@WUYvEqumCpD`}_obc~QK%4wXV5p5+-SkGG@x0u zP!)p>?dnNIfB*?&406U%8oRnPu$D_kE2*+qaW9?L9OcbB0Bm`S_~7ZaQ?c*sgsmmf zTeTwLHAX{-v9X%#1l^C8nKx`Ye94+`tCfw=`LrPA7{x)wM8>Ac$AxDRW(P%fjW&TL5Ny^t~&AXHs&gkFP)wrA7I2ApEAm2M--Pgzw?UrNk@tKMZRn#eh9S#3m0vf?MkNVcuPb`g}ANe1c}o z;o~oA?k-&0bv;`TulwY%Cn0tNS&Q1grtHM;KXvNFpmyJV?Y{TXfPsGH6&WFnu087qx8~L^PW`iPNE9+jo(E@;pv>` z`fjGNQwk-bN+&f{(B{Rrx7U2k@IpEy+}f2k;?dk?VI_FhQApsTBf1(%e71WzXw@Ez zL$Og7w`WL_U7zBM9lNh=q+bIO7By3zZE0gXE;=_D!33flH$2uhKnAqE@-)c92_#4L ze8LH_xytG;B-bu+dBqymoJyGZZ1MV^d#iIsaDwRw!gcKe8vLHQ(i@o8@!Fc%U%CfE z+&%J}HbfB0<3baOry8B&X&!ara%Su9$u@MPR{bZj_P{wCvja|C(eP+n)wv0mlMTUd z%g*0Dx755tSDJVO_f%`8nGxY*&v@I`Et}HA9Aj*%_Dg9xPV9hYP~HQ$r*D#@>s<}tC2}ZJH0F0%@&kFoMQ|th8UO7Ge-2sJMo*Sg&nD>eab0S%%c}h(p;1f`L9zQ zd{xYzJX+ryVY7Ye!u-`*eI#dI(zPG7=IFc4As1jzk#h}6Jd_LJ>brW_;mxaSy_ zxq0Vj@T>dc_ZA7Vs{0oL-sDwSj-E(RNAI}fJvrtf;})lCCCr_(uUJ_-F(YlgdDS{; z2|1O~WgLL!nif|VI+a)Y5tdSaHXdGlSXSDdYq5)usorU58*lG3z{?Ep?bEB2Tyssa z+xFM#%ASQ}0Ro}+$AzrpBuv%MT*Hbu^(EY{l%k;xS9C1w_w3P0DtpvCUy!DumC1XM zB(Yt{9^PiR9e?VDxbARxyD3LqSDUC6IN7;BWqKmne+j)h{ASK{9qGe*-|ZQO x6DG+*iPg-TgP^SIHVI@h`8VwTk(UmNDhf-;o7QD;4tV)D)XkZMt8xlH`ZwD_&#C|b literal 0 HcmV?d00001 diff --git a/client/src/assets/heart.png b/client/src/assets/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..03e2af6453dec7c414fd9a674d57e7df3be46d4b GIT binary patch literal 1880 zcmaJ?do)ye97mgC%VP>{q-*rhX6DYrYlcY}YGjxlQy#VDnz_TIJ9o@n%^j;^Qmm4q zmzG|NtyLi%R8~nvR4OHPe-;EUm}olH z)WE=CB5xsANQ_?kcf2w2We>F}iQzlUKO751rI;F0!UjGPG#UnY2owVgVMwBhZ-5EL zm{~GWI2O(iVvA9P3h6Oa98nN#Ld+XiK;k$U1ES#=nVduZ^GppHkV!b?Fjqc}ukeFo zWeXFPaA;z%NSqiaW=Y82^8hcLO$Z<`1_3y-O0Ht#9P+R(o0#jjK{7B5!QwdNPf3OI z1%Mx_gaKEo8%0caaRuC2RJt3}g~f6P7&N*ENb>;cObXqN?LuQS7{KR;Ohi*kq--HK z;Bzcu#UaOHn1T(0YPFiGW>QgQ3`l3OSRjo7G8hyBK~ZVs7=%;gD#sB8F02wOWeQA& z$^pG16pbce95RvVrxFmw7g@RLbDM~UfjFc9=~SA&q!A#W|Nl?~`GQtqLilUG|0%2z zX%sLhgjHyQQcN72)KMQw!S++a5QZv6D7tE-i-K4bLshY;0`T+GcZ~%&g~{X+RIQpb z%;EFdJh=*kJRr{hdr`II7mPJVqIeK#r&|GaJ-VR_BpGxgT#%g=W%^R_`Mgu#Knd{c9-|*&X;Fb z183=^P1Z;~W$8;~V|(Ftr>ePi-1PQr#$e#wdtEn$PW`@3Ft~9rVC4kWqAnp`THRdo z?!({gnu5-|gWkKky>us4L(g7EKOfRvf33O3s_A~8b+I$v@^CY^j;ySG&=C`Jzk2nQ zaDzhaw*B5~?8{T!A6Zt8p=!bGXRYI$zhN3K#!8Mfh3q$L9~(A*eLlF^RSM5MEj7Ap zE^RA*93n6=OKzq5rzKZM%~@FbF8BN6-JFUn3=|mKdu%=2W4I(avE*A!^){o|Ampv5 z&@O4`UhPzc@xbcDv?Ci%te;?#HS<)GLu{a8+TvG6^}7UJi)glIOH^rTuYSC`b--TO z*kLToUzT%eVh(sDNLgvVaW?5??!m z2*;P|(SA)gr;7jPNK;DQd~vTyXmI z+lbWEeK`swH8sw4xhy?UBs)9#riEc!(c`22!0#SLwU--i_oOvej;)kV&N@HxcA6`?Mkk2>wG)>&sy{YcZ zS|8KE%JP)IFJzWH%58~$S+w3BTW?C@t9y&_b|YIO>Y^eu>;CjW+^W!HX3GmsRp#O( zajG+v@nAnWxoqkAh%+{xmW55#kv$6>w4{NSe8nrnqThBN%d1;y1T4K0lHV5^-X}oJ z@ZH=t)8Iq#R<+s>QZ}W}!=!9S-l1i^^AaP{brT9x!ZP4pKjpUL4>Z8jIT?pIjaMuR zV@1H41;sljLJ#V-v72M>?`b z{k@lmoArh7j!;;`5h}`=dXj{rhI&!3Y{ot$3>IKP@bbkvV!eFA0z0uR2B#w4$(ibG zV-5Ev5!Ai*FzPe{nZ;&_8PdpJ-u_rB0E6|#6A{4Wx<()X?}GrI(X!F7A)8|T@aEwZ z?8$IjC+~27Z(Sdtp#eaj24@Knuv9MqjSxT#g3}PdzjfiP`QA1N2>2U9^+y2zla#ZK zJ;0Pi!2-0@VQSuBs1`t5R~-z4Ky`Ih0h$_M9gv0&2nlY) z26M{nI8^!$34IG6<}$u~*V>ppDJ{4EszKxOGO=z_kp9Kx;olmT}=oQ4FiKw z#=0z2@k-KLH0+|&ViKXB}us&!Ci2(S! zY&ibUxoG@R?;ozupK}5Kkqcra1KK;>|8>~Ew^$C^oBnHE*5Y6DV~H%sQ&`sKat^6r zW8wN#doiwRR6#Pf_XVO6gas&{Bt#>T``cTG@H?s3Bm9**^6x0+I6fQq z47AS~v7LEJa0+iV5ifI@E1BeeGJJcj+I=$lSHiZZFK2GYZbaY+-@2!r03vscE^|cM zjIm$Bg27kHPai{VXWFdeFA7A`c46*~{^=ea6p!```3&}N-s4^RgOGN{q~FLx11Qn& zfO1PE@wWa`kJ}}T(g>A#Pvex`f#cn;ZZ&@4X<}xDYAgn7V4YM;BcFhUpVyHn%ePS3xI z=-$w?<;cSh{ZuS$&PmnJf7BRlnDYv4zt(r+CE zAM6;v5bU6$mV2{Lf%@?^r}lg%>8$W3d=RyyF`Kx|Apwct@T_`>2`N2l1nFoCR&H-x zE|CmBKZUi(U|(;I#=-BTAa+2i-leX_VIYA*-d69r!YZb&)!N9Sxa99VC!d(Gi#W+J|A8B4tIg%G~3Fp`JzZNuy*trKp1N(^D_r9~Z$lzcDD}$)pgD zORnUnhNDVcJowN1KPzU~?dN=!=hs<$@2^y^CX2!$d~K|>9Rrd~z29QuQIXIE&DvfT zT3CxXWRM%XugGqx;I4q3LWtC35o7ljv=FxM^ztI#vFdV9^+&m*W*X~SlGvvl2S(Yr z)65|#>x=BI!udPO#jNRzhS^00#4KWHjkd=?q!_!gesLwfKwjqmdMUMS< zRcbGcnZ$}69{AXfTJOw!`-NMKz&N;m*&tToSqTtpl_tu&qVMd^8+g7;axR4Fq=FLS zFhL<)zMaw@#(zE0UP*I1l9hebi!-shPw_qa*c^W(x7A9I@HHW|t}sfIVQb!qOS#Nv z_o4tPvi?E)=1ptaTK4c?6>d=6hzmUI{wKXyl$0MoA*RplXSH=fuP3jwP-L37Q(}L6 zkHlq<&+<=TjIC?1ex^HT%FJbO4uJ2qLL zO_00p(-dF!3Y{s-3;mGfyQ2Eu$jwibVD{l2HtCrpx6Rp}5fzKWDdvM|u3}{7kTIm! zh?hSVbBjEqF(oQWta*XzSvP^6bAqT@2wO^9gY$P+)G9hn)Z|44J-LZf^+IIVmEUP6SW>Vm)3Zk zmmjSjX~o3k3Vhgk4;mVMN}H%4%`Ge-+7RYk2Yy`JKt1V%ZfUtKZ8k;yYO1CDh@Z*PtOFr(tsCid z>Lp6d2W2Zw?JBN0N)1O$h*kIN0{b2GfUP_PCvj&8pf@jD((@WtwLCM}I(P0U>ta!f zAG|Bbo=vA)g@uLXHkg9_>3uUu5%q8%tt4YnuIpe%{m5t zp45tYl~EWl@ho_s+o@}sa}X7-GG5*gr^8pBc$!{#`9ihy4*NcG^`q7{6t%a1m#BC+ zSbcge>E3aks8t|;FkhE_)xkNDi}R-xA1%7IT~ zH6=GDeYB#s*b&#F$gGwqOUPGFu7Xg>B^Mx?3DO`Zv`wTt6bn$-2Vhp$&Jj?3{wUfE}>yY7QspYq} zyY-!ZeHv!pZ(QMrWxjkRd_*?W zuz*L=zujeiMOeiD`Se=-jqQ8GxW~0P?6#O-HEuth-gVmR>{9uN;exX2_OG*kLbxC1 z8CgHw2(tB##`n%v=4D+SZk8OKQ2FTxyNbu2f=C>%9C4AEp-dF19NdALe|7OzZ=UTK=U42Jw1tP)-kfcqxL9)K2h4+qEekk0IP0>GRq46cfBQT% zXln633Zk~%C-$!57QX61WOVCvk6vI>O0Fj6b3Aec!i#C0fDr11k9J;aQ4%)Fdmze{ zqQ8H}&7^MFuA0ATOvG8%e1j~^UDfPUBpq=AzfB)1%*wDlSi*sb@Mtf(HeS5K+YY+? zJ@HL3m!RUeC22YFX)aE}6Bs}E!9>HQ*v-!oD%V?F&#E{it$EGioxXEv+U|yQRS5K{ zly|Y6&bUz;_Y5`=}x%oj)OuchWy3RV5#(p{=UiLt!S(H-c3Pq z_h;{r^pG?Ct4x`^`Z4~t`jm9BJhrA+CXqariY?o`O`RA>eejl`wB8UHk!oQ@P8S=9}Aa%yBhr9TZqY<{9zZx&Zend1lwTx RSnvG{TcB)_k4!vc{s)e@@3sH{ literal 0 HcmV?d00001 diff --git a/client/src/assets/sleep.png b/client/src/assets/sleep.png new file mode 100644 index 0000000000000000000000000000000000000000..3e89ed7c345822ce4d2c603c2ae805fee08810a5 GIT binary patch literal 4585 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 length) { - this._content = text.substring(0, length) - return - } - this._content = text - } - @Watch('history') onHistroyChange() { this.$nextTick(() => { @@ -361,7 +349,7 @@ @Watch('muted') onMutedChange(muted: boolean) { if (muted) { - this._content = '' + this.content = '' } } @@ -405,11 +393,15 @@ } onKeyDown(event: KeyboardEvent) { - if (typeof this._content === 'undefined' || this.muted) { + if (this.muted) { return } - if (this._content.length == length) { + if (this.content.length > length) { + this.content = this.content.substring(0, length) + } + + if (this.content.length == length) { if ( [8, 16, 17, 18, 20, 33, 34, 35, 36, 37, 38, 39, 40, 45, 46, 91, 93, 144].includes(event.keyCode) || (event.ctrlKey && [67, 65, 88].includes(event.keyCode)) @@ -425,14 +417,14 @@ return } - if (this._content === '') { + if (this.content === '') { event.preventDefault() return } - this.$accessor.chat.sendMessage(this._content) + this.$accessor.chat.sendMessage(this.content) - this._content = '' + this.content = '' event.preventDefault() } } diff --git a/client/src/components/emote.vue b/client/src/components/emote.vue index ca09fd1..3c1f93b 100644 --- a/client/src/components/emote.vue +++ b/client/src/components/emote.vue @@ -1,12 +1,12 @@ @@ -18,7 +18,7 @@ bottom: 0; right: 0; - i { + div { position: absolute; width: 30px; height: 30px; @@ -26,18 +26,30 @@ font-size: 30px; line-height: 30px; text-align: center; + background-size: contain; + + &.celebrate { + background-image: url('../assets/celebrate.png'); + } + + &.clap { + background-image: url('../assets/clap.png'); + } + + &.exclam { + background-image: url('../assets/exclam.png'); + } &.heart { - color: rgb(204, 72, 72); + background-image: url('../assets/heart.png'); } - &.poo { - color: rgb(112, 89, 58); + + &.laughing { + background-image: url('../assets/laughing.png'); } - &.grin { - color: rgb(228, 194, 84); - } - &.dizzy { - color: rgb(199, 199, 199); + + &.sleep { + background-image: url('../assets/sleep.png'); } } } @@ -66,14 +78,7 @@ let count = 0 let finish: Array> = [] - const emotes: any = { - heart: 'fa-heart', - poo: 'fa-poo', - grin: 'fa-grin-tears', - ghost: 'fa-ghost', - } - - this.classes = ['fas', emotes[this.emote.type] || 'fa-heart', this.emote.type] + this.classes = [this.emote.type] for (let child of this.container.children) { const ele = child as HTMLElement diff --git a/client/src/components/emotes.vue b/client/src/components/emotes.vue index 1609c47..fd0a36f 100644 --- a/client/src/components/emotes.vue +++ b/client/src/components/emotes.vue @@ -1,10 +1,12 @@ @@ -21,8 +23,35 @@ font-size: 24px; margin: 0 5px; - i { + div { + width: 24px; + height: 24px; cursor: pointer; + background-size: contain; + + &.celebrate { + background-image: url('../assets/celebrate.png'); + } + + &.clap { + background-image: url('../assets/clap.png'); + } + + &.exclam { + background-image: url('../assets/exclam.png'); + } + + &.heart { + background-image: url('../assets/heart.png'); + } + + &.laughing { + background-image: url('../assets/laughing.png'); + } + + &.sleep { + background-image: url('../assets/sleep.png'); + } } } } diff --git a/client/src/neko/index.ts b/client/src/neko/index.ts index e7aa889..0eb05b8 100644 --- a/client/src/neko/index.ts +++ b/client/src/neko/index.ts @@ -33,7 +33,7 @@ export class NekoClient extends BaseClient implements EventEmitter { connect(password: string, username: string) { const url = process.env.NODE_ENV === 'development' - ? `ws://${process.env.VUE_APP_SERVER}/` + ? `ws://${location.host.split(':')[0]}:${process.env.VUE_APP_SERVER_PORT}/` : `${/https/gi.test(location.protocol) ? 'wss' : 'ws'}://${location.host}/` super.connect(url, password, username) @@ -61,13 +61,6 @@ export class NekoClient extends BaseClient implements EventEmitter { duration: 5000, speed: 1000, }) - - this.$accessor.chat.newMessage({ - id: this.id, - content: 'connected', - type: 'event', - created: new Date(), - }) } protected [EVENT.DISCONNECTED](reason?: Error) { @@ -125,6 +118,12 @@ export class NekoClient extends BaseClient implements EventEmitter { ///////////////////////////// protected [EVENT.MEMBER.LIST]({ members }: MemberListPayload) { this.$accessor.user.setMembers(members) + this.$accessor.chat.newMessage({ + id: this.id, + content: 'connected', + type: 'event', + created: new Date(), + }) } protected [EVENT.MEMBER.CONNECTED](member: MemberPayload) {