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 zcmV;!0zCbRP)6?E!&mDBo-6T^r+$_aErq#BqGK2umKvPf$kt%TlNoEl^| z`N+gT+mY|}0>2JAk>3sM7Wn-72;zG`dCVH5NH9FNHw@>XaOZjAxv z0(L_7e#NCSm<_$n(;r#;d9ZofpSKWFx@(0|mGxU6^me8@xSVp{3b#MsUjD`1f(4dC zIcP@qJOveCzBt$>@8QRRY{p4hW0vZ9cV(SkE%KkUUnpa1;bBhuLLxF<5E@?9+O>!6(j-zk9U;7;j#gcEpIFu5sodN?P0+>#dQZ5F`%#LYsG9Mq{qq}ps9FFO3 p>75xsXiCXDG^EzZ3iW>*{{U2m`UUxPdU*f<002ovPDHLkV1kLFM@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 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 SN|Pu60000 + + + + + + + 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 zcmV;P24VS$P) zFS%dtefpe}U+z8k+;g6Ci{D-B0Yj9SXm{XkhY2FU1QB3@2rxkem>>d75CJBL024%j z2_nD*5l}>svCIfQhgTwXQ1~1k#xkQKxz)528nzlxwW|t~6O%BNm~iR*CE88+!RPQe zc;X<`8Z|T;4VvqlspeP3PmkY4E16-d0oA*!0RUVK2mKm79zS}F{`>v3n()I{4gjR+ zQs8#G(Rs6zS{u{^`N|PcQc|EC0oszN2nr@gfQ#X<^3#>*zu%96zX#+t1pv@x>2T=e zA!w#)f?lU7iIclvR#0AmirNZd-1yiy)}^k)@Zc~2AZ=9|mS-#vsSV3@3vT>=0|1aP zHv#Rp+C}B~a&-4m{CMogklGMK)*x-zY6wY=$K!#y*6fu70LxY^LqT~#NbO8aOn3zi z4-R9$X+L(DcYxzK$=_AfRzRgv$r`vLe$7igR=#*V9vt}k0M0g_jkKvLw4H9lp6WgD zc*r+@+4eFNRTV|tRzzb^L3shHc2yDMJRT3~Om%2I(K_YY^JmYIy*?YU(_a zf$a6!(8g+m#*8{fv1P*+Jm`54^mB{BpDNoh~8ql zEFJ1k)nl4=+LUWbj5(o@YseKHxZUG!Z2M{(uKac-?7R_;L4%J5(Ra5G{8}C=waR-w zT5^EbcjMD1Poc}w`AL!^2aqvQ43rd2IRb%_CpR(!ky zHH9^@SYW9^QLMBW>6$ zShN7EH>?H#bXmG^_0m<@IjIOr`6vaOOEv=lHX1jgWMc{L{&kl|>X2EuWFeZ`nlR_R zIRJn&Kb)Z=i25TobM{O$wKXC6!(`g2MOpOzA{;+|+$)DBii|-sX3c=P#jHf?pd34M z471;vtw?Ug2I*j*A^*j;*jtPM6GVUsBA}R{G1r(vBEA7;x-0QxFqR)$9e`cqio61bO<64LJHjmb)M&F%26n<9d z_o+bx_BBs{y~PMn5tJ}Dfkqmt(CU+HLAop*F5J9;{Nj8X{h>mxAs6kp+M!>gmz_)2 znzZlsPr5!GqxR7^zRVGbu>GS_tH9^*va3oW7R2Z9Ft?b!RTdn_MO{+h-dKz(23hN} zWYs4{BuK1yDVmbRHV)+$afLk(5|iWY5XYfrUkxTFCy86n0I=kPB{=fa5oopk`|~cB z3zc6~;?AFUh&l2K^I)noiSEzGsA911`+abaxpDc|%fx(szYQxIK;pbaQ8@w}$H7!* zLSA8>WL#2m5*p7nA}&4-v*yh5JL2Nw(0Hy9Ny$l)IY@E@)EYGs=Os$U1S9N6tlQEJ zm&=9J%v8xZj^mKQXTV`|pr^BE%Jun4^U?fEv*b#kHdYIMEsyJ0u1_g{0YaApyskED z`L=}^7f3{7P*+D6UjFkEX)Dtt;{-{;#-#k>e59{RC$<$kJr+*86P9Zhzw^0tI zJtR2|dmC`_=t*K+Fe07@o&N4L%(dioXJJgDIZu+RfXc@zsa}yr zm4z=-^+^J9?;HUtb<)<`R?#tuwj4mbK1qO<9Drh_eK1K%$Po~eL{knx`M(;zl9ZGq z5GaYZ96+H3Gh>+%Ljyx$&srme&*70cFA=92PEpUzRul=a6-5F}5CJBL024%j2_nD* o5nzG{FhK;EAOcJf0VasRzni7a!Mc)pUH||907*qoM6N<$g7m`-VgLXD literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-ldpi-icon.png b/resources/android/icon/drawable-ldpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa79825eca379f4193d9397499b8fbc18525871 GIT binary patch literal 1060 zcmV+<1l#+GP)L*C2&$?gNfOtuTrcY7o`W9xL;Z-Nh$Kl|4qZ0fBWRPxorp(y25v4`u*3F?fPK&OI7?d^(P=!^fkkN2HP|>OQN>+j>v;B8sAJrV7@O zzt7L{?~iNN=AO^d)7eAjMFxP0$OOu=lD8|%3KNkD0A6NZ67U3=dp@Um$D!{I>DE-i z4CNMcsH%z}2=9aeh~18H_^ZS0YS;z9(_fx4{quC*o_Ud>r?ZE#TVvGJ)c~NXD!Ij6 zK_EeImU+JRF!195^S{pj3#Jrpv2J1Xr%`P6HiD;u+_-XMZ9o8SubY_%Gi!!fk+s@N zQ%e(fC-3U|83KK188${oqk~8^f~&)|<{+*P7m;WLN26o?K(a-qxwV0u8`)}Ogsw^uco+L^Rka&{NG*2TL&NA67 zv+a{@Ts(J?se4l;1Eo`Go+X|kSIOMJcc09He*4&XpS|1b##(J%cOYxE6}Q)I=%+jF zJqJAugx}BTh(sgU>TOhhT&a7XDp*6_ZZ8Aj0Yp(mu99i{vW?iC7;pZ3qw#aLJ2}vK zfX3!VDn6Q&|yvyW%r2~;pcW{WvL=>cl$Y8bmUrpc76 z!$oK`lc?X?l`L zqASn^{C!NTVE~5D4>J-TDF~!nL*ql^l$V!lZjC!^JMvTe!kG(H%9WZuum5-rz~0uq z*y?Q>+oj+oB0og*LK^p>_`^6$OH1r)+lQ*E1WyIIdF>_u*@Z0gzs+l&>_QfRZ47Sm)*Dvxi}SHuwV=^zWUnDhfLc`3 z(Aq$1Rw@ANqt?@Oy-AS>L%f0Jj%K1_q5w!vPo}Z0QML#{YAGRVL>j+uBqbxoXKvg! zPH|Q-j!6d@?`E*^&5eH7c=X332D%5(uGP}s*G{xP+Q(*OUPNdi_$G4h0s zKk@*r&8;{l9RTe4a1Xif=lZql`k{+~?g1Q=4lZ4|#L>E=J~k;CDOj#rFn(af>2L<+ z7BqxJjfkbq;tiX{FrPHj{AIKE`{8d71FkiH?()}{F`qR1wM$M<=0fWQNr@d1t&Tpm zltG=Pj_mic{mz+BnrUflSul2Q;2!HD*O8Q*v|zmL+cwUAdUnCs=-pAA4kwv8nLcaB z#KjQ1DVENT&Lsr|%>hrcEsj@zAZw$gAP54L)s>j7=77g_AV|8%JkT5TPC9eb_^#c*BB0_OrmNj0_hQ@>0 znc0vDgt~@e0oPitG1NO0(&hkzJ%e2N=89r}NjI?vYu{LlT2ynh{U&ElondZnd0r*^ zZuQ}sb@B9{rwn!vV*Ar3*;m$0{4zpT2x-@7Ulb3;dq@^wh&RyQ-%iEH6|zZ5MaiKO zI)*xA_1Kbfz>x5~CrICs&h&rNj0}#1!qo>Qhe|M=HX&+6atm|m?d;{r-%o=21r^}0 zp-JD7j?>{}^zNu%AC*c)YE~+7@o~g%ibWr%=kZ^U115c`u@uv3llNQHi0s_8lb)MB zOgxJ+aSHYpP_Vav!u^HlB6aRM#}E0%-59uY zK^LhD+ENA;(08kkl(YJh-1%Oywq~r>B<` z5HyLWoKsZosbc6C|Cd&EZS{i0PJBBt;9B$NN)D9-B!BmpmN zUQI)518MI(FQer&;PbKgp#a>!ywnFR4`f|r&;EVJk$p$J;iQy2fNji1Sy36bF?ZRZ zggnTsg#cz|X6U-nMeL?nP8d%pBJY8H!p@za@1Tp+VJb684x9OSy=tMC5i0`1jTHgm d#)^P&<9`fv&hB$M_c{Oo002ovPDHLkV1f!wbzuMi 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 zcma)7do&aL8{b6cmdgkum(ApLpO8x0n9IhLk!vfPdzYD7Ovq5or3sOePzn>dOe-rS zEbB#b%e*B_Ij^iYCH5xX`R8}e@0|CK_mAg!&iC`2=bZ2PKHtyhlYPY7T}d7y4*&p^ zFdk^Uq=s$}W9neChz;MopgNbqyX z!G~mydVSx3_WL)a%b9Hruk8`x+A2u~J7*4b5Bp7Ax?OW{l;jIGFrGeFwHweiG#%^a zVI8jB6t$@bppWBnEh@-WrfE5VSHj$;5^IDQ%7)ikb_FlHuCM=US}1pYe15LvW^d^w z1CYmnrz@4j7RKFF^V6^ zcmJLVu7fdo+U@&zG~1rTOx0{M1T@Q%mP~n*b5X;|^@;1PmdLE-#rYg=*RP?Ust@zs zKmGFN@`(yjZ}w7+#EEr@MTN?M+-X8ySN^soQ_uOK;vy%GJ!iIQ#=3I>@DaCB%%k?bn}=@)Aqrz4q0p-{I6lLiiI)) z$TZsYSXQm?Pu;WDC$b6Rjt3HZhBMrW_Ga}d2R|l#7`^9rr5*_Zi*9L=5o zV#VVt`}5lq2F4)OJ@-PXJ@IxUaSyk>OEtTWY)KGOG}PM#z`5|!3ij3vy zefPN#L>SE((RjIOT;btGI^2z0!M$#eX||^{2*2LAos2wQhO`j_W~vx{?QR&kRzorL zkr88T2ZoU^6ND|r^=lRsB3XkRbn$ZspL7xI-2=~#muNZ7!DC0@VmdY>t}F0M^uXVC zzJ2kLI_-d6f?$Ck#;NiSfa$o#R^R&mh8s?y(8Y}Lu;+JV0Q8wEVkyfjCo3)H?r?My zA{lmz(1#yceV}Z?3GvIVVbL#*O0UU^^HUpb{0%J(aX%cC&e(cGgvk{dj3HQGCpYP* zWiWIUjBJyapU8rB+NQ2g*cDOE#ygYaMAgC(`UM@8ovNAOL*;b;`g^+srk0JCChN^A zQ}N`xdSw`x?$do*as6@T&Ymq_J~*8gJj%wLj(k@6Bz7P|iEXb z!lMhnHJK}bfh%JxCKjdD&Iwr!V{jmdh%e_dv1#50=v z^I1|H>gZIsC|I3e~A}Z>k<-!+_f$nYb+cQ zCLjW{W3pQ&vVdV~Hn}!HWPx;)W|aCh4Fe%~N@31_(I2+YIB1ww^k#+FReCAF>cmX= zd(7m7#|&lf_r7ACg)d71)GH<^vgXmbYLsMQ?0#AL)x*wLQ|?mkY`;d{z0_>$uZ#+UQqM zK3C6EFF%jTHWP126bH6r*Xn-t>lk?nRmxWnNB}17ypVOijq5euc)nVId3ys%or2tP zQ6(t1tJH7~JOABGHGQ#jPnF;X=xYpr3*8KQI{OQTmLsfkjT_7s69pL(Zb_8uNq&Yz z4?lw^_ndrTJa+sgEoI>{KI}Kg=@Khc!@WxI4N=;#TH8f2l(nQ?!%jfM#PpS3A-=Xe z897e?&tof#lU4VrMH}f?HpMPb)uMNwsBUglZ43^0pm1#OyjFv7+qL+?HsiGKeVW)9 zR_sk^TI4b?C&@ho8(N-RkS!U|54E=Fotn_8nsV`3Cm>c%@*t8eBP>+yI>&0?jIp)L nh7?E&6(!yO!NC6KY#$Fnq|0i6`w`O;rv_kLz0r-%q3Qns67;9{ literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-xxhdpi-icon.png b/resources/android/icon/drawable-xxhdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cb7d4566685a7d214abf9fb10c4a14114879755d GIT binary patch literal 2785 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 YXR;y{u8a`{<0;@A+6MK?-0ki^0ji!RNdN!< 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 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 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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 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-land-ldpi-screen.png b/resources/android/splash/drawable-land-ldpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..b3b0cc09be4234fd8fa3297a7c0da1c4592a01e3 GIT binary patch literal 4222 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 A2mk;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 zcmeHNc~nzZ9=;$5Y5|ujh#(fK&Xh$I2ueU`714rdMMSZLSX7h%VGDu8kW8J?q9D^U zl|5LgC`*W_ERBRfMW~8^D5QWPEV3npfML%z_k!ol{MUba&YUxccTTwP=6reY-rw^5 zzTbN!9`*LnTWP!!0HAm1;QnI(Xv0&@7Tx7=Xr>8Hz+pwi!Bf!y=s!UpjRxYqv+&D} zG43a0e2C{`$Y-L?0Wz6vb1|F{9dst*oDDH5IBU$=7=SI{(EiVl$7M?dfk`=}oQ4VF zh?lzfUpLE-mYrPwmsaEDKh`CmxA^j_uOqeV1eSR{k2ZLHZGLjB-FK}G=8Rj~YSnT7 z&rYpfw|>3)pH>G~yeu?w+}3J!|Ix+knwpZvI z!bZEM?9TODr+sQsG!ClK%ri5P;zlDQv&ti~_~uWnl6e zEXXbHX>{d#POoeDy^VIklawDz#A0cYIGk5f!Wk^Yu{DA19j`!p>MKVoR}0h}kC@}{ zVEYCJ_-Nw3*SweB&uQ!eDWRX?*O9 zYQO0=_(_gq(GSq|*k&aUUE^atnB3laJ(AL~MEYAOU=-YD^H%}jbv`GF?&}+zFy822 zbv80g_<&X?w&Zah*gO_JxZ%Pp6x}2c3$j#_{55QA+=I#{MNft)HC9ZtgeH6>y@%TY zfbFRO)zk~Dv3h!}<8+|v?hZ4I>abQGbS>%K<16y*C zJ+I{RWKy<7@UX&0IeMpTZYB#mos{o9Kb}`Mf4j{znUSl0KjaQAg+Z1I`c%cufEKom zT$pW9nKIFACz|EO47B;h+N&h-2}f9*h_>`T;ZOUnI+Y*6Hpfl&dWc(_asE`M@O3F| zuX>=F|D#`EN9h~@7hyeQd^OzuH?tH)@Ao?eGhC9eh?Np1X*uDGEg!pQ7CKv-J{JGZ zAZ53a7Qky}R9~3BO`JwEe_a>z-cLsi+M=7C z9S5o8y^kLzC~Mf_{vmqR`IpSLVVt#8Swj^M2i+(M6sU`CH0pqZDCDaCk!Yg!$0dvm zPDTEA-MNQwoF1sCKe?g!KI4-I&k>tWJW-v)6PA z$41`pB4p?xwu@OR>&Ph+{pvf_5JnFTWrv%56!mM(3I~|94TH;Il)$jA(bcb}+^?Q~ z%5GEgDtQwflFhR_jggzthD(NGljphxk7N0w>nHfr)?J%~MX5TMLpfxhfU@_6PP3xg z`ru{Y({#*k`uI_H8UX3{=7T5s$N+vYrQytsZ8wP$QpOFwR*a3zYPGdRP{jHxtl|SK1 zdy<%hpOEg@Oq+e>PkSYb0f4Jg`pVsViViqm_om6+u9<;IzBj zgaN=`La~TR{#fHFZyNoDu!*eyn5yvuztMW6d$*_@@Etu5{Hgp-$}G=pgBk#1L~!=E zV78+iEhlz#i+#;MvNFB5JvZ)w{-|q<*cX6pE+2Y;Iej+(k3Z-ZXrAt}}q#ZbTgBQP8b$q&)m6VF0wav0o@_roQ_lcI^UF1?Q_=(d#+9#%#{~+atY+L z3Qh1^|9U)N=x;jdbX2IEBa8q3w{;Zm^S@8rSl9j4ri9Yo`_O8PL0xFcfbpiS(qfY9 zDL+qd|5mXtrAep>Zaqc@wV5bz%)J7+S{pI&^$nYO_uG|c19Ik>K2+|P{2awtDnW3h zz3n#HMl|&q06q(K>72~4iA{3F`EAdk9Ao>9WTtw%6krsg`%Gu1`zhR&u%IC4Pu5gv z%S4kix!qz1&LA9dvJH*mDfslj=LZ-s@c47v@>@Ew($0V^I`0=gA?D?vkXQna&1{l8G?V#9f<`A(i55wx0$_k6N%v=iF$MKdHBn zqM&bZ)8sc#b2*i&N6I4$ zxaX@8uBTu-v+yU`RZ(Kt5m>~TR8ivHkO6H=r8NMY{b*tLC8x{zhE4J>5GUc-yUxto ze+t}YCZ{MGfT1PFb^D3cG-XzTs`DqlsOj`rG2Do#_Qbl=V)<%Ua>tP9-bJE{H(8xF zGljPV4CmL&hYU80rq&`8y9LK-8=;dwe%R5%P;FE?+>g1%C)63iuu|I1Q@P85n-+`> zd^SulQ74Jto}-Qr&QYmeQ@Kq)SA<5K5=1tePD!xU0e0t`hNqkWNL?TUeVUTyP?b=5 zBD>=DU}KI?g=+l7nh2Bs;+nRruBzVob}|ofa8fF&c=?X?ybWva(}+oQYja2yvkOFE zv>-i#9FHjoYaqSXFEU026dUF}!(89RZ#%amx~aW@WJcWCyu^hIxKS4>n6W3q7!a)% z<%SU!ZRq1pgz3pD`ye+;kyCHroe@THeWDI71fnMM^_t9_--x$DdMHHZfm>=)z3WJB z?2;*%hyp3F{Mql4MtD09)Hz8eU)RSp2W6QR!C;8FkjFy8Uw~%4FAC|U% z#41=OH?ZGj0JeM&HyvSg_|kjgr_`BImZvNAVwg%fcwnd;aZ?vPmTJ8_9G2KFnDcr8 zw#QFz?r8mqVVcn~9aTu@Rud##g4q~}FzfMdwbc&*p+d_JinkRPWgq9{o{Sv-0) zT0;Lrotye^=5tHTq7_AjnH6{(T9lrZ>4i(|fnY1PR56TAZr~O219hrn1!btL^*_`A zYY}}|?1rVObAGt}#>-sl=v$7Yp~7K4hauhFYf5@y5MJ<)h8>~Q`d|AE+rwO|S>2@8 z$HrX*$iJMas}-2(PU%5ar6h$k-genE%K+GB9R81D-9OoK*}zwwq;it&3ywXjf(lLi zc2yHgxOcXTGTq#KgV5e($m52qMMkBw(ZmUI^ylOXt`}aq^8-I^ItWX1O(Iiia9f5RPh}{TnOO` zDoQ)iCOvGwx9BNdmBJ#C*+r>BT2wz3xr{a`b@iVS&;q%WeZMc(ut)^Y8;2`z8?AU* zGNY8pop#Zou$(GALN88`)eu95?64j*p`m*2I%!OMDE92#!a`VE+dOwvALq&0!sL0T z_vYDG50Kgv@Nj&z=tCwj32eXQ)BEQ+lG7C=q(LrwWnoxB@<+0yaFf}{hQs7HQ^LyX zAejbeMQaF(c;es~W3SnifxR29>}4f0_1{|K-Ng3efM99rTmdd@;}ISl270k{>9jPay1nUT6jRhG1Sp=7G8b+Vv(N{fxq6-PY=S+&S_qgHQ*;wU z1xYJ=CG1*$UIZ@mR$E!Rvwf>}cxTM=-`DF_j&vXHGlS5>o3dTw?(scg^RX4>bFH7j zG$omt{+x#eZfuh_F?^1npIKm1lmA|-4_YkY_2IGf#QP8Q+LD*c8=`id>FQ*lT=6sgB-@0Fou~1QK(37dTS$8YA0eU z4R#E@ITnQ&lbjDB)6DFNF^nFkmna%6`y;R3Q_$2U9W@{qsNb+!_Gj`@z=GKw&tBDuZAEOHmg zZ`tIxiv}e`5?A~Um?(lMgrBPX0qr4v`Z988FGVw6A~_?s3hiiIK_sK=lq^s|yx}(r zXlIoTB7=5@6*SOK3stESsZFFfL8P%Gr2<4skBF2Cq*Q=NsX$5vh?EKtDHTYm0QqZE zflg8?S7m_n{RiJ&aZw1Od>QT`l{IhRDxZbS30wkR)-7e@eCh}UBEweD>%i;{v#oRj zd&vDwv(6d5ZcNT*1c~p$lGyLCB6>ZccWEOd!G3M$q>!1^f@l(BKis{|l=+TQ&)Nc{w+0SsRI;6tO_uOTDb!9{P5+$&yZCC<#r3n&7G%jEb>Q!t$-LdsBeItJYwn z9FNqdsVn9vTV^R?RQ3V8G;NFrx|0J>iu@+-DZFd>`m&@m^bWG1oV*l4Jp4+k#gosc zD{q#0&*ZN(!!`?VF#65N@>S-%-!AHbODiU-mP3qUf@@`TG5IGVpZb}q+iFz0xfMrX z6+WMnHz@bkN02s>8yklJUu2zZNG~kxs1C!v$L81Io~|8)lWfzDr;kZJ8?q1z>qE2DRu>{)a~zOL8hFU&mE_xy|$1 z`@SN?%WdXOb3o%F$FEygdx3MG@J5mOEXW)@XbevbB7gSHo8x&_MsW(8YX~vLlz`yo z-1c3q<_keuzlI$=tl3oWgxdw}Ee}n5J26FFel_q^{5g2M(6+HIJ#h{Ex^fM?E9**G zU}&YOo45}+U*3Jnv|#p0+@kmfTlYHNbbh*&FjuZk&7pFGy3K!Zk2&K82WPKDkiDpb z@_P@cMT=YV^44`yFwVRT>|(EQZLlNFf8iHlcVV95WG-GTN=?b`qiK%#AEu!saK3mt3^_;nEJ+7cSbehqnD^I*C(!kQ*DIc4kzGU#DsJ%o`X*=PWcz>WO@#*u7N?T|NBwR_TnF5kGYO-9A0& zHI5n*OIw>$Q&1Mvzh`tE1e``ZF#Wd9rMG`G-B&6=2dZ-w)v0bj1as?Fkm*hzI9 zh@sG8I>tP?n}HQyydPT*qtB;-m_}W5)cB6iRC4&>Tw~0~`%aUW;wtWz(aVCHbiv=^ zweF8AaJ|2s?wC=znAo1qHYx+pgm#~W2t*^;XNF!$tzOLGGBs-`_db;-lLqJRK#%h& z`P8z|KJy7OF=*iUVQtqF>zTnpLR_(_GUZKe;AECHv$L8g(4znh>X?p@9tb$0g4JMh z=bmqkbXt5ZHlDhro4qG=oMjUD>cU~{YK-|r#hNQc8Ar|ij|oi6XMX+gEY|+AK4}2* zz?b=(%WPBm-~j;cx0`{NE#y_U0il(_G0Di% zG*(W3Wli5<1VOAiBn-%!t}${G`6bNJrvm2|npvL~Nm!_0#a5^wnU&k-Ryy8NlE%_6 zBmYCeY>E^xwJbXj*o%z=OsR}=B2bqy0zm@WpE>4>q>*I+CZe}2Fz!7++x<~qv_N0r zGAP7er=IeV(Atyv1F8AGoz_mS4#{aIzb(Gxe6A_&k7cp-gTOoYHdpk2qR;oBffQ+v zKT_PdIL?!y2D_F&(Vidkp?&q`kZ zDalYN(63%i)0rKC^|CtyI2R*&=&w^U$-})^KFg8NxivjNumb>F0dki|YNoMQK#piG zqley*Vl+3kmD#z@zK0IZj&)wb8G!a@4E{eoS55uVq>NiYvnvi3sA&4K?E?cFXVlm@ zfMjJ)lyx=&e^IS}*j1?58tMlY>{~mve)1aC{e+8q-v^E(z>(75;=yW^pRj4cwAqAu zz9p#E;$0@o1z`ogwo_R;@27S=l zj^NILmx1>1?M@FnamE3-s$NU)|nT;W-z>Daydag;z2^ zMNg5(ne>%?E|}*68$HkA^HEe_{pBc+s1+7f773kZn2_y9w`Z{4<_&C5SY9jYpQDMy zAN2^rPT@PJ8V8Jsx6&GbWx@kmF7h^7(0EUnD@*E!i6B(`^SNQ0M1?)kvR_LWW0VTj zM)RRKe8PN(qy}lrgt(hnmAo1}eKno9jhAmJ2g2knJny%VS3Uv@m=z&9zl%2k@r!K+ zXbGh1_wUggQL+9lSgeTZ!{9qWT;zDVa;N(j*f`KPJO+*B-tCUhjqtS}W1pqqVR|>4 z8pi|T_PAm)RAKySG-C;&H6k#t$d+Y5^UD`#8Twdi)x^cvX6oPHKDB`|(T?pZe>B7C z?ztWVrWXOJQs+Cpk(=tW-LwcNH*s-uAb@qYarqrQ&aQ8YMGj~NZ# z@B-lDf7D=&CT5R2>Jb_`v9XI^p!=ukYi~Wh%@NkS*`}*Ia%)zw8ooE^0%~mY6oGRk zr9}(KcMKt(Sso+?xoVOl&k32#)M!*CAL-+jngoos>n59efxj$pr^K#xA+lp8Yrv$2 zBbv*xC9@e8FcGuKMEB+~02nLX*sgodOd6~P2N%g-cw37=k(V=5-+|o|H$1e4^?9nb z1Y<64B(WLHBt2F}DaKhKn#|2I!_Pbx2%_z9E}?;CGSXfX`f-?#9hPj7tI$hL=-qM2TxTOGCEOf*=_?^++K=$|wTLI{$Q z&ZV?5g+0Mz&#=6~OU7c|Mgt0Ud&e)GPGZhZn(&_tephzlWi$+!m zq_A~?KmK*@p*6g6esZJuSWj7y$>@Cbl- z@!Ys#QHYzP!9ugGq>xLtYLfwFV6P}Ko5fM@?|V9DWu#2$tvI9AgWuMwd{MTQOK10^ z6);+ZnxfH?;u2DE|GttpD4Gc4tz1@@pLZZ!I2V(7=8=Ozgst{2#;$`QH|D)1!%>qFiq&hxXPOdf+USi zvZy78YsmhGeKEqeeA=T>XLesH@dazm%DhwHdVdXX@HrMwWXIwK@y!3Iid?>Yb}TOm zA2b4?FPU5KyEq*7G8Nm~nHjhNXYb?|?#S+@KX@3CUHk{3=o3nqI2puZeEolvt&w)- zVsC=oL`g?=G}eBMa7a{8NaE530eq?x^J1Rald)XG^6k3ypg?YdWu`^Eul3cVm(&&C zq@qq7U1b3hR$Z9pfvpYcNxqU&=P3ljD(?cNdl@4(wXie-;D~`>QqX;`aBUSvC26%~ z9aQ-@sPeW|n#Mt}GlP{8$S&Y>Cw zLkfG=4%^gPNS=OzruZLkD_QoR9eMNP8jOm$vSpWP)qbe@$J2kXk@C8c$_6F~Ng6q= zOu0Ev4eST+)_$NP0K?%8;mB9fCg@(!q`!V5|C>MNE;4h~nxNg6e<`nSbW(u{`mv@3 zlpyhHG9a6P_E`Zy3N#O!c=Qu7`9|Wb_evV5;KdaH8`z@cK%NBc|A>m?%|Z@>EV~T< z7vL|mDCt7}f=HD*Rq9kotbbW5mI7P~a4Eo{1^yq@UD9Be2K#>xcA0^p#zXAU9umBL N(E8}UlAk;h{sk5x%?bbj 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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 KvnVomyZmpNuY|V% 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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 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-mdpi-screen.png b/resources/android/splash/drawable-port-mdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..9785306246727473d2d7656e529a2d034838547d GIT binary patch literal 4554 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 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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 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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 P&a!Q@m09j4mp}g(JKK+p 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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
#2 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 fxK`l{HD literal 0 HcmV?d00001 diff --git a/src/assets/graphics/metasocket-banner.svg b/src/assets/graphics/metasocket-banner.svg new file mode 100644 index 0000000..ec9682f --- /dev/null +++ b/src/assets/graphics/metasocket-banner.svg @@ -0,0 +1,83 @@ + + + + + + + + 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 zcmV<21ta>R2jdHn8Gi-<0063Kaozv`010qNS#tmY15p3~15p9JxdkTx000?uMObuG zZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs000GWNklfYb>{jckC_2}q4>fYb>{4N(KMIxWd?+j0+L1~5eoZa=t< z{Qdc)LPn6gFMk)E!<{I!6cUR`!~mv^N-D2VnXh|T(q>eAT1*ec88sq z38D>P#cMPg06g`^4k0zIz%d~HKK3n>#Q zq1$1`$e`(mNb#FlSzbX&UI|`IzW@LnuRb1k5?gw;gn#Sy>i~ePU0LWD=sb0N0b>OfVQkLwy6UI*8R8}nc0~!W6#da!uY;%<8N!Z73Ukz zgQ6(TK7OAc)#cT2-fo=5f(j*Fccd&O;9S8V2T*Dw|}<7@ALDKmDn7RXUIeIPt8#$rFi1Q z6XWX2 zDylxK!u@;q6N;748~^~*e@js z6j}=5bUD#G(Thr3rKnh<4A3NLkeZf?^vrbF9d?)wn?xnUhr$mFak=#}(lgVMnwAPp z68EZ<55$H5t)_A5+e^?F=t+f)KwqH8)qn4=Lak8~i%E12P^y&3*^@&uWC%HXaya)9 zLXjsysS}VI*#MHk0&4+GO-_*v8N$@$6as4jqA`gX;P?4)=GYkw^$(E>8NpEh5Kez_ z8a}U&SWHm{cvrnx@GM|{b{^H`)#&=Ai&S2mIPW-7Q&EHY*?BB@7T{g=ii#)i1%ISY zKx#x8khLp|R34J$AlLwXfgU&ixQVh8Wug)ggSFg>j)4wQCs2YaLhNysR;Pu*Xu#s% zix?Rk5uAh&*t#ICreQ8MD5vUHE-ZO z1pGcfT%#@={P-YLDpk}r6h*;M%sm_!BLlm`4q8n|{7<1!z*J(w*yvcq(HOA)+MoOS zTukvkuMcNWoW+yJPxwe$&pFYB5T9dlt~a4;vqAXNji4V!u!vd;_x1F_b~JK0kP;67!@m#XSwytEv0orHLR zz-B1i1d`%e!c8D09w4+EWK~V@%z225XJJk7%z2232ME^#v^p*C1;~Hp9z^Q_TP=Po z?jaXMq)tF;WCNs5Kx$+Iq)tF;WCNs5Kx*E41O5S4K9Cww9e}j}0000 literal 930 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!x&nMcT-^(N+`Ik{1{5}NM-k9f zx+Ot=!3-}y{#<)Uok@}X^0T)Mjw~(h@l#Ir^NC7r=_#0-8E$a3RKVL~nc3p~*UxA# z4bjg_XJBBO<>}%W5^;EK_{&+V40u?Vtzk_Oy;*YMVqw~ozwz&rPG6d~>D#mR`SK=; zww9K@s-5|}%Dy=+ak|}>#qwwKGH>ZO4~|`P_r2LJy1RYqyXB`=?Mw?@F8Z!h{rcpz z^y94Mdt1KFIr?nR|NE2g?N}2vO^d(4;=OB>WP0Plul!REN;cgwUAJuA?C`^98NGCJ zuf=eS_OHmETd)0azdLJ6Z^FIm6*YNHw|4%lGf`stp1;dK$1sNYdj7ec{*dYEN(RM7|LFZWoy#R9733Kz`kee` zcsH&1+JCz2|7qRT%bgpNUdZ3E%i6T)I?vY6{p)ga_qlB<;GAPn(!{OF;x_wm_K%n( zW67=BbK}Hx+Mo2yW_)0K?|;#s9f!Uw=S;9NQ)S^>UOs1+lefL)nQKa6oJzg9f7^uT zr^QQJHL|;hJ!n29P`>r{pI$??E8ll+Vp%D3sqgGAQ?16Ir>}307i!n%dGB~BKleRm zV`}#;lUe7&`Rm%PqCLs%HOEe${KnWk%jlG>GM}cUf9>%Jt~^m(q1U%2$4$<)xHgTq zd0EM;Wjbazr!IcCcJ{`1i$kvS+;+RTmT^vJdf^@OKlARE7bo`3-BEDmtJB75>uhqr zB>Z2>{qec~lUw13i#jzoi~HY .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";