From 7ad63432d16813e949b258fc6d6cc856dd668cb9 Mon Sep 17 00:00:00 2001 From: Mal <=> Date: Sun, 28 Feb 2021 01:01:24 +0100 Subject: [PATCH] Release --- Makefile | 17 + build/android/build.bash | 60 ++ build/android/ic_launcher.svg | 68 +++ build/android/ic_launcher_round.svg | 67 +++ build/android/notification-icon-disabled.svg | 62 ++ build/android/notification-icon-enabled.svg | 62 ++ .../ic_stat_notification_icon_enabled.png | Bin 0 -> 707 bytes .../ic_stat_notification_icon_enabled.png | Bin 0 -> 549 bytes .../ic_stat_notification_icon_enabled.png | Bin 0 -> 1130 bytes .../ic_stat_notification_icon_enabled.png | Bin 0 -> 961 bytes .../ic_stat_notification_icon_enabled.png | Bin 0 -> 1932 bytes build/android/splash-drawable-1280x1920.svg | 73 +++ build/android/splash-drawable-1280x720.svg | 72 +++ build/android/splash-drawable-1600x960.svg | 72 +++ build/android/splash-drawable-1920x1280.svg | 72 +++ build/android/splash-drawable-320x480.svg | 69 +++ build/android/splash-drawable-480x320.svg | 68 +++ build/android/splash-drawable-480x800.svg | 73 +++ build/android/splash-drawable-720x1280.svg | 73 +++ build/android/splash-drawable-800x480.svg | 72 +++ build/android/splash-drawable-960x1600.svg | 73 +++ build/android/splash.svg | 68 +++ build/ios/AppIcon.svg | 68 +++ build/ios/build.bash | 33 ++ build/ios/splash.svg | 68 +++ config.xml | 101 ++++ ionic.config.json | 4 +- package-lock.json | 552 ++++++++++++++++++ package.json | 36 +- resources/android/icon/drawable-hdpi-icon.png | Bin 0 -> 1694 bytes resources/android/icon/drawable-ldpi-icon.png | Bin 0 -> 1060 bytes resources/android/icon/drawable-mdpi-icon.png | Bin 0 -> 1319 bytes .../android/icon/drawable-xhdpi-icon.png | Bin 0 -> 2028 bytes .../android/icon/drawable-xxhdpi-icon.png | Bin 0 -> 2785 bytes .../android/icon/drawable-xxxhdpi-icon.png | Bin 0 -> 3594 bytes .../splash/drawable-land-hdpi-screen.png | Bin 0 -> 5542 bytes .../splash/drawable-land-ldpi-screen.png | Bin 0 -> 4222 bytes .../splash/drawable-land-mdpi-screen.png | Bin 0 -> 4212 bytes .../splash/drawable-land-xhdpi-screen.png | Bin 0 -> 8397 bytes .../splash/drawable-land-xxhdpi-screen.png | Bin 0 -> 11274 bytes .../splash/drawable-land-xxxhdpi-screen.png | Bin 0 -> 15718 bytes .../splash/drawable-port-hdpi-screen.png | Bin 0 -> 6023 bytes .../splash/drawable-port-ldpi-screen.png | Bin 0 -> 4169 bytes .../splash/drawable-port-mdpi-screen.png | Bin 0 -> 4554 bytes .../splash/drawable-port-xhdpi-screen.png | Bin 0 -> 9371 bytes .../splash/drawable-port-xxhdpi-screen.png | Bin 0 -> 12484 bytes .../splash/drawable-port-xxxhdpi-screen.png | Bin 0 -> 17086 bytes resources/icon.png | Bin 0 -> 18444 bytes src/app/api.service.ts | 52 ++ src/app/app-routing.module.ts | 9 - src/app/app.component.html | 3 +- src/app/app.component.ts | 19 +- src/app/app.module.ts | 17 +- src/app/chat.message.ts | 7 + src/app/chat.token.ts | 5 + src/app/chat/chat.component.html | 17 + src/app/chat/chat.component.scss | 0 src/app/chat/chat.component.spec.ts | 24 + src/app/chat/chat.component.ts | 162 +++++ src/app/host.ts | 5 + src/app/login/login.component.html | 20 + src/app/login/login.component.scss | 0 src/app/login/login.component.spec.ts | 24 + src/app/login/login.component.ts | 71 +++ src/app/socket.keepalive.message.ts | 4 + src/app/socket.received.message.ts | 6 + src/app/socket.registration.message.ts | 5 + src/app/socket.send.message.ts | 4 + src/app/token.ts | 3 + src/app/topbar/topbar.component.html | 4 + src/app/topbar/topbar.component.scss | 0 src/app/topbar/topbar.component.spec.ts | 24 + src/app/topbar/topbar.component.ts | 31 + src/app/websocket.listener.ts | 6 + src/app/websocket.service.ts | 104 ++++ src/assets/.gitkeep | 0 src/assets/audio/murloc.ogg | Bin 0 -> 12000 bytes src/assets/audio/murloc.wav | Bin 0 -> 77646 bytes src/assets/graphics/bg_responsive.jpg | Bin 0 -> 20069 bytes src/assets/graphics/metasocket-banner.svg | 83 +++ src/assets/graphics/metasocket-icon.svg | 61 ++ src/assets/icon/favicon.png | Bin 930 -> 1507 bytes src/global.scss | 195 ++++++- 83 files changed, 2907 insertions(+), 41 deletions(-) create mode 100644 Makefile create mode 100755 build/android/build.bash create mode 100644 build/android/ic_launcher.svg create mode 100644 build/android/ic_launcher_round.svg create mode 100644 build/android/notification-icon-disabled.svg create mode 100644 build/android/notification-icon-enabled.svg create mode 100644 build/android/res/drawable-hdpi/ic_stat_notification_icon_enabled.png create mode 100644 build/android/res/drawable-mdpi/ic_stat_notification_icon_enabled.png create mode 100644 build/android/res/drawable-xhdpi/ic_stat_notification_icon_enabled.png create mode 100644 build/android/res/drawable-xxhdpi/ic_stat_notification_icon_enabled.png create mode 100644 build/android/res/drawable-xxxhdpi/ic_stat_notification_icon_enabled.png create mode 100644 build/android/splash-drawable-1280x1920.svg create mode 100644 build/android/splash-drawable-1280x720.svg create mode 100644 build/android/splash-drawable-1600x960.svg create mode 100644 build/android/splash-drawable-1920x1280.svg create mode 100644 build/android/splash-drawable-320x480.svg create mode 100644 build/android/splash-drawable-480x320.svg create mode 100644 build/android/splash-drawable-480x800.svg create mode 100644 build/android/splash-drawable-720x1280.svg create mode 100644 build/android/splash-drawable-800x480.svg create mode 100644 build/android/splash-drawable-960x1600.svg create mode 100644 build/android/splash.svg create mode 100644 build/ios/AppIcon.svg create mode 100755 build/ios/build.bash create mode 100644 build/ios/splash.svg create mode 100644 config.xml create mode 100644 resources/android/icon/drawable-hdpi-icon.png create mode 100644 resources/android/icon/drawable-ldpi-icon.png create mode 100644 resources/android/icon/drawable-mdpi-icon.png create mode 100644 resources/android/icon/drawable-xhdpi-icon.png create mode 100644 resources/android/icon/drawable-xxhdpi-icon.png create mode 100644 resources/android/icon/drawable-xxxhdpi-icon.png create mode 100644 resources/android/splash/drawable-land-hdpi-screen.png create mode 100644 resources/android/splash/drawable-land-ldpi-screen.png create mode 100644 resources/android/splash/drawable-land-mdpi-screen.png create mode 100644 resources/android/splash/drawable-land-xhdpi-screen.png create mode 100644 resources/android/splash/drawable-land-xxhdpi-screen.png create mode 100644 resources/android/splash/drawable-land-xxxhdpi-screen.png create mode 100644 resources/android/splash/drawable-port-hdpi-screen.png create mode 100644 resources/android/splash/drawable-port-ldpi-screen.png create mode 100644 resources/android/splash/drawable-port-mdpi-screen.png create mode 100644 resources/android/splash/drawable-port-xhdpi-screen.png create mode 100644 resources/android/splash/drawable-port-xxhdpi-screen.png create mode 100644 resources/android/splash/drawable-port-xxxhdpi-screen.png create mode 100644 resources/icon.png create mode 100644 src/app/api.service.ts create mode 100644 src/app/chat.message.ts create mode 100644 src/app/chat.token.ts create mode 100644 src/app/chat/chat.component.html create mode 100644 src/app/chat/chat.component.scss create mode 100644 src/app/chat/chat.component.spec.ts create mode 100644 src/app/chat/chat.component.ts create mode 100644 src/app/host.ts create mode 100644 src/app/login/login.component.html create mode 100644 src/app/login/login.component.scss create mode 100644 src/app/login/login.component.spec.ts create mode 100644 src/app/login/login.component.ts create mode 100644 src/app/socket.keepalive.message.ts create mode 100644 src/app/socket.received.message.ts create mode 100644 src/app/socket.registration.message.ts create mode 100644 src/app/socket.send.message.ts create mode 100644 src/app/token.ts create mode 100644 src/app/topbar/topbar.component.html create mode 100644 src/app/topbar/topbar.component.scss create mode 100644 src/app/topbar/topbar.component.spec.ts create mode 100644 src/app/topbar/topbar.component.ts create mode 100644 src/app/websocket.listener.ts create mode 100644 src/app/websocket.service.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/assets/audio/murloc.ogg create mode 100644 src/assets/audio/murloc.wav create mode 100644 src/assets/graphics/bg_responsive.jpg create mode 100644 src/assets/graphics/metasocket-banner.svg create mode 100644 src/assets/graphics/metasocket-icon.svg diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..2977461 --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +install: + ionic cordova plugin add cordova-plugin-local-notification + npm install --save @ionic-native/local-notifications + npm install --save @ionic-native/core + npm install --save @capacitor/core + +android: + ionic build + sudo archlinux-java set java-8-openjdk + ANDROID_SDK_ROOT=/home/mal/Android/Sdk JAVA_HOME=/usr/lib/jvm/java-8-openjdk/ ionic cordova build android + sudo archlinux-java set java-11-openjdk + +deployment: + read VERSION + cp platforms/android/app/build/outputs/apk/debug/app-debug.apk '/run/user/1000/gvfs/mtp:host=Fairphone_FP2_ff87fc9d/Interner gemeinsamer Speicher/bluetooth/metasocket-${VERSION}.apk' + + diff --git a/build/android/build.bash b/build/android/build.bash new file mode 100755 index 0000000..62c0dab --- /dev/null +++ b/build/android/build.bash @@ -0,0 +1,60 @@ +#/bin/bash + +TARGET='/home/mal/Code/Ionic/metasocket-cordova/resources/android' +TARGET_RESOURCES=${TARGET} +TARGET_JAVA=/home/mal/Code/Ionic/metasocket-cordova/platforms/android/app/java/com/metasocket/app + +RESOURCES='/home/mal/Code/Ionic/metasocket-cordova/build/android' + +# SPLASH LANDSCAPE +inkscape ${RESOURCES}/splash-drawable-480x320.svg -o ${TARGET_RESOURCES}/splash/drawable-land-ldpi-screen.png -w 320 -h 240 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-800x480.svg -o ${TARGET_RESOURCES}/splash/drawable-land-hdpi-screen.png -w 800 -h 480 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-480x320.svg -o ${TARGET_RESOURCES}/splash/drawable-land-mdpi-screen.png -w 480 -h 320 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-1280x720.svg -o ${TARGET_RESOURCES}/splash/drawable-land-xhdpi-screen.png -w 1280 -h 720 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-1600x960.svg -o ${TARGET_RESOURCES}/splash/drawable-land-xxhdpi-screen.png -w 1600 -h 960 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-1920x1280.svg -o ${TARGET_RESOURCES}/splash/drawable-land-xxxhdpi-screen.png -w 1920 -h 1280 --export-overwrite + +# SPLASH PORTRAIT +inkscape ${RESOURCES}/splash-drawable-320x480.svg -o ${TARGET_RESOURCES}/splash/drawable-port-ldpi-screen.png -w 240 -h 320 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-480x800.svg -o ${TARGET_RESOURCES}/splash/drawable-port-hdpi-screen.png -w 480 -h 800 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-320x480.svg -o ${TARGET_RESOURCES}/splash/drawable-port-mdpi-screen.png -w 320 -h 480 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-720x1280.svg -o ${TARGET_RESOURCES}/splash/drawable-port-xhdpi-screen.png -w 720 -h 1280 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-960x1600.svg -o ${TARGET_RESOURCES}/splash/drawable-port-xxhdpi-screen.png -w 960 -h 1600 --export-overwrite +inkscape ${RESOURCES}/splash-drawable-1280x1920.svg -o ${TARGET_RESOURCES}/splash/drawable-port-xxxhdpi-screen.png -w 1280 -h 1920 --export-overwrite + +# ICONS +inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/icon/drawable-ldpi-icon.png -w 36 -h 36 --export-overwrite + +inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/icon/drawable-hdpi-icon.png -w 72 -h 72 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher_round.svg -o ${TARGET_RESOURCES}/icon/drawable-mipmap-hdpi/ic_launcher_round.png -w 72 -h 72 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/mipmap-hdpi/ic_launcher_foreground.png -w 162 -h 162 --export-overwrite + +inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/icon/drawable-mdpi-icon.png -w 48 -h 48 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher_round.svg -o ${TARGET_RESOURCES}/mipmap-mdpi/ic_launcher_round.png -w 48 -h 48 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/mipmap-mdpi/ic_launcher_foreground.png -w 108 -h 108 --export-overwrite + +inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/icon/drawable-xhdpi-icon.png -w 96 -h 96 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher_round.svg -o ${TARGET_RESOURCES}/mipmap-xhdpi/ic_launcher_round.png -w 96 -h 96 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/mipmap-xhdpi/ic_launcher_foreground.png -w 216 -h 216 --export-overwrite + +inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/icon/drawable-xxhdpi-icon.png -w 144 -h 144 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher_round.svg -o ${TARGET_RESOURCES}/mipmap-xxhdpi/ic_launcher_round.png -w 144 -h 144 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/mipmap-xxhdpi/ic_launcher_foreground.png -w 324 -h 324 --export-overwrite + +inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/icon/drawable-xxxhdpi-icon.png -w 192 -h 192 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher_round.svg -o ${TARGET_RESOURCES}/mipmap-xxxhdpi/ic_launcher_round.png -w 192 -h 192 --export-overwrite +# inkscape ${RESOURCES}/ic_launcher.svg -o ${TARGET_RESOURCES}/mipmap-xxxhdpi/ic_launcher_foreground.png -w 432 -h 432 --export-overwrite + +exit 0 + +# cp -R ${RESOURCES}/res/* ${TARGET_RESOURCES}/ + +# SOUND +mkdir -p ${TARGET_RESOURCES}/raw +cp ${RESOURCES}/murloc.wav ${TARGET_RESOURCES}/raw/ + +# OVERRIDE MainActivity.java +# cp ${RESOURCES}/MainActivity.java ${TARGET_JAVA}/ + +# OVERRIDE AndroidManifest.xml +cp ${RESOURCES}/AndroidManifest.xml ${TARGET}/ diff --git a/build/android/ic_launcher.svg b/build/android/ic_launcher.svg new file mode 100644 index 0000000..d077488 --- /dev/null +++ b/build/android/ic_launcher.svg @@ -0,0 +1,68 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/ic_launcher_round.svg b/build/android/ic_launcher_round.svg new file mode 100644 index 0000000..d6ce0e6 --- /dev/null +++ b/build/android/ic_launcher_round.svg @@ -0,0 +1,67 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/notification-icon-disabled.svg b/build/android/notification-icon-disabled.svg new file mode 100644 index 0000000..bdcc628 --- /dev/null +++ b/build/android/notification-icon-disabled.svg @@ -0,0 +1,62 @@ + + + + + + + + image/svg+xml + + + + + + + diff --git a/build/android/notification-icon-enabled.svg b/build/android/notification-icon-enabled.svg new file mode 100644 index 0000000..c87d643 --- /dev/null +++ b/build/android/notification-icon-enabled.svg @@ -0,0 +1,62 @@ + + + + + + + + image/svg+xml + + + + + + + diff --git a/build/android/res/drawable-hdpi/ic_stat_notification_icon_enabled.png b/build/android/res/drawable-hdpi/ic_stat_notification_icon_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ec5c77c115aa6e03a7ebbccb92217e391c8a7c GIT binary patch literal 707 zcmeAS@N?(olHy`uVBq!ia0y~yU{C>J4mJh`hKCF@W-u@?b$PlthD5Z!y>6Q?>?m;T zZhJum4|hD^}|MlrVq#XQj#k)aFvj^8-!9%G|& zhV52H!nUpx!X-+-`#y`7ysDUb`B$&-;SQTqoFz_6q-OBh1xILY^2nB5+j1{@j#P^I z&l5)+Zclvwm1#ep)x`U}Z^VB5J>(;K;jz$+>mU0H)+RicHBs6xmG{tpqQ2kq1i6;h zV1s<2f0HZ3_8tEwnJ)Zq`^W7nLBT&cxfN&g9eCj5=%T){t9qj9X2Y2Ft4BV*P2&A} zWl8s@oLBF@m3sX#U^Z7?VfOC(>;k#>8}FKPuVTEqp((8+B6ou4<;85CYYJ=bWcTEs zklXuuhZWmfOPxn|3?@%Iv^4vnrkXp;=AL}V-%k(h5)3f^8t%@pSz&eJ+(3rA(u^0T zPKb1ONM`>P6T;WVvg&c`-=-MO6^elx{EVTKzec@X*wE*8lOuhv-s>;F#P?-opGg${ z{8y&`q|~Rd48go!#%D}rPT%T|E;X9LyZ7v6`N-du8!B(j-!2feE4wvt>ep!bFJ;TD zcg!ie$F<%5e%!yKcbizJIa_A9eY0T|P1t8~L+$;;c$YrU1iq-k>dcj=g`(7#^ RN(Kf722WQ%mvv4FO#q3aM@j$y literal 0 HcmV?d00001 diff --git a/build/android/res/drawable-mdpi/ic_stat_notification_icon_enabled.png b/build/android/res/drawable-mdpi/ic_stat_notification_icon_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..8c080177ea2c5687f7fccb310196e2c0b28bfda0 GIT binary patch literal 549 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuJo-*~z>hIn-Dy}I8&I8cPW zAZpgKiSoW387)pu!m$z_>`o;~Y04@qx)u2({@q%(aFlop9NYPIiyu9UON{3FG4 zj+SQyd~z}2VgJM{t$D!b%bv+9`zQbKp5dyU!#VXx{Nb`Q z3%iwdp5MOGG4FkBcw7qWiQt+eTBr6loytsAZkS?N7wlll7UjM&;ZyX%H792`g*EB2 z&(NLmhgGj>Tm5!*Mho6;TeuiZ3S^k&xE>U-G)z`vXphih2sm!Hj*aomao$+%L(6uk z`_2^G`b$WKNxN2Cg6C5GdLPm4PSLBB8K!&`*d1}gdih7A8<+dce4ivO`=IcqEGjc( zU*CB}^Y{N}EPS(Z$F+%h9M`v1I0(&?XOI52`1#Tme*y&-Ki(dZw~S${#Dz+xBDLU? zMLhqNKE}G%sNVXdIsK36vroCRCcUh%_WZ*5_+(8`HtUZ(y`Oes)kd0W8K|de$>P)eHARQq$ZQZ8XdpdXSD}NBbHa`E`is}=s*RL`#Ffe$!`njxg HN@xNAeg5ec z+%%bNYWdl|w(7=jgWJ~6=T$$uS3J8Xa>M<1QTN|RRlnbQ{pY>V)nRY!jMlhaukCD9 zlsQ_rW}S>e0?z{rz6JYF9dNd2wv0KL_a%%?z<{k#s6K%$f8qMB1JQ+Ip9{}E^zI4W zD!lR2}&LBk>6=TVW$yx1Fe*5Hj?b2ke0o{!slLo)C4=CC~` z?5*Nu&-YJdkvp0#Sgv0+i+78qCg&*uGHB|M`)bmoc~1b)?w<~=09HA*~&yL+vl``Xg<@`-9CF)HaZ_8Rn$JIWek8vBLcL(LNUi81{~zfos~k6IKFle1 z-Jf>#bAdYG_@x-RUCh!W)mQCuUC7<*zV&8Pe@r zsP|xJ7~`+jdbc#8PwH1*vz$%*!qtD}s!C_~((^T(4R#ObPrU84{l?qKt zY|bYd+9JZbwDE(wlH$@uo{XX*A^}Q{;uDmfng=X*KC(`^Dl=pkjh-jfkqUq zoWb&j$vA;?k4{pM_qkhhLVs6A-C8njj%2~@Z(CXJrJAmEK6k2PkxJnyY0?#EzraaVCr-LgVz+el_@tn2>&f_J#z%1ru}^ygk4>EToUvft3vD@1 zuA*Ir>}9QU7FJ#>%zHAEq5Z(tOH0mr+-jI}``R2??|T|-rJrP(y4R>IRZw5(Sn28I z>Zkrc{ehancczMmCuYxEGUZ80R?c>{))~bwCYsxNn()tC_^e{0@|91DCq4TngnM5S z-SFPaZt2dG+=eH+WfopDE4Wq{-^Kl4r_%biC9l6(-N{HBOKc)JnczX`pQTtsz8gGQ}q_D|eeDios z@`NWdnCv8L-%owFa@8uW7!&Kp#d6ax^sIk0KlWnI!;V_Q(TJ%8u^_B|;r z&F1g=FFbx*sQg~>zm%}&32%wn?+Y*QKWN7_=|%kGi<46nkM}rEPEm9>((F-Tw+!^m z%9f3I)cH-QV8UYclauFYs9fwxOEXC~57G%ZbJynN#fdJTr5+n8Z0u6`^*k)C;{08v zlZKClD&A-rFve;6ep2H6edMxOoN$b)Q>{xx4Bu0|Nttr>mdKI;Vst0E`H-q5uE@ literal 0 HcmV?d00001 diff --git a/build/android/res/drawable-xxxhdpi/ic_stat_notification_icon_enabled.png b/build/android/res/drawable-xxxhdpi/ic_stat_notification_icon_enabled.png new file mode 100644 index 0000000000000000000000000000000000000000..1916b8637779ee3e058b1065792b217f810a44e4 GIT binary patch literal 1932 zcmeAS@N?(olHy`uVBq!ia0y~yU`POA4mJh`hDS5XEf^TsgFRgwLn`LHoqIMv%vI!= z=F+tiO^m`#oT{gm`{pnxa~)g47CS+rNvLqCOT@urI}#la3B_jc2z1O);@%)+z`=RT zj5X;3$Cuon^Xv4^#r)p4z4-my^}ny4n>^?19Lw`HHtFxq?9>i(fdCy{27M-d=D(%C zA2BD0ZeWyHbz3}{A-gg8faQbUZIc*y7^)jTA2_~N!Lj#`@B!rnu^l(ughD>tXRKqh zI>7uu!ysUL{!9k8#>ofb4-}_vKA@Vw@?!OEci|PO>G|OwChxOhvddTDJRtBv^uvzR z506+Ku-LFP&%T@C3*+v_*DD{We-p6a5b|u zQqz}n?aQ>EWcyH~bcM1@);y2g9m~v?e`^uU3UfcvwmVwa+EqC|oxef(z$>k}aoja4 z-5S;&zAOD%)ktL(*BNid+@;HUU7p9QSD!WCDCz3-)3`Bi?)z5-N&bz&2c&$hZ#P_K z%xzxQTY4bUMeFysrGIP~_n!Mclkxh5l=O+04@5MW?aFOm)~on{`GHuSvBJhrpIAPX z?pu3S@$$d7I_aww9JU&-xV5YOw%mkmA1ayBtnOcV)_8wHZ+@uX?5P3^Zb>nGQ#|d_ z@vrr?@P^Aj)y#T5_Qh~UsWPtGYnLGM!&-pzUnNtXmHqjZnLPc<4R1R_uFA6Ch+yB* zkS2UCqg-Srry|?z>UjGm_?H<)7z6&}VvsOFkBug8pif~vt3t67YE$+Jq7;y3M6Jo9CL z+lskoc&{IrZ=0ny9_iI0MS@u>Q3f}rKZ`G=gE{o?%e9T`=)ZL9=u$8FXpFOPfVHBTF;}$8!vjzUCD7E z`hfl{yZH-F%`QAOQ-{gwg!mfUsa7FI4doN9*Y5f}-%ap?%+H!1kAoB$EBJRTwEUf^ z!^p`Qeruo1%8B*OfBJ)ZRTlhSkhdi0ITPaz|9{E7$Amw~SZ=!;y0W;DL54w%_m>2x z2J^&*S%RD^BvC2v)`r~^8;a%_D?Z>X3RS)ldsd5aPp8Nmja^drJ(%Xae{Rk>W3PXP z4CB4;pJ%gl-B&m1YT)~%v*N0k1yo5^aB_RlhMH{IgC`+@(1}eWFgR|2K3w zo0bN?T)X-wPvtV>V@B2L40{-4ocyZi2ZqLmh+V%r$Jx*3yRNwInrZi&56G{ym=Y~M z_06tXo)Z^^#UCj;)EF}u@z_vpX>oGI7OZ&!V&*7%9#$+SDoG$~3VowrPB& z{ruL8KT5Ni-zlHoQ7E6o3%Qs$7JuHID;4?qw02zUip9!}9w&Y`A4_|( z&sQUQeWvmgd6Q)VTZ8{iH#9A(@jS71b*ILptBko5KOI`DmlgJbe~Q&7({sO{a6WvU zwd?!gZF;NnZWdnt$vCI{r0^;Iw=WpFUN2gv+jEZp!4BVf7fw7-SJpIpWX%mRBYF^dn9foPQ8)zu#@c1ob)2=RVK2{&YFu9RIe|nQDlKS>68`rY;t>l<}IZ!N9=4;OXk;vd$@?2>`wylHvdW literal 0 HcmV?d00001 diff --git a/build/android/splash-drawable-1280x1920.svg b/build/android/splash-drawable-1280x1920.svg new file mode 100644 index 0000000..4e75fae --- /dev/null +++ b/build/android/splash-drawable-1280x1920.svg @@ -0,0 +1,73 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-1280x720.svg b/build/android/splash-drawable-1280x720.svg new file mode 100644 index 0000000..b56de82 --- /dev/null +++ b/build/android/splash-drawable-1280x720.svg @@ -0,0 +1,72 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-1600x960.svg b/build/android/splash-drawable-1600x960.svg new file mode 100644 index 0000000..b6e1ae4 --- /dev/null +++ b/build/android/splash-drawable-1600x960.svg @@ -0,0 +1,72 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-1920x1280.svg b/build/android/splash-drawable-1920x1280.svg new file mode 100644 index 0000000..4a6b202 --- /dev/null +++ b/build/android/splash-drawable-1920x1280.svg @@ -0,0 +1,72 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-320x480.svg b/build/android/splash-drawable-320x480.svg new file mode 100644 index 0000000..8ab1169 --- /dev/null +++ b/build/android/splash-drawable-320x480.svg @@ -0,0 +1,69 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-480x320.svg b/build/android/splash-drawable-480x320.svg new file mode 100644 index 0000000..97a80b8 --- /dev/null +++ b/build/android/splash-drawable-480x320.svg @@ -0,0 +1,68 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-480x800.svg b/build/android/splash-drawable-480x800.svg new file mode 100644 index 0000000..f95b925 --- /dev/null +++ b/build/android/splash-drawable-480x800.svg @@ -0,0 +1,73 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-720x1280.svg b/build/android/splash-drawable-720x1280.svg new file mode 100644 index 0000000..77993e5 --- /dev/null +++ b/build/android/splash-drawable-720x1280.svg @@ -0,0 +1,73 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-800x480.svg b/build/android/splash-drawable-800x480.svg new file mode 100644 index 0000000..9adec9d --- /dev/null +++ b/build/android/splash-drawable-800x480.svg @@ -0,0 +1,72 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash-drawable-960x1600.svg b/build/android/splash-drawable-960x1600.svg new file mode 100644 index 0000000..d3ad235 --- /dev/null +++ b/build/android/splash-drawable-960x1600.svg @@ -0,0 +1,73 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/android/splash.svg b/build/android/splash.svg new file mode 100644 index 0000000..f516cba --- /dev/null +++ b/build/android/splash.svg @@ -0,0 +1,68 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/ios/AppIcon.svg b/build/ios/AppIcon.svg new file mode 100644 index 0000000..d077488 --- /dev/null +++ b/build/ios/AppIcon.svg @@ -0,0 +1,68 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/build/ios/build.bash b/build/ios/build.bash new file mode 100755 index 0000000..3672e14 --- /dev/null +++ b/build/ios/build.bash @@ -0,0 +1,33 @@ +#!/bin/bash + +TARGET='/home/mal/Code/Angular/metasocket/ios/App/App/Assets.xcassets' +RESOURCES='/home/mal/Code/Angular/metasocket/build/ios' + +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-20x20@1x.png -w 20 -h 20 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-20x20@2x.png -w 40 -h 40 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-20x20@2x-1.png -w 40 -h 40 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-20x20@3x.png -w 60 -h 60 --export-overwrite + +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-29x29@1x.png -w 29 -h 29 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-29x29@2x.png -w 58 -h 58 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-29x29@2x-1.png -w 58 -h 58 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-29x29@3x.png -w 87 -h 87 --export-overwrite + +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-40x40@1x.png -w 40 -h 40 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-40x40@2x.png -w 80 -h 80 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-40x40@2x-1.png -w 80 -h 80 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-40x40@3x.png -w 120 -h 120 --export-overwrite + +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-60x60@2x.png -w 120 -h 120 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-60x60@3x.png -w 180 -h 180 --export-overwrite + +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-76x76@1x.png -w 76 -h 76 --export-overwrite +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-76x76@2x.png -w 152 -h 152 --export-overwrite + +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-83.5x83.5@2x.png -w 167 -h 167 --export-overwrite + +inkscape ${RESOURCES}/AppIcon.svg -o ${TARGET}/AppIcon.appiconset/AppIcon-512@2x.png -w 1024 -h 1024 --export-overwrite + +inkscape ${RESOURCES}/splash.svg -o ${TARGET}/Splash.imageset/splash-2732x2732.png -w 2732 -h 2732 --export-overwrite +inkscape ${RESOURCES}/splash.svg -o ${TARGET}/Splash.imageset/splash-2732x2732-1.png -w 2732 -h 2732 --export-overwrite +inkscape ${RESOURCES}/splash.svg -o ${TARGET}/Splash.imageset/splash-2732x2732-2.png -w 2732 -h 2732 --export-overwrite diff --git a/build/ios/splash.svg b/build/ios/splash.svg new file mode 100644 index 0000000..3a9cc2e --- /dev/null +++ b/build/ios/splash.svg @@ -0,0 +1,68 @@ + + + + + + + + image/svg+xml + + + + + + + + diff --git a/config.xml b/config.xml new file mode 100644 index 0000000..3e6546d --- /dev/null +++ b/config.xml @@ -0,0 +1,101 @@ + + + METAsocket + WowApp's awesome instant messenger + Ionic Framework Team + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ionic.config.json b/ionic.config.json index b8710bf..8bd5282 100644 --- a/ionic.config.json +++ b/ionic.config.json @@ -1,5 +1,7 @@ { "name": "metasocket-cordova", - "integrations": {}, + "integrations": { + "cordova": {} + }, "type": "angular" } diff --git a/package-lock.json b/package-lock.json index 4504aac..4fcbe94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1566,6 +1566,53 @@ "to-fast-properties": "^2.0.0" } }, + "@capacitor/core": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-2.4.6.tgz", + "integrity": "sha512-3KLSMorCELA5RNRXwHOGlRGuxXaxCEYHC29wOUxObicI2mf14hbMJWylt4QBzNmSqh3/ha7u4/CAZMoJUQR/QA==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "@ionic-native/background-mode": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/@ionic-native/background-mode/-/background-mode-5.31.1.tgz", + "integrity": "sha512-m5pCR2/QPblE5u9eqRC04qUyHkB0FzgD0a3/G6Q1Xx00BmuBeA/95BB2Htyrt3Ly/pp3W+ynTwljFMeDayi6bw==", + "requires": { + "@types/cordova": "^0.0.34" + } + }, + "@ionic-native/core": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-5.31.1.tgz", + "integrity": "sha512-dbJHezSuY8OqyFwyQiS+5QscA/BONhWitXgniljEblC5kQeLOCe+8p30JYHXj9xDciYzfqFP8ICmyaGOqUHJYw==", + "requires": { + "@types/cordova": "^0.0.34" + } + }, + "@ionic-native/foreground-service": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/@ionic-native/foreground-service/-/foreground-service-5.31.1.tgz", + "integrity": "sha512-ln+2b9VgynZaemcAq+8v0BQ6Qxnx4veebVnAGsZ5fGzwqGIW9qMAbzncWJo9k7CK/jWDjZiqviIbKTxw4uPptQ==", + "requires": { + "@types/cordova": "^0.0.34" + } + }, + "@ionic-native/local-notifications": { + "version": "5.31.1", + "resolved": "https://registry.npmjs.org/@ionic-native/local-notifications/-/local-notifications-5.31.1.tgz", + "integrity": "sha512-OOd4EUnnfpDbvuJIwh3UzJ/6fFMTmf8f43mAfU0URkUS/LVJpl9aJzDCOLIB+0RXo+ZeRqW17q44qgUArgz1VQ==", + "requires": { + "@types/cordova": "^0.0.34" + } + }, "@ionic/angular": { "version": "5.5.5", "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-5.5.5.tgz", @@ -1646,6 +1693,25 @@ "schema-utils": "^2.7.0" } }, + "@netflix/nerror": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@netflix/nerror/-/nerror-1.1.3.tgz", + "integrity": "sha512-b+MGNyP9/LXkapreJzNUzcvuzZslj/RGgdVVJ16P2wSlYatfLycPObImqVJSmNAdyeShvNeM/pl3sVZsObFueg==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "extsprintf": "^1.4.0", + "lodash": "^4.17.15" + }, + "dependencies": { + "extsprintf": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.0.tgz", + "integrity": "sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=", + "dev": true + } + } + }, "@ngtools/webpack": { "version": "11.1.4", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.1.4.tgz", @@ -1826,6 +1892,11 @@ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "dev": true }, + "@types/cordova": { + "version": "0.0.34", + "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", + "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ=" + }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -2215,6 +2286,29 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, + "android-versions": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.6.0.tgz", + "integrity": "sha512-ojC2Ig7b/KJ6iNtR8e4bacmOsJyEkoERk3CKMIsnH7kJz5z6551NMbrVaRb7KXYavu1d74Uhml/bfcmqT3nAcg==", + "dev": true, + "requires": { + "semver": "^5.7.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "ansi": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.1.tgz", + "integrity": "sha1-DELU+xcWDVqa8eSEus4cZpIsGyE=", + "dev": true + }, "ansi-colors": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", @@ -2495,6 +2589,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -2679,6 +2779,12 @@ "tweetnacl": "^0.14.3" } }, + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==", + "dev": true + }, "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -2790,6 +2896,15 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3836,6 +3951,296 @@ } } }, + "cordova-android": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-9.0.0.tgz", + "integrity": "sha512-2ZEgApK4LPMYW0zh/mLAH3CabzCaKE0yxQTzA2wTf0Eo2HHTJnRtDCf9spGf3nPOkubyXS6+pvzz5QzNHpVTqQ==", + "dev": true, + "requires": { + "android-versions": "^1.5.0", + "cordova-common": "^4.0.1", + "execa": "^4.0.2", + "fs-extra": "^9.0.1", + "nopt": "^4.0.3", + "properties-parser": "^0.3.1", + "which": "^2.0.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cordova-common": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cordova-common/-/cordova-common-4.0.2.tgz", + "integrity": "sha512-od7aNShyuBajzPY83mUEO8tERwwWdFklXETHiXP5Ft87CWeo/tSuwNPFztyTy8XYc74yXdogXKPTJeUHuVzB8Q==", + "dev": true, + "requires": { + "@netflix/nerror": "^1.1.3", + "ansi": "^0.3.1", + "bplist-parser": "^0.2.0", + "cross-spawn": "^7.0.1", + "elementtree": "^0.1.7", + "endent": "^1.4.1", + "fast-glob": "^3.2.2", + "fs-extra": "^9.0.0", + "glob": "^7.1.6", + "plist": "^3.0.1", + "q": "^1.5.1", + "read-chunk": "^3.2.0", + "strip-bom": "^4.0.0", + "underscore": "^1.9.2" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "cordova-plugin-background-mode": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-background-mode/-/cordova-plugin-background-mode-0.7.3.tgz", + "integrity": "sha512-LsU1v7EgTUROaks+tcQ8TnMzVUcU/TwjDVwj2O/4e4aI2q2ldLGsiZorqKqfqvwh2HoIssmY73OwJk91hQi62w==", + "dev": true + }, + "cordova-plugin-badge": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/cordova-plugin-badge/-/cordova-plugin-badge-0.8.8.tgz", + "integrity": "sha512-RhIBtd5xhD/iLnxjt35jvOae28oNW/wtMZBOmQR3Rf0y4wirvA1bpAZEhBoFqL+rZGhsd6ddOdQXdex1T0DRyQ==", + "dev": true + }, + "cordova-plugin-device": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.3.tgz", + "integrity": "sha512-Jb3V72btxf3XHpkPQsGdyc8N6tVBYn1vsxSFj43fIz9vonJDUThYPCJJHqk6PX6N4dJw6I4FjxkpfCR4LDYMlw==", + "dev": true + }, + "cordova-plugin-foreground-service": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-foreground-service/-/cordova-plugin-foreground-service-1.1.3.tgz", + "integrity": "sha512-/C2Z8w9JIfAaLeXP290msQP9jcHR+CAJYbp6/x+mS21VtvS2Ug0upKsgjEzzSzRnt08Mr8kuwCV7juUd6eCWcw==", + "dev": true + }, + "cordova-plugin-ionic-keyboard": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-keyboard/-/cordova-plugin-ionic-keyboard-2.2.0.tgz", + "integrity": "sha512-yDUG+9ieKVRitq5mGlNxjaZh/MgEhFFIgTIPhqSbUaQ8UuZbawy5mhJAVClqY97q8/rcQtL6dCDa7x2sEtCLcA==", + "dev": true + }, + "cordova-plugin-ionic-webview": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-4.2.1.tgz", + "integrity": "sha512-7KrmqLaOGq1RP8N2z1ezN1kqkWFzTwwMvQ3/qAkd+exxFZuOe3DIN4eaU1gdNphsxdirI8Ajnr9q4So5vQbWqw==", + "dev": true + }, + "cordova-plugin-local-notification": { + "version": "0.9.0-beta.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-local-notification/-/cordova-plugin-local-notification-0.9.0-beta.2.tgz", + "integrity": "sha512-63n77K1pt8dnbWnNR8QWETi9Glezi1bvNHvHWmGNIOv0xCb0phZnm+Ku49BQ+omwe8Z5voMvrA4I03SYPpv38w==", + "dev": true + }, + "cordova-plugin-splashscreen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-5.0.2.tgz", + "integrity": "sha1-dH509W4gHNWFvGLRS8oZ9oZ/8e0=", + "dev": true + }, + "cordova-plugin-statusbar": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/cordova-plugin-statusbar/-/cordova-plugin-statusbar-2.4.2.tgz", + "integrity": "sha1-/B+9wNjXAzp+jh8ff/FnrJvU+vY=", + "dev": true + }, + "cordova-plugin-whitelist": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.3.tgz", + "integrity": "sha1-tehezbv+Wu3tQKG/TuI3LmfZb7Q=", + "dev": true + }, "core-js": { "version": "3.8.2", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.2.tgz", @@ -4490,6 +4895,12 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, "deep-equal": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", @@ -4876,6 +5287,23 @@ "integrity": "sha512-GEQw+6dNWjueXGkGfjgm7dAMtXfEqrfDG3uWcZdeaD4cZ3dKYdPRQVruVXQRXtPLtOr5GNVVlNLRMChOZ611pQ==", "dev": true }, + "elementtree": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", + "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=", + "dev": true, + "requires": { + "sax": "1.1.4" + }, + "dependencies": { + "sax": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", + "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=", + "dev": true + } + } + }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -4948,6 +5376,17 @@ "once": "^1.4.0" } }, + "endent": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/endent/-/endent-1.4.1.tgz", + "integrity": "sha512-buHTb5c8AC9NshtP6dgmNLYkiT+olskbq1z6cEGvfGCF3Qphbu/1zz5Xu+yjTDln8RbxNhPoUyJ5H8MSrp1olQ==", + "dev": true, + "requires": { + "dedent": "^0.7.0", + "fast-json-parse": "^1.0.3", + "objectorarray": "^1.0.4" + } + }, "engine.io": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz", @@ -5550,6 +5989,12 @@ "picomatch": "^2.2.1" } }, + "fast-json-parse": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fast-json-parse/-/fast-json-parse-1.0.3.tgz", + "integrity": "sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==", + "dev": true + }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -6531,6 +6976,12 @@ "debug": "4" } }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -8894,6 +9345,12 @@ "has": "^1.0.3" } }, + "objectorarray": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/objectorarray/-/objectorarray-1.0.4.tgz", + "integrity": "sha512-91k8bjcldstRz1bG6zJo8lWD7c6QXcB4nTDUqiEvIL1xAsLoZlOOZZG+nd6YPz+V7zY1580J4Xxh1vZtyv4i/w==", + "dev": true + }, "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", @@ -9042,12 +9499,28 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -9379,6 +9852,25 @@ "find-up": "^4.0.0" } }, + "plist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz", + "integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==", + "dev": true, + "requires": { + "base64-js": "^1.2.3", + "xmlbuilder": "^9.0.7", + "xmldom": "0.1.x" + }, + "dependencies": { + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + } + } + }, "pnp-webpack-plugin": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", @@ -10804,6 +11296,15 @@ } } }, + "properties-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/properties-parser/-/properties-parser-0.3.1.tgz", + "integrity": "sha1-ExbpU5/7/ZOEXjabIRAiq9R4dxo=", + "dev": true, + "requires": { + "string.prototype.codepointat": "^0.2.0" + } + }, "protractor": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", @@ -11335,6 +11836,16 @@ } } }, + "read-chunk": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/read-chunk/-/read-chunk-3.2.0.tgz", + "integrity": "sha512-CEjy9LCzhmD7nUpJ1oVOE6s/hBkejlcJEgLQHVnQznOSilOPb+kpKktlLfFDK3/WP43+F80xkUTM2VOkYoSYvQ==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "with-open-file": "^0.1.6" + } + }, "read-package-json-fast": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz", @@ -12906,6 +13417,12 @@ "strip-ansi": "^6.0.0" } }, + "string.prototype.codepointat": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz", + "integrity": "sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg==", + "dev": true + }, "string.prototype.trimend": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", @@ -12952,12 +13469,24 @@ "ansi-regex": "^5.0.0" } }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, "style-loader": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", @@ -13534,6 +14063,12 @@ "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", "dev": true }, + "underscore": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.12.0.tgz", + "integrity": "sha512-21rQzss/XPMjolTiIezSu3JAjgagXKROtNrYFEOWK109qY1Uv2tVjPTZ1ci2HgvQDA16gHYSthQIJfB+XId/rQ==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -15053,6 +15588,17 @@ "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", "dev": true }, + "with-open-file": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/with-open-file/-/with-open-file-0.1.7.tgz", + "integrity": "sha512-ecJS2/oHtESJ1t3ZfMI3B7KIDKyfN0O16miWxdn30zdh66Yd3LsRFebXZXq6GU4xfxLf6nVxp9kIqElb5fqczA==", + "dev": true, + "requires": { + "p-finally": "^1.0.0", + "p-try": "^2.1.0", + "pify": "^4.0.1" + } + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -15175,6 +15721,12 @@ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true }, + "xmldom": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz", + "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==", + "dev": true + }, "xmlhttprequest-ssl": { "version": "1.5.5", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", diff --git a/package.json b/package.json index 1d20ded..22176bd 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,11 @@ "@angular/platform-browser": "~11.2.0", "@angular/platform-browser-dynamic": "~11.2.0", "@angular/router": "~11.2.0", + "@capacitor/core": "^2.4.6", + "@ionic-native/background-mode": "^5.31.1", + "@ionic-native/core": "^5.31.1", + "@ionic-native/foreground-service": "^5.31.1", + "@ionic-native/local-notifications": "^5.31.1", "@ionic/angular": "^5.5.2", "rxjs": "~6.6.0", "tslib": "^2.0.0", @@ -35,6 +40,17 @@ "@types/jasminewd2": "~2.0.3", "@types/node": "^12.11.1", "codelyzer": "^6.0.0", + "cordova-android": "^9.0.0", + "cordova-plugin-background-mode": "^0.7.3", + "cordova-plugin-badge": "^0.8.8", + "cordova-plugin-device": "^2.0.3", + "cordova-plugin-foreground-service": "^1.1.3", + "cordova-plugin-ionic-keyboard": "^2.2.0", + "cordova-plugin-ionic-webview": "^4.2.1", + "cordova-plugin-local-notification": "^0.9.0-beta.2", + "cordova-plugin-splashscreen": "^5.0.2", + "cordova-plugin-statusbar": "^2.4.2", + "cordova-plugin-whitelist": "^1.3.3", "jasmine-core": "~3.6.0", "jasmine-spec-reporter": "~5.0.0", "karma": "~5.2.0", @@ -48,5 +64,23 @@ "tslint": "~6.1.0", "typescript": "~4.0.2" }, - "description": "An Ionic project" + "description": "An Ionic project", + "cordova": { + "plugins": { + "cordova-plugin-local-notification": {}, + "cordova-plugin-whitelist": {}, + "cordova-plugin-statusbar": {}, + "cordova-plugin-device": {}, + "cordova-plugin-splashscreen": {}, + "cordova-plugin-ionic-webview": { + "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+" + }, + "cordova-plugin-ionic-keyboard": {}, + "cordova-plugin-background-mode": {}, + "cordova-plugin-foreground-service": {} + }, + "platforms": [ + "android" + ] + } } diff --git a/resources/android/icon/drawable-hdpi-icon.png b/resources/android/icon/drawable-hdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..091328638e895a70a5c8e1db00ab161929af9adf GIT binary patch literal 1694 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 literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-mdpi-icon.png b/resources/android/icon/drawable-mdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f63070620cc3ff9b41bae5cc680c37acfdc43cd7 GIT binary patch literal 1319 zcmeAS@N?(olHy`uVBq!ia0y~yU@!n-4mJh`hH$2z?FtiraCx-)87O+s=oDaV6jV=anZc-dY-OhayGlao$w`5W9fieJZbmFF zR*E%xF-79IL0iY^G&ZRTAJaP|&djTcJeJ1GKierfjctmp$y$f#U%&r$t#sR$zrXtY z&hNi-&+q&`M?2?Y?##!cZCZC&oQ`%i6ePPk?AWNJa3?^;;Y!C9^Q*}n<}E%41o9W` zTPYW)to3QSu7mC>%l~&PKXrfJ`Qx#xkdUxQE>GU4Ytmt#x<7A>*}C9jR?2!s?}n(5 z%NK4rWQA!lyk30ma>-uLi5$**8lUy0ElOI%;Nj=LY~$L%Z5)nSnu=L2Qv35&RF#jW z=iM>$D-1L2^JJHNpSI!S+1|SA6<>}kv+ZKPuwNR5~c=NM>f9Lz>zqY>qwXnPK9iz--KE2o-M=tJKY-gq^sTr{@ z%AhXc$jbt@r(z~8F1;N~&pzUvebivS$>l$(o4@~ln9t9=&b0pBr|Z)V=bQZA>h0(M z%;`0&XQ!;-+CICjQyk|m?R)cm)8BJ5{byxn=0qBls z7R&RU|8ddIKewh!d9PfzHqO8-PkQ;D4Rbc$Kkg*Vu)zGq#<=Z^%wI5CgjeS|-q2y^ z3z7ZstR>`=f?^B98{x9N|0T2M#9Bt|-=t?<*}#67e}n(6n}4pQX?1C-Ok|fluF+7| zE7pE@;fyEUH=M7zep_@>`=;}>hAV4A&V(6Hy*ibnNg;djQUwmCsaL1YSo^Huc&UQN zt`jyFq`y27eL69G%JH^d=@oyMm_0bDB-*4<@Md%JoAo#N9rDxlzj%HRkMVo2ch@(n zY*tXY{oWR+#t1XG~del0@E7l^Ho-s7r zHpl#Y)|FK6X}*y?`+h`sR7mmWziR1za})FOD&tgt=Y4%RtMucS`OA6A_>+ELR=XK~ z&G(OyQy53)^^ABC{-f0%VhJ7Q7w+BnJ9=Dnlc%Ta$%R5zZB{8?Z%isWFyX@B zQ@vcX!n6uM79Pp#a+P2H{9}ASvs&%SjUtybCx4H=((&fb*2(i`+xpndCQ z1uZrw*0eIDrKP>tb#LHCtJEn`o<**`1xW-Xj9sLgb! jSCsMLv95-K$MrlV=iU`teYav@U|{fc^>bP0l+XkK3Qcuk literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-xhdpi-icon.png b/resources/android/icon/drawable-xhdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..717b017efe157766519514b478ce925e0e810e38 GIT binary patch literal 2028 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 Co+e2E literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-xxxhdpi-icon.png b/resources/android/icon/drawable-xxxhdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..53d8b39dbefde928dd4a789fc4ace2eb601a5bae GIT binary patch literal 3594 zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Bd2>3_*8t*cliYI14-?iy0U=KZ7vio!uJ^ z85kHOOI#yLg7ec#$`gxH8OqDc^)mCai<1)zQuXqS(r3T3kz!!ro$l%47*a9k?cM5t zsiktqKk~aHlZKk`0acU+>;ev?^XW+&r>OA-v4y)>tMI~nFA`Yl0f6jW^vp`f)Q88ju5vSPxO%mDnVwyK> zFxc#VDYjj1Zgt8m+m<+|xeHI+o6=i-{605>gpfVU-d|r1E#&8W_^Y(ez^@pjdDd2u zV7b{$3@Ggq{O%BuJlecp$;a9lv^!f?`#|@{~ZwzJ$VpqueX8==N6j2&@x zy|T&zd;dsTyC|eGRO#+N<|p`K>mR9`$`kY$_D+vaZs+(CSJ!(+u;oa3_w;A^*Cn61 zoSP=ILnyXwZt?MJvJv|-Dp%j1Y-20=m+hNz+JgVux|**4w*3j)pB{P6$Y-A6%>|te zhnk#pX6@woTKctZu5pCyS-Au8w_@kI>D4zcXKZC{&8@q?qw{gW`5V?oTGZn;7x;SypD=(rq;iG5;PIG+m3dV$j{P~r@ zV!kPc;hceb-0fep7M^~;@;l4cKhNuI)GL(!o{NkK=y-l*V z{P&r#-9DQ?OBbB1 zvHrDw@eJ!yy{uK)O;&vR?Xx137-mk74~`D*ULG{h>Ed-)r@rTBPbRAy=HIdjiC-&L zWaF05$na*vpINI;X)W>hJHGw@zpxjDj1P7%dT)?^NhW6H4y7+UR=FosF$Bxc*19Tu zZ(B(0%0qWn76%qBa=BsX?KdUi+!D(jH7_@9NH$BqCj7WP%`WA}&loQmKDgu-`xhu{>vPLGAHA=Wv-ByujtIkt)3Z1G`OejPGehf7 zOE~{J7xAKPPdNTQoO*Sd{Du>%0mVxC?K}Q73fEeu9DT~JBf+4c#-vyO!NoP<>QixaO7V@$IX>@TPD|XxS(9B>*KZUqx+`Mua(?tx|Pj8 z)qk#4`JqWuy)Qi8Zo8+h_Iz~phUaT-+5A=8wlIEqcU`*tUiI?x>%YIe&i;AX*~3>? zt!DE}wVzvmSu*?IF1GTXU5B54m-+dpqfxjs^|tqd==ZxscmCYTxL=i%@nP(tjd{m+ zg-wqy+s4bl@Tl#0;@@*$J6?(1xIJlwj*=16>wB^7Ew_cw$hn4Z<6~fGyJsZwx_q7c z^%?8Z`jvY10%JGi9k)8t-(g-Ya`&bk!-AL2>&^FXm)vNZd{*x0r$xz&H)ft!JHp#< zTrJ|PA;`e+MgEF>^H z<>!w#7t+)E7fEN{m;U1OQgVL1;nVcfAA^p0uUNg-xI*jq%C#$xPQE<<$fY$)?d}J; zJ)7?TQ*+`HliP7jf?$ONquvikDk zj`HORe`7*dF>HBSpKy!W_y3)PjT=3aB^x>2dZk<6oV{7lX31z$%QLk{&_mea^wa-8 z?;A56-WpTa+au^9*s%WT|DUgW4jAm47Ox!5GL2tBMTNzC^R%Q(izi3@wR2mrf7`Tp z)s&Bz=y~AT2z?? z{+@X6+q|3+q&eX|CkUSAm#DYAqPtAm?A^VN+4bec2ab2Vk?Oqo*nM$AIpeDJVcc`h zS%)v;wu~++iLE;jHQjj``-DmJn!fauIG=m^;=zI1`aS$dk9P+~1+BVWxoFYi4Taa; zcw~$WUL?Dg^&YwVZuiFg>vmVJUE!K>&iXsc_ILe%&hmE3H=UlY_jvaDeTGkJ_RXl{ ze|>xQ{bR@FYjSSWbF5NTimPo&C4Sr_2*MI8=q{)ow++Z-biV_ znQ?ZfP;5o%;nllhKL0MN_@B6E_tV(J=bm@JWUP2)TcP$<(pmY1#4W+d%E&{?9Q_=} zf62Z!)JdFi;W5*J2Rja)xI433FEF-6?)r+;^Pcg&x9@4KkLuWE_4)peGhe(F7&7); z>*&Ato1^(L+v58N>e}W6e<^PAn`@o;_S;sE9mhJ9^wf{zG477yFou+cO5DBrcNxV_biyQ)hLOz(BGf5-}MBF)(- z0B#~(mS1Mip0RS@Iyvriohh$63%}31%j&=6zUA4fL%+YAS+2YNPXjA6!<(;1Zg^GP zELQerV=!R4xZ}^gNHc~8!Hz>uzn{It$k3w@5%cd_q#Z+pAWPTj`(~MTN}juyTBdvR z#dPX9pSx+eMLDK(o!NVZzXjLZfBd`so_D6_V5+V*bTv>oQsE z+b3LRV7M<>@N@5HvBta8E9OxA+_!)iOhDmgq{Dco_I~*(y&zWIV%(X55#<{2Y z&4(WzP|oasFjx1zM`?Kaf+-vgC&V@D6x%%XQ7c{=^8Pa`_?Pf6-NvE8z`(%Z>FVdQ I&MBb@0D+Cgs{jB1 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-land-hdpi-screen.png b/resources/android/splash/drawable-land-hdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..1932966a8d87750346c4e6298e004f1da4343b85 GIT binary patch literal 5542 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 GLK6T^t<3=d literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-land-mdpi-screen.png b/resources/android/splash/drawable-land-mdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..e00f74be9655e5e81bb2ba502397025d4add6bc8 GIT binary patch literal 4212 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⪙+`s;u)-l;P|vxB zyVfRWcQdvo{%yN-q&)hl?B=k)Ia7Z)O=Xc-Rq|mWyZdwRxgRg>n!d^1 zv+&20!;fDspC=Z-ViKs+_MVY>wC9H2ZXmJ>9FQ(<(|_iV_cbT>JlU{>fq{X+)78&q Iol`;+0IW|!2mk;8 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-land-xhdpi-screen.png b/resources/android/splash/drawable-land-xhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..533d3a7afefabd16ec708b8e116286576bd14ebd GIT binary patch literal 8397 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 R65By0db;|#taD0e0svmyvc&)Z literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-land-xxhdpi-screen.png b/resources/android/splash/drawable-land-xxhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..f64e1549a44b18a26fe8c509c5950f7daa18e26e GIT binary patch literal 11274 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 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-land-xxxhdpi-screen.png b/resources/android/splash/drawable-land-xxxhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..47844f89c7487ff3f05328f15f67aee14ebf25ac GIT binary patch literal 15718 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 DnXiPm literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-hdpi-screen.png b/resources/android/splash/drawable-port-hdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..0089232c1d19646c8499028686ef5981a32942c0 GIT binary patch literal 6023 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 Jvd$@?2>=`n$u0l@ literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-xhdpi-screen.png b/resources/android/splash/drawable-port-xhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f1315175971e871c33a61d4d26f0695ebfbbcd GIT binary patch literal 9371 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 Jmvv4FO#m3_I*9-P literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-xxhdpi-screen.png b/resources/android/splash/drawable-port-xxhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..83af9479143dc087c9eb606b6accd0a19424cf38 GIT binary patch literal 12484 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 Hl+XkKW@GZa literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-xxxhdpi-screen.png b/resources/android/splash/drawable-port-xxxhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..76e01cc228b975374bcb7c6c56356f8f6e956bc0 GIT binary patch literal 17086 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 literal 0 HcmV?d00001 diff --git a/resources/icon.png b/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0dfc0ca140bb4e42417f18184364530d381c6a73 GIT binary patch literal 18444 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 literal 0 HcmV?d00001 diff --git a/src/app/api.service.ts b/src/app/api.service.ts new file mode 100644 index 0000000..7e6cee8 --- /dev/null +++ b/src/app/api.service.ts @@ -0,0 +1,52 @@ +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs'; +import {HttpClient} from '@angular/common/http'; +import {Token} from './token'; +import {Host} from './host'; +import {ChatMessage} from './chat.message'; +import {ChatTokenResponse} from './chat.token'; + +@Injectable({ + providedIn: 'root' +}) +export class ApiService { + public static userToken: string; + + constructor(private client: HttpClient) { + } + + storeData(key: string, value: string): void + { + sessionStorage.setItem(key, value); + } + + getFromStorage(key: string): string { + return sessionStorage.getItem(key); + } + + getAuthToken(username: string, password: string): Observable { + return this.client.post(Host.URL + '/token', {username, password}); + } + + getChatToken(authToken: string): Observable { + return this.client.get( + Host.URL + '/session/chat', + {headers: {Authorization: 'Bearer ' + authToken}} + ); + } + + getChatHistory(token: string, offset: number, limit: number): Observable { + return this.client.get( + Host.URL + '/session/chat/history?limit=' + limit + '&offset=' + offset, + {headers: {Authorization: 'Bearer ' + token}} + ); + } + + deleteAuthToken(token: string): Observable + { + return this.client.delete( + Host.URL + '/token/' + token, + {headers: {Authorization: 'Bearer ' + token}} + ); + } +} diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index e7b0d5a..75b1f5d 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -2,15 +2,6 @@ import { NgModule } from '@angular/core'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; const routes: Routes = [ - { - path: 'home', - loadChildren: () => import('./home/home.module').then( m => m.HomePageModule) - }, - { - path: '', - redirectTo: 'home', - pathMatch: 'full' - }, ]; @NgModule({ diff --git a/src/app/app.component.html b/src/app/app.component.html index 13b9677..0b117df 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,3 +1,4 @@ - + + diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 913de3d..01abf81 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,10 +1,23 @@ import { Component } from '@angular/core'; +import { ApiService } from './api.service'; @Component({ selector: 'app-root', - templateUrl: 'app.component.html', - styleUrls: ['app.component.scss'], + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] }) export class AppComponent { - constructor() {} + public static token: string = null; + + title = 'METAsocket'; + + public constructor(private apiService: ApiService) + { + AppComponent.token = this.apiService.getFromStorage('token'); + } + + public getToken(): string + { + return AppComponent.token; + } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index f8b75ac..be80f6c 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -4,14 +4,25 @@ import { RouteReuseStrategy } from '@angular/router'; import { IonicModule, IonicRouteStrategy } from '@ionic/angular'; +import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; + import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; +import {ChatComponent} from './chat/chat.component'; +import {LoginComponent} from './login/login.component'; +import {TopbarComponent} from './topbar/topbar.component'; +import {LocalNotifications} from '@ionic-native/local-notifications/ngx'; +import {BackgroundMode} from '@ionic-native/background-mode/ngx'; +import {ForegroundService} from '@ionic-native/foreground-service/ngx'; @NgModule({ - declarations: [AppComponent], + declarations: [AppComponent, ChatComponent, LoginComponent, TopbarComponent], entryComponents: [], - imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule], - providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }], + imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule, FormsModule, HttpClientModule], + providers: [ + { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }, LocalNotifications, BackgroundMode, ForegroundService + ], bootstrap: [AppComponent], }) export class AppModule {} diff --git a/src/app/chat.message.ts b/src/app/chat.message.ts new file mode 100644 index 0000000..69b362c --- /dev/null +++ b/src/app/chat.message.ts @@ -0,0 +1,7 @@ +export interface ChatMessage +{ + userId: number; + username: string; + message: string; + datetime: string; +} diff --git a/src/app/chat.token.ts b/src/app/chat.token.ts new file mode 100644 index 0000000..2062282 --- /dev/null +++ b/src/app/chat.token.ts @@ -0,0 +1,5 @@ +export interface ChatTokenResponse +{ + userId: number; + token: string; +} diff --git a/src/app/chat/chat.component.html b/src/app/chat/chat.component.html new file mode 100644 index 0000000..6ea002a --- /dev/null +++ b/src/app/chat/chat.component.html @@ -0,0 +1,17 @@ +
+ +
+
+ +
+
{{message.username}}
+
{{message.message}}
+
{{message.datetime}}
+
+
+
+ +
+ +
+
diff --git a/src/app/chat/chat.component.scss b/src/app/chat/chat.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/chat/chat.component.spec.ts b/src/app/chat/chat.component.spec.ts new file mode 100644 index 0000000..89a60fa --- /dev/null +++ b/src/app/chat/chat.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { ChatComponent } from './chat.component'; + +describe('ChatComponent', () => { + let component: ChatComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ChatComponent ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(ChatComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/chat/chat.component.ts b/src/app/chat/chat.component.ts new file mode 100644 index 0000000..f3ee026 --- /dev/null +++ b/src/app/chat/chat.component.ts @@ -0,0 +1,162 @@ +import {Plugins, AppState} from '@capacitor/core'; +import {AfterViewChecked, AfterViewInit, Component, ElementRef, OnInit, ViewChild} from '@angular/core'; +import {ChatMessage} from '../chat.message'; +import {Host} from '../host'; +import {ApiService} from '../api.service'; +import {WebsocketListener} from '../websocket.listener'; +import {WebsocketService} from '../websocket.service'; +import {LocalNotifications} from '@ionic-native/local-notifications/ngx'; +import {BackgroundMode} from '@ionic-native/background-mode/ngx'; +import {ForegroundService} from '@ionic-native/foreground-service/ngx'; + +const {App} = Plugins; + +@Component({ + selector: 'app-chat', + templateUrl: './chat.component.html', + styleUrls: ['./chat.component.scss'], +}) +export class ChatComponent implements OnInit, AfterViewInit, AfterViewChecked, WebsocketListener { + messages: ChatMessage[] = []; + userToken: string; + userId: number; + url: string; + + @ViewChild('chatPostArea') chatPostArea: ElementRef; + chatText: string; + + private oldScrollHeight = 0; + private messageOffset = 0; + private messageLimit = 10; + private hasBeenReloaded = false; + private hasFocus = true; + + public constructor( + private apiService: ApiService, + private websocketService: WebsocketService, + private localNotifications: LocalNotifications, + private backgroundMode: BackgroundMode, + private foregroundService: ForegroundService + ) { + this.userToken = this.apiService.getFromStorage('token'); + this.userId = Number(this.apiService.getFromStorage('userId')); + this.url = Host.URL; + this.websocketService.setListener(this); + this.websocketService.initializeSocket(this.apiService.getFromStorage('chatToken')); + this.backgroundMode.disableBatteryOptimizations(); + this.backgroundMode.disableWebViewOptimizations(); + } + + ngAfterViewInit(): void { + this.chatPostArea.nativeElement.scroll(0, this.chatPostArea.nativeElement.scrollHeight); + } + + ngAfterViewChecked(): void { + if (this.oldScrollHeight !== this.chatPostArea.nativeElement.scrollHeight) { + const scrollTop = this.chatPostArea.nativeElement.scrollTop; + const clientHeight = this.chatPostArea.nativeElement.clientHeight; + + if (this.hasBeenReloaded) { + this.chatPostArea.nativeElement.scroll(0, this.chatPostArea.nativeElement.scrollHeight - this.oldScrollHeight); + this.hasBeenReloaded = false; + } else if (scrollTop + clientHeight > this.oldScrollHeight - 10) { + this.chatPostArea.nativeElement.scroll(0, this.oldScrollHeight); + } + + this.oldScrollHeight = this.chatPostArea.nativeElement.scrollHeight; + } + } + + ngOnInit(): void { + if (this.userToken === null) { + return; + } + + this.localNotifications.requestPermission(); + + this.foregroundService.start('METAsocket', 'The chat for WowApp', 'ic_stat_notification_icon_enabled'); + + this.apiService.getChatHistory(this.userToken, this.messageOffset, this.messageLimit).subscribe( + (response) => { + this.messages = response; + this.messageOffset += this.messageLimit; + } + ); + + App.addListener('appStateChange', (state: AppState) => { + this.hasFocus = state.isActive; + }); + + setInterval( + () => { + this.websocketService.sendKeepAliveMessage(); + }, 1000 * 60 // every minute + ); + } + + onScroll(): void { + if (this.chatPostArea.nativeElement.scrollTop === 0) { + this.apiService.getChatHistory(this.userToken, this.messageOffset, this.messageLimit).subscribe( + (response) => { + this.messages = response.concat(this.messages); + this.messageOffset += this.messageLimit; + this.hasBeenReloaded = true; + } + ); + } + } + + onTextInput(event: Event): void { + if (!(event instanceof KeyboardEvent)) { + return; + } + + switch (event.key) { + case 'Enter': + event.preventDefault(); + + if (this.chatText.trim() === '') { + return; + } + + this.websocketService.sendChatMessage(this.chatText); + this.chatText = ''; + + return; + + default: + return; + } + } + + onChatMessage(message: ChatMessage): void { + this.messages.push(message); + this.messageOffset++; + + if (message.userId === this.userId) { + return; + } + + this.triggerNotification(message); + } + + triggerNotification(message: ChatMessage): void + { + this.localNotifications.schedule( + { + title: message.username, + text: message.message, + id: 1, + priority: 2, + lockscreen: true, + autoClear: true, + icon: Host.URL + '/user/' + message.userId + '/avatar?token=' + this.userToken, + smallIcon: 'ic_stat_notification_icon_enabled', + led: {color: '#ff00ff', on: 500, off: 500}, + trigger: { at: new Date(new Date().getTime() + 1000) }, + sound: 'file://assets/audio/murloc.wav', + vibrate: true + } + ); + } +} diff --git a/src/app/host.ts b/src/app/host.ts new file mode 100644 index 0000000..e0bb978 --- /dev/null +++ b/src/app/host.ts @@ -0,0 +1,5 @@ +export class Host +{ + public static readonly URL: string = 'https://sabolli.de/wow/api/v1'; + public static readonly WEBSOCKET: string = 'wss://sabolli.de/metasocket'; +} diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html new file mode 100644 index 0000000..9b2927b --- /dev/null +++ b/src/app/login/login.component.html @@ -0,0 +1,20 @@ +
+
+ +

{{error}}

+ +
+ + + + + +
+
+
diff --git a/src/app/login/login.component.scss b/src/app/login/login.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/login/login.component.spec.ts b/src/app/login/login.component.spec.ts new file mode 100644 index 0000000..b9cb059 --- /dev/null +++ b/src/app/login/login.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ LoginComponent ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts new file mode 100644 index 0000000..fdb818e --- /dev/null +++ b/src/app/login/login.component.ts @@ -0,0 +1,71 @@ +import { Component, OnInit } from '@angular/core'; +import { ApiService } from '../api.service'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'] +}) +export class LoginComponent implements OnInit { + username = ''; + password = ''; + error: string = null; + + constructor(private apiService: ApiService) { } + + ngOnInit(): void {} + + login(event): void + { + event.target.disabled = true; + event.target.style.visibility = 'hidden'; + + this.apiService.getAuthToken(this.username, this.password).toPromise() + .then( + (response) => { + this.apiService.storeData('token', response.token); + + this.apiService.getChatToken(response.token).toPromise() + .then( + (chatTokenResponse) => { + this.apiService.storeData('chatToken', chatTokenResponse.token); + this.apiService.storeData('userId', chatTokenResponse.userId.toString()); + + window.location.reload(); + } + ).catch( + (error) => { + this.apiService.storeData('token', null); + this.error = error.name + ': ' + error.message; + + event.target.disabled = false; + event.target.style.visibility = 'visible'; + } + ); + } + ).catch ( + (error) => { + this.apiService.storeData('token', null); + + switch (error.status) { + case 401: + this.error = 'Login fehlgeschlagen: Die Zugangsdaten sind falsch!'; + break; + + case 0: + this.error = 'Verbindungsfehler: Konnte keine Verbindung zum Server herstellen!'; + break; + + default: + this.error = 'Fehler: Etwas unfassbar schlimmes ist passiert!'; + break; + } + + console.log(error); + + event.target.disabled = false; + event.target.style.visibility = 'visible'; + } + ); + } +} diff --git a/src/app/socket.keepalive.message.ts b/src/app/socket.keepalive.message.ts new file mode 100644 index 0000000..b7545a1 --- /dev/null +++ b/src/app/socket.keepalive.message.ts @@ -0,0 +1,4 @@ +export interface SocketKeepaliveMessage +{ + type: number; +} diff --git a/src/app/socket.received.message.ts b/src/app/socket.received.message.ts new file mode 100644 index 0000000..a33bc81 --- /dev/null +++ b/src/app/socket.received.message.ts @@ -0,0 +1,6 @@ +export interface SocketReceivedMessage { + type: number; + userId: number; + message: string; + datetime: string; +} diff --git a/src/app/socket.registration.message.ts b/src/app/socket.registration.message.ts new file mode 100644 index 0000000..11a7ea8 --- /dev/null +++ b/src/app/socket.registration.message.ts @@ -0,0 +1,5 @@ +export interface SocketRegistrationMessage { + type: number; + token: string; +} + diff --git a/src/app/socket.send.message.ts b/src/app/socket.send.message.ts new file mode 100644 index 0000000..cbe6572 --- /dev/null +++ b/src/app/socket.send.message.ts @@ -0,0 +1,4 @@ +export interface SocketSendMessage { + type: number; + message: string; +} diff --git a/src/app/token.ts b/src/app/token.ts new file mode 100644 index 0000000..8b6cc8e --- /dev/null +++ b/src/app/token.ts @@ -0,0 +1,3 @@ +export interface Token { + token: string; +} \ No newline at end of file diff --git a/src/app/topbar/topbar.component.html b/src/app/topbar/topbar.component.html new file mode 100644 index 0000000..c4a8244 --- /dev/null +++ b/src/app/topbar/topbar.component.html @@ -0,0 +1,4 @@ +
+ + +
diff --git a/src/app/topbar/topbar.component.scss b/src/app/topbar/topbar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/topbar/topbar.component.spec.ts b/src/app/topbar/topbar.component.spec.ts new file mode 100644 index 0000000..deb90d0 --- /dev/null +++ b/src/app/topbar/topbar.component.spec.ts @@ -0,0 +1,24 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { IonicModule } from '@ionic/angular'; + +import { TopbarComponent } from './topbar.component'; + +describe('TopbarComponent', () => { + let component: TopbarComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ TopbarComponent ], + imports: [IonicModule.forRoot()] + }).compileComponents(); + + fixture = TestBed.createComponent(TopbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + })); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/topbar/topbar.component.ts b/src/app/topbar/topbar.component.ts new file mode 100644 index 0000000..35173b5 --- /dev/null +++ b/src/app/topbar/topbar.component.ts @@ -0,0 +1,31 @@ +import {Component, Input, OnInit} from '@angular/core'; +import {ApiService} from '../api.service'; +import {AppComponent} from '../app.component'; +import {ForegroundService} from '@ionic-native/foreground-service/ngx'; + +@Component({ + selector: 'app-topbar', + templateUrl: './topbar.component.html', + styleUrls: ['./topbar.component.scss'] +}) +export class TopbarComponent implements OnInit { + @Input() token: string; + + constructor(private apiService: ApiService, private foregroundService: ForegroundService) { + } + + ngOnInit(): void { + } + + logout(): void { + this.apiService.deleteAuthToken(this.apiService.getFromStorage('token')).toPromise() + .then() + .catch( + (error) => {console.log(error); } + ); + this.apiService.storeData('token', null); + this.foregroundService.stop(); + + AppComponent.token = null; + } +} diff --git a/src/app/websocket.listener.ts b/src/app/websocket.listener.ts new file mode 100644 index 0000000..f318a2b --- /dev/null +++ b/src/app/websocket.listener.ts @@ -0,0 +1,6 @@ +import {ChatMessage} from './chat.message'; + +export interface WebsocketListener +{ + onChatMessage(message: ChatMessage): void; +} diff --git a/src/app/websocket.service.ts b/src/app/websocket.service.ts new file mode 100644 index 0000000..927ea46 --- /dev/null +++ b/src/app/websocket.service.ts @@ -0,0 +1,104 @@ +import {Injectable} from '@angular/core'; +import {Host} from './host'; +import {ChatMessage} from './chat.message'; +import {SocketRegistrationMessage} from './socket.registration.message'; +import {SocketReceivedMessage} from './socket.received.message'; +import {WebsocketListener} from './websocket.listener'; +import {SocketSendMessage} from './socket.send.message'; +import {SocketKeepaliveMessage} from './socket.keepalive.message'; + +@Injectable({ + providedIn: 'root' +}) +export class WebsocketService { + private socket: WebSocket = new WebSocket(Host.WEBSOCKET); + private userList: Map = new Map(); + private listener: WebsocketListener; + private chatToken: string; + + initializeSocket(chatToken: string): void { + this.chatToken = chatToken; + + this.socket = new WebSocket(Host.WEBSOCKET); + this.socket.addEventListener('open', () => { + this.authorize(); + }); + this.socket.addEventListener('message', (transmission: MessageEvent) => { + this.handleIncomingTransmission(transmission); + }); + this.socket.addEventListener( + 'close', + () => { + this.initializeSocket(this.chatToken); + this.authorize(); + } + ); + } + + setListener(listener: WebsocketListener): void { + this.listener = listener; + } + + sendChatMessage(message: string): void { + const socketMessage: SocketSendMessage = { + type: Response.CHAT_MESSAGE, + message + }; + this.socket.send(JSON.stringify(socketMessage)); + } + + sendKeepAliveMessage(): void { + const socketMessage: SocketKeepaliveMessage = { + type: Response.KEEP_ALIVE + }; + + this.socket.send(JSON.stringify(socketMessage)); + } + + private authorize(): void { + const message: SocketRegistrationMessage = {type: Response.REGISTRATION_MESSAGE, token: this.chatToken}; + this.socket.send(JSON.stringify(message)); + } + + private handleIncomingTransmission(transmission: MessageEvent): void { + const response = JSON.parse(transmission.data); + + switch (response.type) { + case Response.CHAT_MESSAGE: + const messageReceived: SocketReceivedMessage = response; + + const message: ChatMessage = { + userId: messageReceived.userId, + username: this.userList.get(messageReceived.userId), + datetime: messageReceived.datetime, + message: messageReceived.message + }; + + this.listener.onChatMessage(message); + + break; + + case Response.REGISTRATION_MESSAGE: + this.userList.set(response.userId, response.username); + break; + + case Response.USERLIST: + response.users.forEach( + (user) => { + this.userList.set(user.userId, user.username); + } + ); + break; + + default: + throw new Error('Unknown message type: ' + response.type); + } + } +} + +enum Response { + CHAT_MESSAGE = 1, + REGISTRATION_MESSAGE, + USERLIST, + KEEP_ALIVE +} diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/assets/audio/murloc.ogg b/src/assets/audio/murloc.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3c07d6034f4bf8b981f343ed076514aaf5216ce3 GIT binary patch literal 12000 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 Y(pGMYb9)-2ry45e8*?o9dW|Uq0J1(7zyJUM literal 0 HcmV?d00001 diff --git a/src/assets/audio/murloc.wav b/src/assets/audio/murloc.wav new file mode 100644 index 0000000000000000000000000000000000000000..bfc2395bd6fa18daf1a4a69b561bd49cdfbffdb0 GIT binary patch literal 77646 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ΞX{`? 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 literal 0 HcmV?d00001 diff --git a/src/assets/graphics/bg_responsive.jpg b/src/assets/graphics/bg_responsive.jpg new file mode 100644 index 0000000000000000000000000000000000000000..51d9314a9d961414f1f0f04117c3a7c5699a5149 GIT binary patch literal 20069 zcmex=C5bm;@P_1sVSzVUS{A zUF1D+5aD5kOWCEGBU!Y7#J9tm|5BW-(uilW@KOzU>0CtVEk!+v*KaU zmR7A9yjo`>t=7Ep6I*1(y4vccs$=JowLR-JUaam?4P+6zv!g^KB=X|SH3~YDru~{T z+2!b@vW{0fAJ2Ar!4mG&wN0fo=HuB_O({lyF6EDhpcA?eIKcfdQMtj>C)DPM+1!$;>Qz8R4pFnmIf3)`aX%pSHc+ z>N2`1Q_nq=yyQ4*=@>ar^7t7eIh z*d{NdYsY;xgnClCre0a(-6X&f$n=0Er6fDb$Lsop3(Z-JIV9Fjaod*kteYc|^RCI+ z9HAM}DN7o3HAAK>_0rlU7$UJqa7nI|(z;ol3qvOhUtN}_T^us?;zV(;M#(9eLY67dhs%9 z%4%=L$h+1e&ABrt2c0r^6$tv06gI^pYn92A&8w8Ng1n}^l+-FVb;(FM6qT%e>A<3u z+@T$d?uPk#itoJi!Z*e%Vl{tipeSo-S7haMzqc;aJC{xj&0W)AYPe+60FeD(J*Ft(TGWx?b8mYn?Fb@M0#R#U@uyJal8}&v_DB&9?r)t9Lg zGFvzsrB)hcuaa7{F|>2>s_4vlYttu1m})Lt?(N|-DLCuQsh5XLOgpwu7IqEYwdE9_ z(u&LrJ&iuS3;JgB6r9c06bM+?vDGJj_lRx`d`A>Rt-) z+S0YYNL*A`5~3%m)oxh6a)k-QMKN9@%_&^d3=Vs$hRzJ(V)F`X_YriPxo&R8>LV8v zwmNf1sVvOu>-O3>UHb-4OJb@SYoNPpw3@hLL}-acpm52@9r2h%TABB;%N2$kuZW3m8omT|5I6!Z$5C63Vb(k?M|; zSraE{Fa#z|5uF&~9IqG8pl#S68jD6C96E3C|PsZ%@5S8q|*4uORe z-!eytFmaslis-sz=rXHWNiQVOU#V+duMdNRU?c~l*AjtitSO!mE;-L*WdoXm5+_Tn zlA3jqW5Oe$FayrpApr-XVlHy6aa@qlGi#!kU-&{^hiSgbx2Dgt*-arEXQ&seRwyC%(gkg1g2?i!Q0hI?XYm&%D}t8P8H<@)|g}KX3uk- zvSLY9#+6GMRw~Pmw@S=)%V-t#oERP|$i{Kxz?yE&B~6;%V&T5wle9y&cKAtMnI7!f zqnR?ZVWICVHQ!|-C9cP0#jZ|Vq0JzW;kL+1>tX6iZ;f7-z2~iFm@c@n>1jzy>$N6k zj!iLL>#{DeyTl~iP|fCGopQ}#-Q*aFgI=nFQ&~ldb_IDZI_+z66@B#UWVtFC=$fH? z^Tw&=)`7vgIWs10^fq|ep)qxhXMXaT35{`2L*HD?oEaOmOHDAnv`jzPa@OqN6Hd2M zL|mrkmhAGF;=5`gqiLu{M$42`ja?Vt41p z#R&{b9g8wlUOY0}YPE2&(6q8MOJ~IhEQs2?@=4IvCf@MH-ZLXj=7#I;zMTB(%yf&H zleP(c^I2%O>)CS`orOyrnRQoPjh1NHaYRaUrRqVsV@*A?)}{q&2j~3CS>Izi<<8om zJ8pMp+MIkS9pg4VsKP5#wbG=)d+C~zJ5e{iSf_fn9hoY1_{PSN!#7?8O*@tOCinK{ z+iPs6daelB#dOGHC&w-CXv=2HC S$(phrlnHv{_u4^Gn)Tk2Ym$1WSGa8JN$c9y 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 + + + + + + + image/svg+xml + + + + + + + META + socket + diff --git a/src/assets/graphics/metasocket-icon.svg b/src/assets/graphics/metasocket-icon.svg new file mode 100644 index 0000000..721f05d --- /dev/null +++ b/src/assets/graphics/metasocket-icon.svg @@ -0,0 +1,61 @@ + + + + + + + + image/svg+xml + + + + + + + diff --git a/src/assets/icon/favicon.png b/src/assets/icon/favicon.png index 51888a7bbdb59f04c29c548523eb2638c1c954f5..fdc08a847ae4d89564c50b63b57f19d67e3d1f80 100644 GIT binary patch delta 1500 zcmZ3){+N4$WIY=L1H-D!!g~x144efXk;M!Q%z+@xxOXS3Is*fPWQl7;NpOBzNqJ&X zDnogBxn5>oc5!lIL8@MUQTpt6Hc|`>tOcGfjv*Cu-p-2m2@aPzzJL4M+{Q8vmJ53m ze7W;e4qNZ2vx;NXHrW}o-nH^wlHz@ zP;T~R%24o9_UJNJ?zqtSC)4|_+zr=X&$n&=F1O?Kp84i_&;Pu8|9kKEIo0RhPq{UF zqj|@6iPkHe9=$mYSV`VM<}FsbCkt*D@h7nvxbo!L@96#W_vaEPw+XxT>&53Do~yA% zM5x>I2*a`t$KYt;vL){wKKGxEPI7v;FJ{Y@?Fzceyk+fkXK*g!O*oouBE{ekR3ua= z{Drj&BuW-vG8`{u@ehkwtIY>9T^$t z=o!Zu=d+)IL1w+3T)9wm)z+5!*WX?-_GqF?JUZ(!( zxhHeQf0&8=dJ=i;__0JiQ|FaIZf|!#i+BDT{)AR(kP2O%LUc$$8V}lt6-=w`^n=U>z`l5oWrWMv< z?epTR7k#V!@<33`w%b5N+QK(LYidH5#Fp*#+YZ0~{CVQk8!{8pPdI<}KO3mNwBpg> z$8YNL%TJho-yzMspZCby=x?c#uk^0DnkJ@JvWCtN``C4O(g&3jdLCx=(}V>5n=*tS zzdEJ0%5L?czt!J`yQW@{VPLpi@0YxxUSOKC*oCaB+eevSA5Q!{MvyyBAyE>nG-uu0W(XgCrI67m~@aSo6*PDZz7N6p({^Bn6eoc8ForO`2Mr- z*$qjauly6aBo7As7x1eul(JjjAK??oRuR58;)6~?U76g~r&nM6TG|~FH^<_=MPP7X z^Us@=Iu&9MV!w8EslR8fU*hMG&g82p%9`Kdc{n{^(6l zlMC0GFU;P;ee-?V@gDon*Li&8Tf(OOsJE$Hc>D=xJ=^bHzZ0}KAB|}W5^3GlT`D-= zqt)o&+e5b_POmLI`g@Pvm9Q&Zzj_<~FmoDKGcJ1(FT6-Z?Wjz6uG+0gmG1Meoqb(< z7s$J9=!oL_{`JejGLs^U2}1k~hxhY8exk0vanBZ+qPZ;<4F}RR?yyXH6nV&3K~+v+ zi*!n;?}sy$9o^}PV7il?<2tCYde3^I{;8bHYsP5ZI_-Cg;x3?AN?}GP?^QAXV+^yK WAQdRvu$6& literal 930 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#RbOrc?xVjhkxOe>@3@B{k zjv@vI2Hlb%zhH)!AAhdBqt2wre)-wk21k~b_V_6$`}strw)7Ot%?vlVS}Ne}vCM4o z{_AJ7mxk!)r86)v&GK|{42d|rHvHwRRR%n)%hs@_h~6x@aIrA$$=~?*NvAJO+w|>O z`+Rv5MO#ZtU)9e1U1i@KmpI*S%VPPnd6~ELn+M0Px%=L17v0@H_1*GQt9GV^E*E{* zseXNOTKaL;^1Urz=Nx^u=l}i5_jas_nx@5HVDa8HN;19i;8*@B2PK>Cn66v4Zg%+L zvy5Ikxz}R2Mf^Wn?o8Rc{ZnnSS@oV;?XA~-xZj;Mr8nVT^@^IjrdvCIR`Oc@>al+j zCvwchgI`E7Ywo?;_`PQrzL_X7eb3+JpJNz9d_Di%PJhVsbR~mgqkr`NoX+Kvk_z$+ z6@5;AGrXHteCgCQ2NiXE@*kx^6be(7G=l*p$x%=EU6>!cmC~4x>WO18) zIQvITlCk7g?YVJcI_*z-W-~spz4yQ9&yGW1mUAXpnW?hyEia$5%gNi`^2{}*Fixf3 z+`nzY^V8xbts2?g!yYuB5-8t#`%kZ-+LiA+H?gdgxzu-dm#J3c&(qg8#|yRV^SpPw z6rlCNqtQ5#Z>7P8)W?#0nNt2vS;^34_-gg$C&smglNshZ-4o+yFXCjWTgLonMov7V zX42J{M&)`j9dngFC~=y$*T`gZUuR-+z0$O*yTu{bd2YL1T+2A8GrjPR`JZ`r%Zn5H=I$uC^3`eM zv~@PQUlRT=<^K5G|H-ZJ!$qB%o5lTaMqe&y3cvrq;OD)vzyH~NuW4w`byO{7U|?YI MboFyt=akR{016JplmGw# diff --git a/src/global.scss b/src/global.scss index d854de8..3116d92 100644 --- a/src/global.scss +++ b/src/global.scss @@ -1,26 +1,175 @@ -/* - * App Global CSS - * ---------------------------------------------------------------------------- - * Put style rules here that you want to apply globally. These styles are for - * the entire app and not just one component. Additionally, this file can be - * used as an entry point to import other CSS/Sass files to be included in the - * output CSS. - * For more information on global stylesheets, visit the documentation: - * https://ionicframework.com/docs/layout/global-stylesheets - */ +* { + box-sizing: border-box; + font-family: sans-serif; + outline: none; +} -/* Core CSS required for Ionic components to work properly */ -@import "~@ionic/angular/css/core.css"; +#chat { + background: rgb(27, 47, 114) url("assets/graphics/bg_responsive.jpg") repeat; + margin: 0; + font-size: 16px; + font-family: sans-serif; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + color: white; +} -/* Basic CSS for apps built with Ionic */ -@import "~@ionic/angular/css/normalize.css"; -@import "~@ionic/angular/css/structure.css"; -@import "~@ionic/angular/css/typography.css"; -@import '~@ionic/angular/css/display.css'; +#chat-post-area { + position: fixed; + top: 40px; + left: 0; + right: 0; + bottom: 50px; + overflow-x: hidden; + box-sizing: border-box; + padding-bottom: 20px; +} + +#chat-type-area { + position: fixed; + height: 50px; + left: 0; + right: 0; + bottom: 0; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.9); +} + +#chat-textarea { + width: 100%; + height: 100%; + background-color: #333333; + font-family: sans-serif; + font-size: 16px; + color: white; + border: 2px grey solid; + box-sizing: border-box; + padding: 5px; + resize: none; + outline: none; +} + +.chat-post { + background-color: rgba(37, 26, 37, 0.9); + border-radius: 0 20px 20px 0; + margin-right: 20px; + margin-left: 0; + margin-top: 10px; + margin-bottom: 10px; + padding: 20px; + overflow: hidden; +} + +.chat-own-post { + border-radius: 20px 0 0 20px; + margin-left: 20px; + margin-right: 0; + padding: 20px 0 20px 20px; + background-color: rgba(26, 37, 26, 0.9); +} + +.chat-avatar { + width: 64px; + height: 64px; + border-radius: 32px; + margin-right: 20px; + float: left; +} + +.chat-own-post > .chat-avatar { + margin-left: 20px; + float: right; +} + +.chat-username { + font-weight: bold; +} + +.chat-post-message { + margin-top: 10px; + overflow: hidden; +} + +.chat-datetime { + font-style: italic; + color: grey; + margin-top: 10px; +} + +#login { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgb(37, 26, 37); + display: flex; + align-items: center; +} + +#login-form { + max-width: 500px; + margin: auto; + text-align: center; + padding: 20px; +} + +#login-form label { + display: block; + color: white; + font-weight: bold; + margin-bottom: 20px; +} + +#login-form input { + display: block; + background-color: transparent; + border: solid 1px white; + color: white; + border-radius: 5px; + font-size: 18px; + width: 100%; + padding: 5px; +} + +#login-form input[type=submit] { + margin-top: 50px; +} + +.error-message { + background-color: #550000; + border: solid 1px red; + color: white; + padding: 5px; + margin-bottom: 30px; +} + +#metasocket-banner { + width: 100%; + margin-bottom: 50px; +} + +#metasocket-logo { + height: 100%; +} + +#topbar { + position: fixed; + top: 0; + left: 0; + right: 0; + height: 40px; + background-color: #888888; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.9); + padding: 5px; + display: inline-flex; + justify-content: space-between; +} + +#logout-button { + width: 70px; + text-align: center; +} -/* Optional CSS utils that can be commented out */ -@import "~@ionic/angular/css/padding.css"; -@import "~@ionic/angular/css/float-elements.css"; -@import "~@ionic/angular/css/text-alignment.css"; -@import "~@ionic/angular/css/text-transformation.css"; -@import "~@ionic/angular/css/flex-utils.css";