diff --git a/.gitignore b/.gitignore
index 5528da384..e1a04cb82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,5 +51,6 @@ src/assets/www/pdfjs/web/compressed.tracemonkey-pldi-09.pdf.pdf
node_modules_
node_modules__
plugins_
+android
ios
src/plugin/beast-orm
diff --git a/android-copy/.gitignore b/android-copy/.gitignore
deleted file mode 100644
index 63c86fe30..000000000
--- a/android-copy/.gitignore
+++ /dev/null
@@ -1,96 +0,0 @@
-# Using Android gitignore template: https://github.com/github/gitignore/blob/HEAD/Android.gitignore
-
-# Built application files
-*.apk
-*.aar
-*.ap_
-*.aab
-
-# Files for the ART/Dalvik VM
-*.dex
-
-# Java class files
-*.class
-
-# Generated files
-bin/
-gen/
-out/
-# Uncomment the following line in case you need and you don't have the release build type files in your app
-# release/
-
-# Gradle files
-.gradle/
-build/
-
-# Local configuration file (sdk path, etc)
-local.properties
-
-# Proguard folder generated by Eclipse
-proguard/
-
-# Log Files
-*.log
-
-# Android Studio Navigation editor temp files
-.navigation/
-
-# Android Studio captures folder
-captures/
-
-# IntelliJ
-*.iml
-.idea/workspace.xml
-.idea/tasks.xml
-.idea/gradle.xml
-.idea/assetWizardSettings.xml
-.idea/dictionaries
-.idea/libraries
-# Android Studio 3 in .gitignore file.
-.idea/caches
-.idea/modules.xml
-# Comment next line if keeping position of elements in Navigation Editor is relevant for you
-.idea/navEditor.xml
-
-# Keystore files
-# Uncomment the following lines if you do not want to check your keystore files in.
-#*.jks
-#*.keystore
-
-# External native build folder generated in Android Studio 2.2 and later
-.externalNativeBuild
-.cxx/
-
-# Google Services (e.g. APIs or Firebase)
-# google-services.json
-
-# Freeline
-freeline.py
-freeline/
-freeline_project_description.json
-
-# fastlane
-fastlane/report.xml
-fastlane/Preview.html
-fastlane/screenshots
-fastlane/test_output
-fastlane/readme.md
-
-# Version control
-vcs.xml
-
-# lint
-lint/intermediates/
-lint/generated/
-lint/outputs/
-lint/tmp/
-# lint/reports/
-
-# Android Profiling
-*.hprof
-
-# Cordova plugins for Capacitor
-capacitor-cordova-android-plugins
-
-# Copied web assets
-app/src/main/assets/public
diff --git a/android-copy/app/.gitignore b/android-copy/app/.gitignore
deleted file mode 100644
index 043df802a..000000000
--- a/android-copy/app/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/build/*
-!/build/.npmkeep
diff --git a/android-copy/app/build.gradle b/android-copy/app/build.gradle
deleted file mode 100644
index 4b03508bb..000000000
--- a/android-copy/app/build.gradle
+++ /dev/null
@@ -1,51 +0,0 @@
-apply plugin: 'com.android.application'
-
-android {
- compileSdkVersion rootProject.ext.compileSdkVersion
- defaultConfig {
- applicationId "com.capacitorjs.app.testapp"
- minSdkVersion rootProject.ext.minSdkVersion
- targetSdkVersion rootProject.ext.targetSdkVersion
- versionCode 1
- versionName "1.0"
- testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
- aaptOptions {
- // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
- // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61
- ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
- }
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-}
-
-repositories {
- flatDir{
- dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs'
- }
-}
-
-dependencies {
- implementation fileTree(include: ['*.jar'], dir: 'libs')
- implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
- implementation project(':capacitor-android')
- testImplementation "junit:junit:$junitVersion"
- androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
- androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
- implementation project(':capacitor-cordova-android-plugins')
-}
-
-apply from: 'capacitor.build.gradle'
-
-try {
- def servicesJSON = file('google-services.json')
- if (servicesJSON.text) {
- apply plugin: 'com.google.gms.google-services'
- }
-} catch(Exception e) {
- logger.warn("google-services.json not found, google-services plugin not applied. Push Notifications won't work")
-}
diff --git a/android-copy/app/capacitor.build.gradle b/android-copy/app/capacitor.build.gradle
deleted file mode 100644
index 6795d7e61..000000000
--- a/android-copy/app/capacitor.build.gradle
+++ /dev/null
@@ -1,37 +0,0 @@
-// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
-
-android {
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
-}
-
-apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
-dependencies {
- implementation project(':byteowls-capacitor-filesharer')
- implementation project(':capacitor-community-camera-preview')
- implementation project(':capacitor-app')
- implementation project(':capacitor-browser')
- implementation project(':capacitor-camera')
- implementation project(':capacitor-device')
- implementation project(':capacitor-filesystem')
- implementation project(':capacitor-haptics')
- implementation project(':capacitor-keyboard')
- implementation project(':capacitor-local-notifications')
- implementation project(':capacitor-network')
- implementation project(':capacitor-push-notifications')
- implementation project(':capacitor-share')
- implementation project(':capacitor-storage')
- implementation project(':capacitor-voice-recorder')
- implementation project(':capacitor2-file-picker')
- implementation "com.soundcloud.android:android-crop:1.0.0@aar"
- implementation "com.squareup.okhttp:okhttp-urlconnection:2+"
-}
-apply from: "../../node_modules/com-sarriaroman-photoviewer/src/android/photoviewer.gradle"
-apply from: "../../node_modules/cordova-android-support-gradle-release/cordova-android-support-gradle-release.gradle"
-apply from: "../../node_modules/cordova-plugin-fingerprint-aio/src/android/build.gradle"
-
-if (hasProperty('postBuildExtras')) {
- postBuildExtras()
-}
diff --git a/android-copy/app/proguard-rules.pro b/android-copy/app/proguard-rules.pro
deleted file mode 100644
index f1b424510..000000000
--- a/android-copy/app/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
diff --git a/android-copy/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java b/android-copy/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
deleted file mode 100644
index f2c2217ef..000000000
--- a/android-copy/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.getcapacitor.myapp;
-
-import static org.junit.Assert.*;
-
-import android.content.Context;
-import androidx.test.ext.junit.runners.AndroidJUnit4;
-import androidx.test.platform.app.InstrumentationRegistry;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * @see Testing documentation
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
-
- @Test
- public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
-
- assertEquals("com.getcapacitor.app", appContext.getPackageName());
- }
-}
diff --git a/android-copy/app/src/main/AndroidManifest.xml b/android-copy/app/src/main/AndroidManifest.xml
deleted file mode 100644
index 66301e3a7..000000000
--- a/android-copy/app/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android-copy/app/src/main/AndroidManifest.xml.orig b/android-copy/app/src/main/AndroidManifest.xml.orig
deleted file mode 100644
index 8d27de2b1..000000000
--- a/android-copy/app/src/main/AndroidManifest.xml.orig
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android-copy/app/src/main/assets/capacitor.config.json b/android-copy/app/src/main/assets/capacitor.config.json
deleted file mode 100644
index 2399c4927..000000000
--- a/android-copy/app/src/main/assets/capacitor.config.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "appId": "com.capacitorjs.app.testapp",
- "appName": "capacitor-testapp",
- "webDir": "www",
- "plugins": {
- "SplashScreen": {
- "launchAutoHide": false
- },
- "LocalNotifications": {
- "smallIcon": "ic_stat_icon_config_sample",
- "iconColor": "#CE0B7C"
- },
- "PushNotifications": {
- "presentationOptions": [
- "alert",
- "sound"
- ]
- }
- }
-}
diff --git a/android-copy/app/src/main/assets/capacitor.plugins.json b/android-copy/app/src/main/assets/capacitor.plugins.json
deleted file mode 100644
index 36daaa9bc..000000000
--- a/android-copy/app/src/main/assets/capacitor.plugins.json
+++ /dev/null
@@ -1,66 +0,0 @@
-[
- {
- "pkg": "@byteowls/capacitor-filesharer",
- "classpath": "com.byteowls.capacitor.filesharer.FileSharerPlugin"
- },
- {
- "pkg": "@capacitor-community/camera-preview",
- "classpath": "com.ahm.capacitor.camera.preview.CameraPreview"
- },
- {
- "pkg": "@capacitor/app",
- "classpath": "com.capacitorjs.plugins.app.AppPlugin"
- },
- {
- "pkg": "@capacitor/browser",
- "classpath": "com.capacitorjs.plugins.browser.BrowserPlugin"
- },
- {
- "pkg": "@capacitor/camera",
- "classpath": "com.capacitorjs.plugins.camera.CameraPlugin"
- },
- {
- "pkg": "@capacitor/device",
- "classpath": "com.capacitorjs.plugins.device.DevicePlugin"
- },
- {
- "pkg": "@capacitor/filesystem",
- "classpath": "com.capacitorjs.plugins.filesystem.FilesystemPlugin"
- },
- {
- "pkg": "@capacitor/haptics",
- "classpath": "com.capacitorjs.plugins.haptics.HapticsPlugin"
- },
- {
- "pkg": "@capacitor/keyboard",
- "classpath": "com.capacitorjs.plugins.keyboard.KeyboardPlugin"
- },
- {
- "pkg": "@capacitor/local-notifications",
- "classpath": "com.capacitorjs.plugins.localnotifications.LocalNotificationsPlugin"
- },
- {
- "pkg": "@capacitor/network",
- "classpath": "com.capacitorjs.plugins.network.NetworkPlugin"
- },
- {
- "pkg": "@capacitor/push-notifications",
- "classpath": "com.capacitorjs.plugins.pushnotifications.PushNotificationsPlugin"
- },
- {
- "pkg": "@capacitor/share",
- "classpath": "com.capacitorjs.plugins.share.SharePlugin"
- },
- {
- "pkg": "@capacitor/storage",
- "classpath": "com.capacitorjs.plugins.storage.StoragePlugin"
- },
- {
- "pkg": "capacitor-voice-recorder",
- "classpath": "com.tchvu3.capacitorvoicerecorder.VoiceRecorder"
- },
- {
- "pkg": "capacitor2-file-picker",
- "classpath": "com.devmantosh.filepicker.FilePicker"
- }
-]
diff --git a/android-copy/app/src/main/java/com/capacitorjs/app/testapp/MainActivity.java b/android-copy/app/src/main/java/com/capacitorjs/app/testapp/MainActivity.java
deleted file mode 100644
index 6ce0f538f..000000000
--- a/android-copy/app/src/main/java/com/capacitorjs/app/testapp/MainActivity.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package com.capacitorjs.app.testapp;
-
-import com.getcapacitor.BridgeActivity;
-
-public class MainActivity extends BridgeActivity {}
diff --git a/android-copy/app/src/main/res/drawable-land-hdpi/splash.png b/android-copy/app/src/main/res/drawable-land-hdpi/splash.png
deleted file mode 100644
index e31573b4f..000000000
Binary files a/android-copy/app/src/main/res/drawable-land-hdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-land-mdpi/splash.png b/android-copy/app/src/main/res/drawable-land-mdpi/splash.png
deleted file mode 100644
index f7a64923e..000000000
Binary files a/android-copy/app/src/main/res/drawable-land-mdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-land-xhdpi/splash.png b/android-copy/app/src/main/res/drawable-land-xhdpi/splash.png
deleted file mode 100644
index 807725501..000000000
Binary files a/android-copy/app/src/main/res/drawable-land-xhdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-land-xxhdpi/splash.png b/android-copy/app/src/main/res/drawable-land-xxhdpi/splash.png
deleted file mode 100644
index 14c6c8fe3..000000000
Binary files a/android-copy/app/src/main/res/drawable-land-xxhdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-land-xxxhdpi/splash.png b/android-copy/app/src/main/res/drawable-land-xxxhdpi/splash.png
deleted file mode 100644
index 244ca2506..000000000
Binary files a/android-copy/app/src/main/res/drawable-land-xxxhdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-port-hdpi/splash.png b/android-copy/app/src/main/res/drawable-port-hdpi/splash.png
deleted file mode 100644
index 74faaa583..000000000
Binary files a/android-copy/app/src/main/res/drawable-port-hdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-port-mdpi/splash.png b/android-copy/app/src/main/res/drawable-port-mdpi/splash.png
deleted file mode 100644
index e944f4ad4..000000000
Binary files a/android-copy/app/src/main/res/drawable-port-mdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-port-xhdpi/splash.png b/android-copy/app/src/main/res/drawable-port-xhdpi/splash.png
deleted file mode 100644
index 564a82ff9..000000000
Binary files a/android-copy/app/src/main/res/drawable-port-xhdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-port-xxhdpi/splash.png b/android-copy/app/src/main/res/drawable-port-xxhdpi/splash.png
deleted file mode 100644
index bfabe6871..000000000
Binary files a/android-copy/app/src/main/res/drawable-port-xxhdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-port-xxxhdpi/splash.png b/android-copy/app/src/main/res/drawable-port-xxxhdpi/splash.png
deleted file mode 100644
index 692907126..000000000
Binary files a/android-copy/app/src/main/res/drawable-port-xxxhdpi/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/android-copy/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index c7bd21dbd..000000000
--- a/android-copy/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android-copy/app/src/main/res/drawable/ic_launcher_background.xml b/android-copy/app/src/main/res/drawable/ic_launcher_background.xml
deleted file mode 100644
index d5fccc538..000000000
--- a/android-copy/app/src/main/res/drawable/ic_launcher_background.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/android-copy/app/src/main/res/drawable/splash.png b/android-copy/app/src/main/res/drawable/splash.png
deleted file mode 100644
index f7a64923e..000000000
Binary files a/android-copy/app/src/main/res/drawable/splash.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/layout/activity_main.xml b/android-copy/app/src/main/res/layout/activity_main.xml
deleted file mode 100644
index b5ad13870..000000000
--- a/android-copy/app/src/main/res/layout/activity_main.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
diff --git a/android-copy/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android-copy/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index 036d09bc5..000000000
--- a/android-copy/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/android-copy/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android-copy/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index 036d09bc5..000000000
--- a/android-copy/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index c023e5059..000000000
Binary files a/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
deleted file mode 100644
index 2127973b2..000000000
Binary files a/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
deleted file mode 100644
index b441f37d6..000000000
Binary files a/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index 72905b854..000000000
Binary files a/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
deleted file mode 100644
index 8ed0605c2..000000000
Binary files a/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
deleted file mode 100644
index 9502e47a2..000000000
Binary files a/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 4d1e07710..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
deleted file mode 100644
index df0f15880..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
deleted file mode 100644
index 853db043d..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 6cdf97c11..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index 2960cbb61..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
deleted file mode 100644
index 8e3093a86..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index 46de6e255..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
deleted file mode 100644
index d2ea9abed..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
deleted file mode 100644
index a40d73e9c..000000000
Binary files a/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and /dev/null differ
diff --git a/android-copy/app/src/main/res/values/ic_launcher_background.xml b/android-copy/app/src/main/res/values/ic_launcher_background.xml
deleted file mode 100644
index c5d5899fd..000000000
--- a/android-copy/app/src/main/res/values/ic_launcher_background.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #FFFFFF
-
\ No newline at end of file
diff --git a/android-copy/app/src/main/res/values/strings.xml b/android-copy/app/src/main/res/values/strings.xml
deleted file mode 100644
index 4b39c98c3..000000000
--- a/android-copy/app/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
- capacitor-testapp
- capacitor-testapp
- com.capacitorjs.app.testapp
- com.capacitorjs.app.testapp
-
diff --git a/android-copy/app/src/main/res/values/styles.xml b/android-copy/app/src/main/res/values/styles.xml
deleted file mode 100644
index bb45498f6..000000000
--- a/android-copy/app/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-copy/app/src/main/res/xml/config.xml b/android-copy/app/src/main/res/xml/config.xml
deleted file mode 100644
index 62443a749..000000000
--- a/android-copy/app/src/main/res/xml/config.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-copy/app/src/main/res/xml/file_paths.xml b/android-copy/app/src/main/res/xml/file_paths.xml
deleted file mode 100644
index bd0c4d80d..000000000
--- a/android-copy/app/src/main/res/xml/file_paths.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/android-copy/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java b/android-copy/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
deleted file mode 100644
index 029732784..000000000
--- a/android-copy/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.getcapacitor.myapp;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * @see Testing documentation
- */
-public class ExampleUnitTest {
-
- @Test
- public void addition_isCorrect() throws Exception {
- assertEquals(4, 2 + 2);
- }
-}
diff --git a/android-copy/build.gradle b/android-copy/build.gradle
deleted file mode 100644
index ad085c345..000000000
--- a/android-copy/build.gradle
+++ /dev/null
@@ -1,29 +0,0 @@
-// Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
-
- repositories {
- google()
- jcenter()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:4.2.1'
- classpath 'com.google.gms:google-services:4.3.5'
-
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-}
-
-apply from: "variables.gradle"
-
-allprojects {
- repositories {
- google()
- jcenter()
- }
-}
-
-task clean(type: Delete) {
- delete rootProject.buildDir
-}
diff --git a/android-copy/capacitor.settings.gradle b/android-copy/capacitor.settings.gradle
deleted file mode 100644
index 8284edc48..000000000
--- a/android-copy/capacitor.settings.gradle
+++ /dev/null
@@ -1,51 +0,0 @@
-// DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
-include ':capacitor-android'
-project(':capacitor-android').projectDir = new File('../node_modules/@capacitor/android/capacitor')
-
-include ':byteowls-capacitor-filesharer'
-project(':byteowls-capacitor-filesharer').projectDir = new File('../node_modules/@byteowls/capacitor-filesharer/android')
-
-include ':capacitor-community-camera-preview'
-project(':capacitor-community-camera-preview').projectDir = new File('../node_modules/@capacitor-community/camera-preview/android')
-
-include ':capacitor-app'
-project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/android')
-
-include ':capacitor-browser'
-project(':capacitor-browser').projectDir = new File('../node_modules/@capacitor/browser/android')
-
-include ':capacitor-camera'
-project(':capacitor-camera').projectDir = new File('../node_modules/@capacitor/camera/android')
-
-include ':capacitor-device'
-project(':capacitor-device').projectDir = new File('../node_modules/@capacitor/device/android')
-
-include ':capacitor-filesystem'
-project(':capacitor-filesystem').projectDir = new File('../node_modules/@capacitor/filesystem/android')
-
-include ':capacitor-haptics'
-project(':capacitor-haptics').projectDir = new File('../node_modules/@capacitor/haptics/android')
-
-include ':capacitor-keyboard'
-project(':capacitor-keyboard').projectDir = new File('../node_modules/@capacitor/keyboard/android')
-
-include ':capacitor-local-notifications'
-project(':capacitor-local-notifications').projectDir = new File('../node_modules/@capacitor/local-notifications/android')
-
-include ':capacitor-network'
-project(':capacitor-network').projectDir = new File('../node_modules/@capacitor/network/android')
-
-include ':capacitor-push-notifications'
-project(':capacitor-push-notifications').projectDir = new File('../node_modules/@capacitor/push-notifications/android')
-
-include ':capacitor-share'
-project(':capacitor-share').projectDir = new File('../node_modules/@capacitor/share/android')
-
-include ':capacitor-storage'
-project(':capacitor-storage').projectDir = new File('../node_modules/@capacitor/storage/android')
-
-include ':capacitor-voice-recorder'
-project(':capacitor-voice-recorder').projectDir = new File('../node_modules/capacitor-voice-recorder/android')
-
-include ':capacitor2-file-picker'
-project(':capacitor2-file-picker').projectDir = new File('../node_modules/capacitor2-file-picker/android')
diff --git a/android-copy/gradle.properties b/android-copy/gradle.properties
deleted file mode 100644
index 0566c221d..000000000
--- a/android-copy/gradle.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# Project-wide Gradle settings.
-
-# IDE (e.g. Android Studio) users:
-# Gradle settings configured through the IDE *will override*
-# any settings specified in this file.
-
-# For more details on how to configure your build environment visit
-# http://www.gradle.org/docs/current/userguide/build_environment.html
-
-# Specifies the JVM arguments used for the daemon process.
-# The setting is particularly useful for tweaking memory settings.
-org.gradle.jvmargs=-Xmx1536m
-
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
-
-# AndroidX package structure to make it clearer which packages are bundled with the
-# Android operating system, and which are packaged with your app's APK
-# https://developer.android.com/topic/libraries/support-library/androidx-rn
-android.useAndroidX=true
-# Automatically convert third-party libraries to use AndroidX
-android.enableJetifier=true
diff --git a/android-copy/gradle/wrapper/gradle-wrapper.jar b/android-copy/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index e708b1c02..000000000
Binary files a/android-copy/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/android-copy/gradle/wrapper/gradle-wrapper.properties b/android-copy/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 3c4101c3e..000000000
--- a/android-copy/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/android-copy/gradlew b/android-copy/gradlew
deleted file mode 100644
index 4f906e0c8..000000000
--- a/android-copy/gradlew
+++ /dev/null
@@ -1,185 +0,0 @@
-#!/usr/bin/env sh
-
-#
-# Copyright 2015 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >/dev/null
-APP_HOME="`pwd -P`"
-cd "$SAVED" >/dev/null
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn () {
- echo "$*"
-}
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
- NONSTOP* )
- nonstop=true
- ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- JAVACMD=`cygpath --unix "$JAVACMD"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=`expr $i + 1`
- done
- case $i in
- 0) set -- ;;
- 1) set -- "$args0" ;;
- 2) set -- "$args0" "$args1" ;;
- 3) set -- "$args0" "$args1" "$args2" ;;
- 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Escape application args
-save () {
- for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
- echo " "
-}
-APP_ARGS=`save "$@"`
-
-# Collect all arguments for the java command, following the shell quoting and substitution rules
-eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
-
-exec "$JAVACMD" "$@"
diff --git a/android-copy/gradlew.bat b/android-copy/gradlew.bat
deleted file mode 100644
index 107acd32c..000000000
--- a/android-copy/gradlew.bat
+++ /dev/null
@@ -1,89 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%" == "" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%" == "" set DIRNAME=.
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if "%ERRORLEVEL%" == "0" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if "%ERRORLEVEL%"=="0" goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
-exit /b 1
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/android-copy/settings.gradle b/android-copy/settings.gradle
deleted file mode 100644
index 3b4431d77..000000000
--- a/android-copy/settings.gradle
+++ /dev/null
@@ -1,5 +0,0 @@
-include ':app'
-include ':capacitor-cordova-android-plugins'
-project(':capacitor-cordova-android-plugins').projectDir = new File('./capacitor-cordova-android-plugins/')
-
-apply from: 'capacitor.settings.gradle'
\ No newline at end of file
diff --git a/android-copy/variables.gradle b/android-copy/variables.gradle
deleted file mode 100644
index 967549c54..000000000
--- a/android-copy/variables.gradle
+++ /dev/null
@@ -1,14 +0,0 @@
-ext {
- minSdkVersion = 21
- compileSdkVersion = 30
- targetSdkVersion = 30
- androidxActivityVersion = '1.2.0'
- androidxAppCompatVersion = '1.2.0'
- androidxCoordinatorLayoutVersion = '1.1.0'
- androidxCoreVersion = '1.3.2'
- androidxFragmentVersion = '1.3.0'
- junitVersion = '4.13.1'
- androidxJunitVersion = '1.1.2'
- androidxEspressoCoreVersion = '3.3.0'
- cordovaAndroidVersion = '7.0.0'
-}
\ No newline at end of file
diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle
index b2a513877..230e0d62d 100644
--- a/android/app/capacitor.build.gradle
+++ b/android/app/capacitor.build.gradle
@@ -26,6 +26,7 @@ dependencies {
implementation project(':capacitor-voice-recorder')
implementation project(':capacitor2-file-picker')
implementation "com.soundcloud.android:android-crop:1.0.0@aar"
+ implementation "androidx.appcompat:appcompat:1.0.0"
implementation "com.android.support:support-v4:27.+"
implementation "com.squareup.okhttp:okhttp-urlconnection:2+"
}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 66301e3a7..e55b6e225 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
-
+
diff --git a/android/app/src/main/assets/capacitor.config.json b/android/app/src/main/assets/capacitor.config.json
index 2399c4927..4f2d5e665 100644
--- a/android/app/src/main/assets/capacitor.config.json
+++ b/android/app/src/main/assets/capacitor.config.json
@@ -16,5 +16,8 @@
"sound"
]
}
+ },
+ "server": {
+ "url": "http://192.168.0.69:8100"
}
}
diff --git a/android/app/src/main/res/xml/config.xml b/android/app/src/main/res/xml/config.xml
index ec1b10509..48aee8664 100644
--- a/android/app/src/main/res/xml/config.xml
+++ b/android/app/src/main/res/xml/config.xml
@@ -10,6 +10,10 @@
+
+
+
+
diff --git a/config.xml b/config.xml
index 6375d37c8..17e317687 100644
--- a/config.xml
+++ b/config.xml
@@ -22,7 +22,7 @@
-
+
@@ -46,49 +46,6 @@
-
- 3077110622
- 3619450036
-
-
-
-
-
- 1979143311
- 1328564293
-
-
-
-
-
-
- 0
-
-
-
-
-
- 0
-
-
-
-
-
- 0
-
-
-
-
- 0
-
- 8.0.0.00-20210905-154328
-
-
-
-
- en
- /adapters/MobileAPIProxy
- 2
diff --git a/package-lock.json b/package-lock.json
index bbedb3ade..3c9b825e8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -814,6 +814,21 @@
}
}
},
+ "@awesome-cordova-plugins/document-viewer": {
+ "version": "5.41.0",
+ "resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/document-viewer/-/document-viewer-5.41.0.tgz",
+ "integrity": "sha512-90zZvtYuCHTvK55LDoESd7F3OtuDj8AJ0C0Owz+PqZq2J2fUP4fzd7lJE89Cp6vZet7rjiOz7d/8hbTxKMWsdg==",
+ "requires": {
+ "@types/cordova": "^0.0.34"
+ },
+ "dependencies": {
+ "@types/cordova": {
+ "version": "0.0.34",
+ "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
+ "integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ="
+ }
+ }
+ },
"@awesome-cordova-plugins/file": {
"version": "5.41.0",
"resolved": "https://registry.npmjs.org/@awesome-cordova-plugins/file/-/file-5.41.0.tgz",
@@ -8549,6 +8564,11 @@
"integrity": "sha512-FUHI6eEVeoz2VkxbF0P56QlUQLGzXcvw3i4xuXyM9gEct6Y+FA3Xzgl2pJTZcTg5wRqLWzN08kgNoHPkom15pw==",
"dev": true
},
+ "cordova-plugin-document-viewer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/cordova-plugin-document-viewer/-/cordova-plugin-document-viewer-1.0.0.tgz",
+ "integrity": "sha512-LQZiWVU543rLJ0wYoawSdMrAfoxBLWCx8a2CuQjFeav4U9CN16QAh1VHetHaHicp5ZEwTC7Zq/0TNbak6A7bVw=="
+ },
"cordova-plugin-file": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-6.0.2.tgz",
diff --git a/package.json b/package.json
index 0cfcef2bb..3ea0653a1 100644
--- a/package.json
+++ b/package.json
@@ -32,6 +32,7 @@
"@angular/platform-browser-dynamic": "~12.1.2",
"@angular/router": "~12.1.2",
"@awesome-cordova-plugins/core": "^5.40.0",
+ "@awesome-cordova-plugins/document-viewer": "^5.41.0",
"@awesome-cordova-plugins/file": "^5.41.0",
"@awesome-cordova-plugins/file-opener": "^5.41.0",
"@awesome-cordova-plugins/multiple-document-picker": "^5.40.0",
@@ -112,6 +113,7 @@
"cordova": "^10.0.0",
"cordova-plugin-crop": "^0.4.0",
"cordova-plugin-dbcopy": "git+https://github.com/an-rahulpandey/cordova-plugin-dbcopy.git",
+ "cordova-plugin-document-viewer": "^1.0.0",
"cordova-plugin-file": "^6.0.2",
"cordova-plugin-file-opener2": "^3.0.5",
"cordova-plugin-filepath": "^1.5.8",
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 3ed60f41f..9a2d12d50 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -33,6 +33,7 @@ import {MAT_DATE_FORMATS, MAT_DATE_LOCALE} from '@angular/material/core';
import { NgxMatDateFormats, NGX_MAT_DATE_FORMATS } from '@angular-material-components/datetime-picker';
import { Network } from '@ionic-native/network/ngx';
import { MultipleDocumentsPicker } from '@awesome-cordova-plugins/multiple-document-picker/ngx';
+import { DocumentViewer } from '@awesome-cordova-plugins/document-viewer/ngx';
@@ -143,7 +144,8 @@ import { FirebaseX } from '@ionic-native/firebase-x/ngx'; */
NgxImageCompressService,
MultipleDocumentsPicker,
NgxExtendedPdfViewerModule,
- FileOpener
+ FileOpener,
+ DocumentViewer
],
bootstrap: [AppComponent],
diff --git a/src/app/modals/view-media/view-media.page.html b/src/app/modals/view-media/view-media.page.html
index 81ca77286..9e3d470b9 100644
--- a/src/app/modals/view-media/view-media.page.html
+++ b/src/app/modals/view-media/view-media.page.html
@@ -25,7 +25,7 @@
-
{
console.log(recordData);
- if(recordData?.value?.recordDataBase64.includes('data:audio')){
+ if (recordData?.value?.recordDataBase64.includes('data:audio')) {
this.audioRecorded = this.sanitiser.bypassSecurityTrustResourceUrl(recordData?.value?.recordDataBase64);
}
- else{
+ else {
this.audioRecorded = this.sanitiser.bypassSecurityTrustResourceUrl(`data:${recordData.value.mimeType};base64,${recordData?.value?.recordDataBase64}`);
}
});
- } catch (error) {}
+ } catch (error) { }
}
@@ -275,7 +279,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
this.recording = false;
VoiceRecorder.stopRecording().then(async (result: RecordingData) => {
- console.log('==================================',result);
+ console.log('==================================', result);
this.recording = false;
if (result.value && result.value.recordDataBase64) {
@@ -283,8 +287,8 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
//console.log(recordData);
const fileName = new Date().getTime() + ".mp3";
//Save file
- await this.storage.set('fileName',fileName)
- this.storage.set('recordData',result).then(() => {
+ await this.storage.set('fileName', fileName)
+ this.storage.set('recordData', result).then(() => {
console.log('Audio recorded saved', result);
setTimeout(async () => {
@@ -309,7 +313,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
- async deleteRecording(){
+ async deleteRecording() {
this.storage.remove('fileName');
this.storage.remove('recordData');
@@ -444,17 +448,17 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
var byteArrays = new Array(slicesCount);
for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
- var begin = sliceIndex * sliceSize;
- var end = Math.min(begin + sliceSize, bytesLength);
+ var begin = sliceIndex * sliceSize;
+ var end = Math.min(begin + sliceSize, bytesLength);
- var bytes = new Array(end - begin);
- for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
- bytes[i] = byteCharacters[offset].charCodeAt(0);
- }
- byteArrays[sliceIndex] = new Uint8Array(bytes);
+ var bytes = new Array(end - begin);
+ for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
+ bytes[i] = byteCharacters[offset].charCodeAt(0);
+ }
+ byteArrays[sliceIndex] = new Uint8Array(bytes);
}
return new Blob(byteArrays, { type: contentType });
-}
+ }
async sendAudio(fileName) {
@@ -463,35 +467,35 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
this.storage.get('recordData').then((recordData) => {
console.log(recordData);
audioFile = recordData;
- if(recordData?.value?.recordDataBase64.includes('data:audio')){
+ if (recordData?.value?.recordDataBase64.includes('data:audio')) {
this.audioRecorded = recordData?.value?.recordDataBase64;
}
- else{
+ else {
this.audioRecorded = `data:${recordData.value.mimeType};base64,${recordData?.value?.recordDataBase64}`;
}
- //Converting base64 to blob
- const encodedData = btoa(this.audioRecorded);
- const blob = this.base64toBlob(encodedData, recordData.value.mimeType)
- console.log(blob)
- const formData = new FormData();
- formData.append("blobFile", blob);
+ //Converting base64 to blob
+ const encodedData = btoa(this.audioRecorded);
+ const blob = this.base64toBlob(encodedData, recordData.value.mimeType)
+ console.log(blob)
+ const formData = new FormData();
+ formData.append("blobFile", blob);
- this.wsChatMethodsService.getGroupRoom(roomId).send({
- file: {
- "type": "application/audio",
- "msDuration":audioFile.value.msDuration,
- "mimeType":audioFile.value.mimeType,
- },
- attachments: [{
- "title": fileName ,
- "title_link_download": true,
- "type": "audio"
- }],
- temporaryData: formData
- })
+ this.wsChatMethodsService.getGroupRoom(roomId).send({
+ file: {
+ "type": "application/audio",
+ "msDuration": audioFile.value.msDuration,
+ "mimeType": audioFile.value.mimeType,
+ },
+ attachments: [{
+ "title": fileName,
+ "title_link_download": true,
+ "type": "audio"
+ }],
+ temporaryData: formData
+ })
- });
+ });
this.deleteRecording();
}
@@ -692,37 +696,60 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
- async addFileToChat(types: typeof FileType[] ) {
+ async addFileToChat(types: typeof FileType[]) {
const roomId = this.roomId
const file: any = await this.fileService.getFileFromDevice(types);
- console.log('Add file', file)
- /* const imageData = await this.fileToBase64Service.convert(file).then((filee) => {
- console.log('Add file', filee)
- }) */
- const response = await fetch(file);
- const blob = await response.blob();
- console.log('Add file', blob)
- const formData = new FormData();
- formData.append("blobFile", blob);
+ console.log('Add file', JSON.stringify(await this.getBase64(file)))
- this.wsChatMethodsService.getGroupRoom(roomId).send({
- file: {
- "type": file.type,
- "guid": '',
- },
- attachments: [{
- "title": file.name ,
- "name": file.name ,
- // "text": "description",
- //"image_url": file.base64String, // rocketchat
- "title_link_download": false,
- }],
- temporaryData: formData
- })
+ if (file.type == "application/pdf") {
+ const encodedData = btoa(JSON.stringify(await this.getBase64(file)));
+ const blob = this.base64toBlob(encodedData, 'application/pdf')
+ console.log('Add Blob file', blob)
+ const formData = new FormData();
+ formData.append('blobFile', blob);
+ console.log(formData)
+
+ this.wsChatMethodsService.getGroupRoom(roomId).send({
+ file: {
+ "type": file.type,
+ "guid": '',
+ },
+ attachments: [{
+ "title": file.name,
+ "name": file.name,
+ // "text": "description",
+ "title_link_download": false,
+ }],
+ temporaryData: formData
+ });
+
+ } else {
+ console.log('File type invalid')
+ }
+
+ }
+
+ getFileReader(): FileReader {
+ const fileReader = new FileReader();
+ const zoneOriginalInstance = (fileReader as any)["__zone_symbol__originalInstance"];
+ return zoneOriginalInstance || fileReader;
+ }
+
+ getBase64(file) {
+ var reader = this.getFileReader();
+ reader.readAsDataURL(file);
+ return new Promise(resolve => {
+ reader.onload = function () {
+ resolve(reader.result)
+ };
+ reader.onerror = function (error) {
+ console.log('Error: ', error);
+ };
+ });
}
@@ -980,27 +1007,86 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
card.el.style['z-index'] = 11;
}
+ b64toBlob(b64Data, contentType) {
+ contentType = contentType || '';
+ var sliceSize = 512;
+ b64Data = b64Data.replace(/^[^,]+,/, '');
+ b64Data = b64Data.replace(/\s/g, '');
+ var byteCharacters = window.atob(b64Data);
+ var byteArrays = [];
+
+ for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
+ var slice = byteCharacters.slice(offset, offset + sliceSize);
+
+ var byteNumbers = new Array(slice.length);
+ for (var i = 0; i < slice.length; i++) {
+ byteNumbers[i] = slice.charCodeAt(i);
+ }
+
+ var byteArray = new Uint8Array(byteNumbers);
+
+ byteArrays.push(byteArray);
+ }
+
+ var blob = new Blob(byteArrays, { type: contentType });
+ return blob;
+ }
+
+ openFile(pdfString, filename) {
+ const blob = this.b64toBlob(pdfString, 'application/pdf')
+ let pathFile = ''
+ const fileName = filename
+ const contentFile = blob
+ if (this.platform.is('ios')) {
+ pathFile = this.file.documentsDirectory
+ } else {
+ pathFile = this.file.externalRootDirectory
+ }
+ console.log(pdfString)
+ console.log(pathFile)
+ console.log(contentFile)
+ this.file
+ .writeFile(pathFile, fileName, contentFile, { replace: true })
+ .then(success => {
+ this.fileOpener
+ .open(pathFile + fileName, 'application/pdf')
+ .then(() => console.log('File is opened'))
+ .catch(e => console.log('Error opening file', e));
+ })
+ .catch(e => console.log('Error writing file', e))
+ }
+
downloadFileMsg(msg: MessageService) {
msg.downloadFileMsg()
}
async openPreview(msg: MessageService) {
- if (!msg.attachments[0].image_url ||msg.attachments[0].image_url === null || msg.attachments[0].image_url === '') {
+ if (!msg.attachments[0].image_url || msg.attachments[0].image_url === null || msg.attachments[0].image_url === '') {
this.downloadFileMsg(msg)
} else {
- const modal = await this.modalController.create({
- component: ViewMediaPage,
- cssClass: 'modal modal-desktop',
- componentProps: {
- image: msg.attachments[0].image_url,
- type: msg.file.type,
- username: msg.u.name,
- _updatedAt: msg._updatedAt
- }
- });
- modal.present();
+
+ var str = msg.attachments[0].image_url;
+ str = str.substring(1, ((str.length) - 1));
+
+ if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
+
+ const modal = await this.modalController.create({
+ component: ViewMediaPage,
+ cssClass: 'modal modal-desktop',
+ componentProps: {
+ image: str,
+ type: msg.file.type,
+ username: msg.u.name,
+ _updatedAt: msg._updatedAt
+ }
+ });
+ modal.present();
+
+ } else {
+ this.openFile(str, msg.attachments[0].name);
+ }
}
}
@@ -1009,7 +1095,7 @@ export class GroupMessagesPage implements OnInit, AfterViewInit, OnDestroy {
console.log(msg);
if (!msg.attachments[0].title_link || msg.attachments[0].title_link === null || msg.attachments[0].title_link === '') {
this.downloadFileMsg(msg)
- } else {}
+ } else { }
}
}
diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts
index 53053bd4d..f18b456ac 100644
--- a/src/app/pages/chat/messages/messages.page.ts
+++ b/src/app/pages/chat/messages/messages.page.ts
@@ -46,6 +46,7 @@ import { DomSanitizer } from '@angular/platform-browser';
import { StringDecoder } from 'string_decoder';
import { File } from '@awesome-cordova-plugins/file/ngx';
import { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx';
+import { DocumentViewer } from '@awesome-cordova-plugins/document-viewer/ngx';
const IMAGE_DIR = 'stored-images';
@@ -137,6 +138,7 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
private file: File,
private fileOpener: FileOpener,
private sanitiser: DomSanitizer,
+ private document: DocumentViewer
) {
this.loggedUser = authService.ValidatedUserChat['data'];
this.roomId = this.navParams.get('roomId');
@@ -772,82 +774,38 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
async addFileToChat(types: typeof FileType[]) {
- /* this.multipleDocumentsPicker.pick(2)
- .then(async (res: any) => {
- this.files = JSON.parse(res)
- console.log('1 Add file', this.files[0].uri)
- console.log('1 Add file', JSON.stringify(this.files[0].uri))
-
-
-
- const downloadPath = (
- this.platform.is('android')
- ) ? this.file.externalDataDirectory : this.file.documentsDirectory;
-
- this.file.writeFile(downloadPath, 'YHaaa2.pdf', 'Eudes Inácio').then((fil)=> {
- console.log('write file', fil)
- })
-
-
- this.fileToBase64('GS_FOLHETO_AUTOMOVEL_AC.pdf',this.files[0].uri).then(
- (data) => console.log(data)
- );
-
-
- const blob = new Blob([res])
- console.log('Add Blob file', blob)
-
- const formData = new FormData();
- formData.append("blobFile", blob);
- console.log(formData)
-
- this.wsChatMethodsService.getDmRoom(this.roomId).send({
- file: {
- "type": 'application/pdf',
- "guid": '',
- },
- attachments: [{
- "title": 'pdf1',
- "name": 'pdf1',
- // "text": "description",
- "title_link_download": false,
- }],
- temporaryData: formData
- })
- })
- .catch((error: any) => console.error(error)); */
-
const roomId = this.roomId
const file: any = await this.fileService.getFileFromDevice(types);
console.log('Add file', JSON.stringify(await this.getBase64(file)))
- const encodedData = btoa(JSON.stringify(await this.getBase64(file)));
- const blob = this.base64toBlob(encodedData, 'application/pdf')
- console.log('Add Blob file', blob)
- //console.log('Add Blob file', await this.blobToBase64(blob))
- //console.log('Add Blob file', await this.fileToByteArray(file))
+ if (file.type == "application/pdf") {
+ const encodedData = btoa(JSON.stringify(await this.getBase64(file)));
+ const blob = this.base64toBlob(encodedData, 'application/pdf')
+ console.log('Add Blob file', blob)
+ const formData = new FormData();
+ formData.append('blobFile', blob);
+ console.log(formData)
- const formData = new FormData();
- formData.append('blobFile', blob);
- console.log(formData)
-
- this.wsChatMethodsService.getDmRoom(roomId).send({
- file: {
- "type": file.type,
- "guid": '',
- },
- attachments: [{
- "title": file.name,
- "name": file.name,
- // "text": "description",
- "title_link_download": false,
- }],
- temporaryData: formData
- });
+ this.wsChatMethodsService.getDmRoom(roomId).send({
+ file: {
+ "type": file.type,
+ "guid": '',
+ },
+ attachments: [{
+ "title": file.name,
+ "name": file.name,
+ // "text": "description",
+ "title_link_download": false,
+ }],
+ temporaryData: formData
+ });
+ } else {
+ console.log('File type invalid')
+ }
@@ -867,34 +825,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
}
- fileToByteArray(file) {
- return new Promise((resolve, reject) => {
- try {
- let reader = this.getFileReader();
- //var file = new File([filepath], filename);
- reader.readAsBinaryString(file);
- reader.onloadend = (evt) => {
- console.log(evt.target.result)
- resolve(evt.target.result); // Convert data to base64
- reader.readAsDataURL(file);
- }
- }
- catch (e) {
- reject(e);
- }
- })
- }
-
- blobToBase64 = blob => {
- const reader = this.getFileReader();
- reader.readAsDataURL(blob);
- return new Promise(resolve => {
- reader.onloadend = () => {
- resolve(reader.result);
- };
- });
- };
-
async openChatOptions(ev?: any) {
const roomId = this.roomId
console.log('MOBILE CHAT OPTION', this.members);
@@ -1016,82 +946,47 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
downloadFileMsg(msg: MessageService) {
- console.log('FILE TYPE', msg.file.type)
- this.downloadFile = "";
- //if (msg.file.type == "application/img") {
- this.AttachmentsService.downloadFile(msg.file.guid).subscribe(async (event) => {
- console.log('FILE TYPE 22', msg.file.guid)
- var name = msg.file.guid;
-
- if (event.type === HttpEventType.DownloadProgress) {
- this.downloadProgess = Math.round((100 * event.loaded) / event.total);
- console.log(this.downloadProgess)
- console.log('FILE TYPE 33', msg.file.type)
- } else if (event.type === HttpEventType.Response) {
- if (msg.file.type == "application/img") {
- this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
- } else if (msg.file.type == "application/pdf") {
- //console.log('TRY THIS LIBRARY ',fromByteArray(event.body));
- this.downloadFile = new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '');
- //this.downloadFile = event.body
- console.log(this.downloadFile)
- }
-
- msg.attachments[0] = {
- image_url: this.downloadFile,
- name: msg.attachments[0].name,
- title: msg.attachments[0].title,
- title_link_download: msg.attachments[0].title_link_download,
- ts: msg.attachments[0].ts
- }
- this.sqlservice.updateChatMsg(msg._id, this.downloadFile);
- }
-
- });
-
- //}
-
+ msg.downloadFileMsg();
}
- _arrayBufferToBase64(buffer) {
- var binary = '';
- var bytes = new Uint8Array(buffer);
- var len = bytes.byteLength;
- for (var i = 0; i < len; i++) {
- binary += String.fromCharCode(bytes[i]);
- }
- return window.btoa(binary);
- }
-
- b64toBlob(b64Data, contentType, sliceSize) {
+ b64toBlob(b64Data, contentType) {
contentType = contentType || '';
- sliceSize = sliceSize || 512;
- const encodedData = btoa(b64Data);
- var byteCharacters = atob(encodedData);
+ var sliceSize = 512;
+ b64Data = b64Data.replace(/^[^,]+,/, '');
+ b64Data = b64Data.replace(/\s/g, '');
+ var byteCharacters = window.atob(b64Data);
var byteArrays = [];
+
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
+
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
+
var byteArray = new Uint8Array(byteNumbers);
+
byteArrays.push(byteArray);
}
+
var blob = new Blob(byteArrays, { type: contentType });
return blob;
}
- getUserDataSheet(pdfString) {
- const blob = this.b64toBlob(pdfString, 'application/pdf', 512)
+ openFile(pdfString, filename) {
+ const blob = this.b64toBlob(pdfString, 'application/pdf')
let pathFile = ''
- const fileName = 'myPdf.pdf'
+ const fileName = filename
const contentFile = blob
if (this.platform.is('ios')) {
pathFile = this.file.documentsDirectory
} else {
pathFile = this.file.externalRootDirectory
}
+ console.log(pdfString)
+ console.log(pathFile)
+ console.log(contentFile)
this.file
.writeFile(pathFile, fileName, contentFile, { replace: true })
.then(success => {
@@ -1115,7 +1010,24 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
var str = msg.attachments[0].image_url;
str = str.substring(1, ((str.length) - 1));
- this.getUserDataSheet(str);
+ if (this.platform.is('desktop') || this.platform.is('mobileweb')) {
+
+ const modal = await this.modalController.create({
+ component: ViewMediaPage,
+ cssClass: 'modal modal-desktop',
+ componentProps: {
+ image: str,
+ type: msg.file.type,
+ username: msg.u.name,
+ _updatedAt: msg._updatedAt
+ }
+ });
+ modal.present();
+
+ } else {
+ this.openFile(str, msg.attachments[0].name);
+ }
+
}
}
diff --git a/src/app/services/chat/message.service.ts b/src/app/services/chat/message.service.ts
index de1e78de2..94439411b 100644
--- a/src/app/services/chat/message.service.ts
+++ b/src/app/services/chat/message.service.ts
@@ -235,7 +235,8 @@ export class MessageService {
downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
} else if (this.file.type === 'application/pdf') {
- downloadFile = event.body as any;
+ downloadFile = new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '');
+ console.log(downloadFile)
} else if (this.file.type == 'application/audio') {
downloadFile = new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '');
}
diff --git a/src/app/shared/chat/group-messages/group-messages.page.html b/src/app/shared/chat/group-messages/group-messages.page.html
index 2e0a784e4..61ac8afd6 100644
--- a/src/app/shared/chat/group-messages/group-messages.page.html
+++ b/src/app/shared/chat/group-messages/group-messages.page.html
@@ -217,9 +217,9 @@
-
+
diff --git a/src/app/shared/chat/group-messages/group-messages.page.ts b/src/app/shared/chat/group-messages/group-messages.page.ts
index 46f3658e9..283ddeefa 100644
--- a/src/app/shared/chat/group-messages/group-messages.page.ts
+++ b/src/app/shared/chat/group-messages/group-messages.page.ts
@@ -94,8 +94,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
allowTyping = true;
storedFileNames = [];
lastAudioRecorded = '';
- audioRecorded:any = "";
- audioDownloaded:any = "";
+ audioRecorded: any = "";
+ audioDownloaded: any = "";
durationDisplay = '';
duration = 0;
@@ -142,7 +142,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
this.showAvatar = false
- setTimeout(()=>{
+ setTimeout(() => {
this.scrollToBottomClicked()
this.showAvatar = true
}, 50)
@@ -152,7 +152,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}
ngOnInit() {
- this.loggedUser=this.loggedUserChat;
+ this.loggedUser = this.loggedUserChat;
setTimeout(() => {
this.getRoomInfo();
}, 1000);
@@ -260,7 +260,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}, 1000)
}
- async getFile(fileName?:any){
+ async getFile(fileName?: any) {
const audioFile = await Filesystem.readFile({
path: fileName,
directory: Directory.Data
@@ -278,14 +278,14 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
this.storage.get('recordData').then((recordData) => {
console.log(recordData);
- if(recordData?.value?.recordDataBase64.includes('data:audio')){
+ if (recordData?.value?.recordDataBase64.includes('data:audio')) {
this.audioRecorded = this.sanitiser.bypassSecurityTrustResourceUrl(recordData?.value?.recordDataBase64);
}
- else{
+ else {
this.audioRecorded = this.sanitiser.bypassSecurityTrustResourceUrl(`data:${recordData.value.mimeType};base64,${recordData?.value?.recordDataBase64}`);
}
});
- } catch (error) {}
+ } catch (error) { }
}
@@ -317,8 +317,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
//console.log(recordData);
const fileName = new Date().getTime() + ".mp3";
//Save file
- this.storage.set('fileName',fileName);
- this.storage.set('recordData',result).then(() => {
+ this.storage.set('fileName', fileName);
+ this.storage.set('recordData', result).then(() => {
console.log('Audio recorded saved');
})
}
@@ -328,7 +328,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}, 1000);
}
- async deleteRecording(){
+ async deleteRecording() {
this.storage.remove('fileName');
this.storage.remove('recordData');
@@ -426,17 +426,17 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
var byteArrays = new Array(slicesCount);
for (var sliceIndex = 0; sliceIndex < slicesCount; ++sliceIndex) {
- var begin = sliceIndex * sliceSize;
- var end = Math.min(begin + sliceSize, bytesLength);
+ var begin = sliceIndex * sliceSize;
+ var end = Math.min(begin + sliceSize, bytesLength);
- var bytes = new Array(end - begin);
- for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
- bytes[i] = byteCharacters[offset].charCodeAt(0);
- }
- byteArrays[sliceIndex] = new Uint8Array(bytes);
+ var bytes = new Array(end - begin);
+ for (var offset = begin, i = 0; offset < end; ++i, ++offset) {
+ bytes[i] = byteCharacters[offset].charCodeAt(0);
+ }
+ byteArrays[sliceIndex] = new Uint8Array(bytes);
}
return new Blob(byteArrays, { type: contentType });
-}
+ }
async sendAudio(fileName) {
const roomId = this.roomId
@@ -444,36 +444,36 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
this.storage.get('recordData').then((recordData) => {
console.log(recordData);
audioFile = recordData;
- if(recordData?.value?.recordDataBase64.includes('data:audio')){
+ if (recordData?.value?.recordDataBase64.includes('data:audio')) {
this.audioRecorded = recordData?.value?.recordDataBase64;
}
- else{
+ else {
this.audioRecorded = `data:${recordData.value.mimeType};base64,${recordData?.value?.recordDataBase64}`;
}
- //Converting base64 to blob
- const encodedData = btoa(this.audioRecorded);
- const blob = this.base64toBlob(encodedData, recordData.value.mimeType)
- console.log(blob)
- const formData = new FormData();
- formData.append("blobFile", blob);
+ //Converting base64 to blob
+ const encodedData = btoa(this.audioRecorded);
+ const blob = this.base64toBlob(encodedData, recordData.value.mimeType)
+ console.log(blob)
+ const formData = new FormData();
+ formData.append("blobFile", blob);
- this.wsChatMethodsService.getGroupRoom(roomId).send({
- file: {
- "type": "application/audio",
- "msDuration":audioFile.value.msDuration,
- "mimeType":audioFile.value.mimeType,
- },
- attachments: [{
- "title": fileName ,
- "title_link_download": true,
- "type": "audio"
- }],
- temporaryData: formData
- })
+ this.wsChatMethodsService.getGroupRoom(roomId).send({
+ file: {
+ "type": "application/audio",
+ "msDuration": audioFile.value.msDuration,
+ "mimeType": audioFile.value.mimeType,
+ },
+ attachments: [{
+ "title": fileName,
+ "title_link_download": true,
+ "type": "audio"
+ }],
+ temporaryData: formData
+ })
- });
+ });
this.deleteRecording();
}
@@ -724,7 +724,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
//const imageData = await this.fileToBase64Service.convert(file)
//console.log('ADDFILECHAT', imageData)
- const response = await fetch('data:image/jpeg;base64,'+ file.base64String!);
+ const response = await fetch('data:image/jpeg;base64,' + file.base64String!);
const blob = await response.blob();
const formData = new FormData();
@@ -737,8 +737,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
},
temporaryData: formData,
attachments: [{
- "title": file.path ,
- "image_url": 'data:image/jpeg;base64,' +file.base64String,
+ "title": file.path,
+ "image_url": 'data:image/jpeg;base64,' + file.base64String,
"text": "description",
"title_link_download": false,
}]
@@ -752,7 +752,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
const image = await this.CameraService.takePicture();
await this.fileService.saveImage(image)
const lastphoto: any = await this.fileService.loadFiles();
- const { capturedImage, capturedImageTitle} = await this.fileService.loadFileData(lastphoto);
+ const { capturedImage, capturedImageTitle } = await this.fileService.loadFileData(lastphoto);
const base64 = await fetch(capturedImage);
const blob = await base64.blob();
@@ -765,7 +765,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
"guid": ''
},
attachments: [{
- "title": capturedImageTitle ,
+ "title": capturedImageTitle,
"image_url": capturedImage,
"text": "description",
"title_link_download": false,
@@ -796,13 +796,13 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}
});
await modal.present();
- modal.onDidDismiss().then(async res=>{
+ modal.onDidDismiss().then(async res => {
const data = res.data;
- if(data.selected) {
+ if (data.selected) {
this.wsChatMethodsService.getGroupRoom(roomId).send({
- file:{
+ file: {
"name": res.data.selected.Assunto,
"type": "application/webtrix",
"ApplicationId": res.data.selected.ApplicationType,
@@ -828,7 +828,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}
});
}
- async addFileToChatMobile(types: typeof FileType[] ) {
+ async addFileToChatMobile(types: typeof FileType[]) {
const roomId = this.roomId
const file = await Camera.getPhoto({
@@ -841,7 +841,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
//const imageData = await this.fileToBase64Service.convert(file)
//console.log('ADDFILECHAT', imageData)
- const response = await fetch('data:image/jpeg;base64,'+ file.base64String!);
+ const response = await fetch('data:image/jpeg;base64,' + file.base64String!);
const blob = await response.blob();
const formData = new FormData();
@@ -854,8 +854,8 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
},
temporaryData: formData,
attachments: [{
- "title": file.path ,
- "image_url": 'data:image/jpeg;base64,' +file.base64String,
+ "title": file.path,
+ "image_url": 'data:image/jpeg;base64,' + file.base64String,
"text": "description",
"title_link_download": false,
}]
@@ -864,39 +864,38 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}
- async addFileToChat(types: typeof FileType[] ) {
+ async addFileToChat(types: typeof FileType[]) {
const roomId = this.roomId
const file: any = await this.fileService.getFileFromDevice(types);
console.log('Add file', file)
- /* const imageData = await this.fileToBase64Service.convert(file).then((filee) => {
- console.log('Add file', filee)
- }) */
- const blob = new Blob([file],{type: file.type})
- console.log('Add file', blob)
- const formData = new FormData();
- formData.append("blobFile", blob);
+ if (file.type == "application/pdf") {
+
+ const blob = new Blob([file], { type: file.type })
+ console.log('Add file', blob)
+
+ const formData = new FormData();
+ formData.append("blobFile", blob);
- let pdfBase64;
- this.blobToBase64(blob).then(res => {
- console.log('Base64 pdf', res);
this.wsChatMethodsService.getGroupRoom(roomId).send({
file: {
"type": file.type,
"guid": '',
},
attachments: [{
- "title": file.name ,
- "name": file.name ,
- "image_url": res,
+ "title": file.name,
+ "name": file.name,
+ /* "image_url": res, */
// "text": "description",
"title_link_download": false,
}],
temporaryData: formData
})
- });
+ } else {
+ console.log('File type invalid')
+ }
}
@@ -955,7 +954,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
}
});
await modal.present();
- modal.onDidDismiss().then( async (res) => {
+ modal.onDidDismiss().then(async (res) => {
console.log(res['data']);
const roomId = this.roomId;
@@ -999,15 +998,19 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
async openPreview(msg) {
- if (!msg.attachments[0].image_url || msg.attachments[0].image_url === null || msg.attachments[0].image_url === '' ) {
+ if (!msg.attachments[0].image_url || msg.attachments[0].image_url === null || msg.attachments[0].image_url === '') {
this.downloadFileMsg(msg)
} else {
+
+ var str = msg.attachments[0].image_url;
+ str = str.substring(1, ((str.length) - 1));
+
const modal = await this.modalController.create({
component: ViewMediaPage,
cssClass: 'modal modal-desktop',
componentProps: {
- image: msg.attachments[0].image_url,
+ image: str,
type: msg.file.type,
username: msg.u.name,
_updatedAt: msg._updatedAt
@@ -1022,7 +1025,7 @@ export class GroupMessagesPage implements OnInit, OnChanges, AfterViewInit, OnDe
console.log(msg);
if (!msg.attachments[0].title_link || msg.attachments[0].title_link === null || msg.attachments[0].title_link === '') {
this.downloadFileMsg(msg)
- } else {}
+ } else { }
}
}
diff --git a/src/app/shared/chat/messages/messages.page.html b/src/app/shared/chat/messages/messages.page.html
index 7ec469275..8b88fc645 100644
--- a/src/app/shared/chat/messages/messages.page.html
+++ b/src/app/shared/chat/messages/messages.page.html
@@ -198,9 +198,9 @@
-
+
diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts
index b13432140..1f401f016 100644
--- a/src/app/shared/chat/messages/messages.page.ts
+++ b/src/app/shared/chat/messages/messages.page.ts
@@ -375,31 +375,31 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
if (recordData.value.recordDataBase64.includes('data:audio')) {
this.audioRecorded = recordData.value.recordDataBase64;
}
- else{
+ else {
this.audioRecorded = `data:${recordData.value.mimeType};base64,${recordData?.value?.recordDataBase64}`;
}
- //Converting base64 to blob
- const encodedData = btoa(this.audioRecorded);
- const blob = this.base64toBlob(encodedData, recordData.value.mimeType)
- console.log(blob)
- const formData = new FormData();
- formData.append("blobFile", blob);
+ //Converting base64 to blob
+ const encodedData = btoa(this.audioRecorded);
+ const blob = this.base64toBlob(encodedData, recordData.value.mimeType)
+ console.log(blob)
+ const formData = new FormData();
+ formData.append("blobFile", blob);
- this.wsChatMethodsService.getDmRoom(roomId).send({
- file: {
- "type": "application/audio",
- "msDuration": audioFile.value.msDuration,
- "mimeType": audioFile.value.mimeType,
- },
- attachments: [{
- "title": fileName,
- "title_link_download": true,
- "type": "audio"
- }],
- temporaryData: formData
- })
+ this.wsChatMethodsService.getDmRoom(roomId).send({
+ file: {
+ "type": "application/audio",
+ "msDuration": audioFile.value.msDuration,
+ "mimeType": audioFile.value.mimeType,
+ },
+ attachments: [{
+ "title": fileName,
+ "title_link_download": true,
+ "type": "audio"
+ }],
+ temporaryData: formData
+ })
- });
+ });
this.deleteRecording();
}
@@ -768,19 +768,18 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
const file: any = await this.fileService.getFileFromDevice(types);
- console.log('Add file', file)
- /* const imageData = await this.fileToBase64Service.convert(file).then((filee) => {
- console.log('Add file', filee)
- }) */
- const blob = new Blob([file], { type: file.type })
- console.log('Add file', blob)
+ if (file.type == "application/pdf") {
- const formData = new FormData();
- formData.append("blobFile", blob);
+ console.log('Add file', file)
+ /* const imageData = await this.fileToBase64Service.convert(file).then((filee) => {
+ console.log('Add file', filee)
+ }) */
+ const blob = new Blob([file], { type: file.type })
+ console.log('Add file', blob)
+
+ const formData = new FormData();
+ formData.append("blobFile", blob);
- let pdfBase64;
- this.blobToBase64(blob).then(res => {
- console.log('Base64 pdf', res);
this.wsChatMethodsService.getDmRoom(roomId).send({
file: {
"type": file.type,
@@ -795,7 +794,10 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}],
temporaryData: formData
})
- });
+
+ } else {
+ console.log('File type invalid')
+ }
}
@@ -903,44 +905,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
downloadFileMsg(msg: MessageService) {
- console.log('FILE TYPE', msg.file.type)
- this.downloadFile = "";
- //if (msg.file.type == "application/img") {
- this.AttachmentsService.downloadFile(msg.file.guid).subscribe(async (event) => {
- console.log('FILE TYPE 22', msg.file.guid)
- var name = msg.file.guid;
-
- if (event.type === HttpEventType.DownloadProgress) {
- //this.downloadProgess = Math.round((100 * event.loaded) / event.total);
- console.log('FILE TYPE 33', msg.file.type)
- } else if (event.type === HttpEventType.Response) {
- if (msg.file.type == "application/img") {
- this.downloadFile = 'data:image/jpeg;base64,' + btoa(new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), ''));
- } else if (msg.file.type === 'application/pdf') {
-
- this.downloadFile = new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '');
- //console.log(this._arrayBufferToBase64(event.body))
- console.log(eval(this.downloadFile))
- }
-
- msg.attachments[0] = {
- image_url: this.downloadFile,
- name: msg.attachments[0].name,
- title: msg.attachments[0].title,
- title_link_download: msg.attachments[0].title_link_download,
- ts: msg.attachments[0].ts
- }
-
- // save the changes to the storage
- //msg.save()
-
-
- }
-
- });
-
- // }
-
+ msg.downloadFileMsg()
}
pdfPreview() {