diff --git a/android-copy/.gitignore b/android-copy/.gitignore
new file mode 100644
index 000000000..63c86fe30
--- /dev/null
+++ b/android-copy/.gitignore
@@ -0,0 +1,96 @@
+# 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
new file mode 100644
index 000000000..043df802a
--- /dev/null
+++ b/android-copy/app/.gitignore
@@ -0,0 +1,2 @@
+/build/*
+!/build/.npmkeep
diff --git a/android-copy/app/build.gradle b/android-copy/app/build.gradle
new file mode 100644
index 000000000..4b03508bb
--- /dev/null
+++ b/android-copy/app/build.gradle
@@ -0,0 +1,51 @@
+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
new file mode 100644
index 000000000..6795d7e61
--- /dev/null
+++ b/android-copy/app/capacitor.build.gradle
@@ -0,0 +1,37 @@
+// 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
new file mode 100644
index 000000000..f1b424510
--- /dev/null
+++ b/android-copy/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# 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
new file mode 100644
index 000000000..f2c2217ef
--- /dev/null
+++ b/android-copy/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java
@@ -0,0 +1,26 @@
+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
new file mode 100644
index 000000000..66301e3a7
--- /dev/null
+++ b/android-copy/app/src/main/AndroidManifest.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android-copy/app/src/main/AndroidManifest.xml.orig b/android-copy/app/src/main/AndroidManifest.xml.orig
new file mode 100644
index 000000000..8d27de2b1
--- /dev/null
+++ b/android-copy/app/src/main/AndroidManifest.xml.orig
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android-copy/app/src/main/assets/capacitor.config.json b/android-copy/app/src/main/assets/capacitor.config.json
new file mode 100644
index 000000000..2399c4927
--- /dev/null
+++ b/android-copy/app/src/main/assets/capacitor.config.json
@@ -0,0 +1,20 @@
+{
+ "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
new file mode 100644
index 000000000..36daaa9bc
--- /dev/null
+++ b/android-copy/app/src/main/assets/capacitor.plugins.json
@@ -0,0 +1,66 @@
+[
+ {
+ "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
new file mode 100644
index 000000000..6ce0f538f
--- /dev/null
+++ b/android-copy/app/src/main/java/com/capacitorjs/app/testapp/MainActivity.java
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..e31573b4f
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-land-hdpi/splash.png 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
new file mode 100644
index 000000000..f7a64923e
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-land-mdpi/splash.png 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
new file mode 100644
index 000000000..807725501
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-land-xhdpi/splash.png 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
new file mode 100644
index 000000000..14c6c8fe3
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-land-xxhdpi/splash.png 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
new file mode 100644
index 000000000..244ca2506
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-land-xxxhdpi/splash.png 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
new file mode 100644
index 000000000..74faaa583
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-port-hdpi/splash.png 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
new file mode 100644
index 000000000..e944f4ad4
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-port-mdpi/splash.png 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
new file mode 100644
index 000000000..564a82ff9
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-port-xhdpi/splash.png 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
new file mode 100644
index 000000000..bfabe6871
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-port-xxhdpi/splash.png 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
new file mode 100644
index 000000000..692907126
Binary files /dev/null and b/android-copy/app/src/main/res/drawable-port-xxxhdpi/splash.png 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
new file mode 100644
index 000000000..c7bd21dbd
--- /dev/null
+++ b/android-copy/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
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
new file mode 100644
index 000000000..d5fccc538
--- /dev/null
+++ b/android-copy/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/android-copy/app/src/main/res/drawable/splash.png b/android-copy/app/src/main/res/drawable/splash.png
new file mode 100644
index 000000000..f7a64923e
Binary files /dev/null and b/android-copy/app/src/main/res/drawable/splash.png 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
new file mode 100644
index 000000000..b5ad13870
--- /dev/null
+++ b/android-copy/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
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
new file mode 100644
index 000000000..036d09bc5
--- /dev/null
+++ b/android-copy/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 000000000..036d09bc5
--- /dev/null
+++ b/android-copy/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 000000000..c023e5059
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher.png 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
new file mode 100644
index 000000000..2127973b2
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png 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
new file mode 100644
index 000000000..b441f37d6
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-hdpi/ic_launcher_round.png 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
new file mode 100644
index 000000000..72905b854
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher.png 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
new file mode 100644
index 000000000..8ed0605c2
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png 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
new file mode 100644
index 000000000..9502e47a2
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-mdpi/ic_launcher_round.png 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
new file mode 100644
index 000000000..4d1e07710
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher.png 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
new file mode 100644
index 000000000..df0f15880
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png 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
new file mode 100644
index 000000000..853db043d
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png 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
new file mode 100644
index 000000000..6cdf97c11
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher.png 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
new file mode 100644
index 000000000..2960cbb61
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png 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
new file mode 100644
index 000000000..8e3093a86
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png 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
new file mode 100644
index 000000000..46de6e255
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png 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
new file mode 100644
index 000000000..d2ea9abed
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png 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
new file mode 100644
index 000000000..a40d73e9c
Binary files /dev/null and b/android-copy/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png 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
new file mode 100644
index 000000000..c5d5899fd
--- /dev/null
+++ b/android-copy/app/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #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
new file mode 100644
index 000000000..4b39c98c3
--- /dev/null
+++ b/android-copy/app/src/main/res/values/strings.xml
@@ -0,0 +1,7 @@
+
+
+ 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
new file mode 100644
index 000000000..bb45498f6
--- /dev/null
+++ b/android-copy/app/src/main/res/values/styles.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
\ 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
new file mode 100644
index 000000000..62443a749
--- /dev/null
+++ b/android-copy/app/src/main/res/xml/config.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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
new file mode 100644
index 000000000..bd0c4d80d
--- /dev/null
+++ b/android-copy/app/src/main/res/xml/file_paths.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ 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
new file mode 100644
index 000000000..029732784
--- /dev/null
+++ b/android-copy/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java
@@ -0,0 +1,18 @@
+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
new file mode 100644
index 000000000..ad085c345
--- /dev/null
+++ b/android-copy/build.gradle
@@ -0,0 +1,29 @@
+// 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
new file mode 100644
index 000000000..8284edc48
--- /dev/null
+++ b/android-copy/capacitor.settings.gradle
@@ -0,0 +1,51 @@
+// 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
new file mode 100644
index 000000000..0566c221d
--- /dev/null
+++ b/android-copy/gradle.properties
@@ -0,0 +1,24 @@
+# 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
new file mode 100644
index 000000000..e708b1c02
Binary files /dev/null and b/android-copy/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/android-copy/gradle/wrapper/gradle-wrapper.properties b/android-copy/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..3c4101c3e
--- /dev/null
+++ b/android-copy/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..4f906e0c8
--- /dev/null
+++ b/android-copy/gradlew
@@ -0,0 +1,185 @@
+#!/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
new file mode 100644
index 000000000..107acd32c
--- /dev/null
+++ b/android-copy/gradlew.bat
@@ -0,0 +1,89 @@
+@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
new file mode 100644
index 000000000..3b4431d77
--- /dev/null
+++ b/android-copy/settings.gradle
@@ -0,0 +1,5 @@
+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
new file mode 100644
index 000000000..967549c54
--- /dev/null
+++ b/android-copy/variables.gradle
@@ -0,0 +1,14 @@
+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/.idea/encodings.xml b/android/.idea/encodings.xml
new file mode 100644
index 000000000..5ab53dea3
--- /dev/null
+++ b/android/.idea/encodings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android/app/src/main/assets/capacitor.config.json b/android/app/src/main/assets/capacitor.config.json
index 2a189f2f1..2399c4927 100644
--- a/android/app/src/main/assets/capacitor.config.json
+++ b/android/app/src/main/assets/capacitor.config.json
@@ -16,8 +16,5 @@
"sound"
]
}
- },
- "server": {
- "url": "http://192.168.137.1:8100"
}
}
diff --git a/android/app/src/main/res/xml/config.xml b/android/app/src/main/res/xml/config.xml
index e5c21ca29..62443a749 100644
--- a/android/app/src/main/res/xml/config.xml
+++ b/android/app/src/main/res/xml/config.xml
@@ -10,6 +10,11 @@
+
+
+
+
+
@@ -44,11 +49,6 @@
-
-
-
-
-
diff --git a/android/build.gradle b/android/build.gradle
index ad085c345..d700facbb 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -1,13 +1,13 @@
// 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.android.tools.build:gradle:7.0.2'
classpath 'com.google.gms:google-services:4.3.5'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 3c4101c3e..29e413457 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/package-lock.json b/package-lock.json
index 6d42e05be..0e5c5e316 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5099,6 +5099,11 @@
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
+ "@types/pdfjs-dist": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@types/pdfjs-dist/-/pdfjs-dist-0.1.2.tgz",
+ "integrity": "sha512-BvRLWz6RCI8FMKbgfdTCadVwimUv8920gLsnBEAkECjtqIy95jtt+G1ebNQE2b8PTnLjJICPpmBOGhgkSsiPKA=="
+ },
"@types/prettier": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.1.tgz",
@@ -5547,23 +5552,6 @@
"integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
"dev": true
},
- "android-versions": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/android-versions/-/android-versions-1.7.0.tgz",
- "integrity": "sha512-TCy4b8Dk8YS6A23ZPfhSKqK66JHFq0D8avGYiwvYpjno6HrrcI0DRgHx9+jtkvWYmrsE2vQWgbHJhvGGhhOb0g==",
- "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
- }
- }
- },
"angular-calendar": {
"version": "0.28.28",
"resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.28.28.tgz",
@@ -6264,8 +6252,7 @@
"big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
- "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
- "dev": true
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
},
"binary-extensions": {
"version": "2.2.0",
@@ -7309,8 +7296,7 @@
"co": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
- "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
- "dev": true
+ "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
},
"code-point-at": {
"version": "1.1.0",
@@ -7838,21 +7824,345 @@
}
},
"cordova-android": {
- "version": "9.1.0",
- "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-9.1.0.tgz",
- "integrity": "sha512-bzOX9E4eQsOSpa06oZZ7XAGq3DwB73juhhj0oPqHH/khWk0mkCD4aiVYMFoc0fmIaSQvzbY1ww7L6UBW5pyGfg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-5.0.0.tgz",
+ "integrity": "sha1-vFlPYEhSWGz3500gQqNzH9dts6o=",
"dev": true,
"requires": {
- "android-versions": "^1.5.0",
- "cordova-common": "^4.0.1",
- "execa": "^4.0.2",
- "fast-glob": "^3.2.4",
- "fs-extra": "^9.0.1",
- "is-path-inside": "^3.0.2",
- "nopt": "^4.0.3",
- "properties-parser": "^0.3.1",
- "semver": "^7.3.4",
- "which": "^2.0.2"
+ "cordova-common": "~1.0.0",
+ "elementtree": "^0.1.6",
+ "nopt": "^3.0.1",
+ "properties-parser": "^0.2.3",
+ "q": "^1.4.1",
+ "shelljs": "^0.5.3"
+ },
+ "dependencies": {
+ "cordova-common": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "bplist-parser": "^0.1.0",
+ "cordova-registry-mapper": "^1.1.8",
+ "elementtree": "^0.1.6",
+ "glob": "^5.0.13",
+ "osenv": "^0.1.3",
+ "plist": "^1.1.0",
+ "q": "^1.4.1",
+ "semver": "^5.0.1",
+ "shelljs": "^0.5.1",
+ "underscore": "^1.8.3",
+ "unorm": "^1.3.3"
+ },
+ "dependencies": {
+ "bplist-parser": {
+ "version": "0.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "cordova-registry-mapper": {
+ "version": "1.1.13",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "tape": "^3.5.0"
+ },
+ "dependencies": {
+ "tape": {
+ "version": "3.5.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "deep-equal": "~0.2.0",
+ "defined": "~0.0.0",
+ "glob": "~3.2.9",
+ "inherits": "~2.0.1",
+ "object-inspect": "~0.4.0",
+ "resumer": "~0.0.0",
+ "through": "~2.3.4"
+ },
+ "dependencies": {
+ "deep-equal": {
+ "version": "0.2.2",
+ "bundled": true,
+ "dev": true
+ },
+ "defined": {
+ "version": "0.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "glob": {
+ "version": "3.2.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "inherits": "2",
+ "minimatch": "0.3"
+ },
+ "dependencies": {
+ "minimatch": {
+ "version": "0.3.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lru-cache": "2",
+ "sigmund": "~1.0.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "2.7.0",
+ "bundled": true,
+ "dev": true
+ },
+ "sigmund": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "0.4.0",
+ "bundled": true,
+ "dev": true
+ },
+ "resumer": {
+ "version": "0.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "through": "~2.3.4"
+ }
+ },
+ "through": {
+ "version": "2.3.8",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "glob": {
+ "version": "5.0.15",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "2 || 3",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "dependencies": {
+ "inflight": {
+ "version": "1.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ },
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "inherits": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "minimatch": {
+ "version": "3.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.0.0"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "^0.2.0",
+ "concat-map": "0.0.1"
+ },
+ "dependencies": {
+ "balanced-match": {
+ "version": "0.2.1",
+ "bundled": true,
+ "dev": true
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ }
+ }
+ },
+ "once": {
+ "version": "1.3.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1"
+ },
+ "dependencies": {
+ "wrappy": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "osenv": {
+ "version": "0.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ },
+ "dependencies": {
+ "os-homedir": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "plist": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "base64-js": "0.0.6",
+ "util-deprecate": "1.0.0",
+ "xmlbuilder": "2.2.1",
+ "xmldom": "0.1.x"
+ },
+ "dependencies": {
+ "base64-js": {
+ "version": "0.0.6",
+ "bundled": true,
+ "dev": true
+ },
+ "util-deprecate": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "xmlbuilder": {
+ "version": "2.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "lodash-node": "~2.4.1"
+ },
+ "dependencies": {
+ "lodash-node": {
+ "version": "2.4.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "xmldom": {
+ "version": "0.1.19",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "semver": {
+ "version": "5.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "underscore": {
+ "version": "1.8.3",
+ "bundled": true,
+ "dev": true
+ },
+ "unorm": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "elementtree": {
+ "version": "0.1.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "sax": "0.3.5"
+ },
+ "dependencies": {
+ "sax": {
+ "version": "0.3.5",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "nopt": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "abbrev": "1"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.0.7",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
+ "properties-parser": {
+ "version": "0.2.3",
+ "bundled": true,
+ "dev": true
+ },
+ "q": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true
+ },
+ "shelljs": {
+ "version": "0.5.3",
+ "bundled": true,
+ "dev": true
+ }
}
},
"cordova-android-support-gradle-release": {
@@ -8197,8 +8507,7 @@
"cordova-plugin-file": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-6.0.2.tgz",
- "integrity": "sha512-m7cughw327CjONN/qjzsTpSesLaeybksQh420/gRuSXJX5Zt9NfgsSbqqKDon6jnQ9Mm7h7imgyO2uJ34XMBtA==",
- "dev": true
+ "integrity": "sha512-m7cughw327CjONN/qjzsTpSesLaeybksQh420/gRuSXJX5Zt9NfgsSbqqKDon6jnQ9Mm7h7imgyO2uJ34XMBtA=="
},
"cordova-plugin-filepath": {
"version": "1.6.0",
@@ -9586,8 +9895,7 @@
"emojis-list": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
- "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
- "dev": true
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
},
"enabled": {
"version": "2.0.0",
@@ -16597,6 +16905,26 @@
"tslib": "^2.3.0"
}
},
+ "ng2-pdf-viewer": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-3.0.8.tgz",
+ "integrity": "sha512-p2qndFu1wQW4y+xXXw7yk1BhpRo5PGHKWD3PTc7pUULujx9d2vT26lhXR3p9WHitySadGqdCQpkA7W3v1dBlSg==",
+ "requires": {
+ "@types/pdfjs-dist": "^0.1.1",
+ "pdfjs-dist": "1.9.489"
+ },
+ "dependencies": {
+ "pdfjs-dist": {
+ "version": "1.9.489",
+ "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-1.9.489.tgz",
+ "integrity": "sha1-yuWf7d0WouXRlappUnlVz+QALB0=",
+ "requires": {
+ "node-ensure": "^0.0.0",
+ "worker-loader": "^0.8.0"
+ }
+ }
+ }
+ },
"ngx-cookie-service": {
"version": "12.0.3",
"resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-12.0.3.tgz",
@@ -16682,6 +17010,11 @@
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
"integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
},
+ "node-ensure": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/node-ensure/-/node-ensure-0.0.0.tgz",
+ "integrity": "sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc="
+ },
"node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
@@ -19059,15 +19392,6 @@
"read": "1"
}
},
- "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"
- }
- },
"protobufjs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz",
@@ -24891,6 +25215,64 @@
"resolved": "https://registry.npmjs.org/wordcloud/-/wordcloud-1.2.2.tgz",
"integrity": "sha512-fUnDsGrHXou+49j1OeKaC7nOeZPx+sWjIet0L/j6eAcm0nXy+a+AuUs/iDAX4PLBg1Zc6wgXWXhoXdQsXRWAEw=="
},
+ "worker-loader": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/worker-loader/-/worker-loader-0.8.1.tgz",
+ "integrity": "sha1-6OmVMx6jTfW/aCloJL+38K1XjUM=",
+ "requires": {
+ "loader-utils": "^1.0.2",
+ "schema-utils": "^0.3.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "5.5.2",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
+ "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
+ "requires": {
+ "co": "^4.6.0",
+ "fast-deep-equal": "^1.0.0",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.3.0"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
+ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ="
+ },
+ "json-schema-traverse": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
+ "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A="
+ },
+ "json5": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+ "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "loader-utils": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+ "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ }
+ },
+ "schema-utils": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
+ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
+ "requires": {
+ "ajv": "^5.0.0"
+ }
+ }
+ }
+ },
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
diff --git a/package.json b/package.json
index 4fe776b55..2ef6854d2 100644
--- a/package.json
+++ b/package.json
@@ -109,6 +109,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-file": "^6.0.2",
"cordova-plugin-filepath": "^1.5.8",
"cordova-plugin-multiple-documents-picker": "^1.0.0",
"cordova-plugin-okhttp": "^2.0.0",
@@ -139,6 +140,7 @@
"lite-server": "^2.6.1",
"moment": "^2.29.1",
"ng-lazyload-image": "^9.1.2",
+ "ng2-pdf-viewer": "^3.0.8",
"ngx-cookie-service": "^12.0.3",
"ngx-image-compress": "^11.0.3",
"ngx-image-cropper": "^5.0.1",
@@ -174,14 +176,13 @@
"@types/node": "^12.11.1",
"codelyzer": "^6.0.0",
"com-sarriaroman-photoviewer": "^1.2.5",
- "cordova-android": "^9.1.0",
+ "cordova-android": "^5.0.0",
"cordova-android-support-gradle-release": "^3.0.1",
"cordova-browser": "^6.0.0",
"cordova-plugin-androidx": "^3.0.0",
"cordova-plugin-androidx-adapter": "^1.1.3",
"cordova-plugin-device": "^2.0.2",
"cordova-plugin-dialogs": "^2.0.2",
- "cordova-plugin-file": "^6.0.2",
"cordova-plugin-fingerprint-aio": "^4.0.2",
"cordova-plugin-globalization": "^1.11.0",
"cordova-plugin-inappbrowser": "^4.0.0",
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index 4310be39e..ea414f566 100644
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -59,7 +59,7 @@ import { CookieService } from 'ngx-cookie-service';
import { ImagePicker } from '@ionic-native/image-picker/ngx';
import { MediaCapture } from '@ionic-native/media-capture/ngx';
import { Media } from '@ionic-native/media/ngx';
-import { File } from '@ionic-native/file/ngx';
+import { File } from '@ionic-native/file/ngx';
import { StreamingMedia } from '@ionic-native/streaming-media/ngx';
import { PhotoViewer } from '@ionic-native/photo-viewer/ngx';
diff --git a/src/app/modals/view-media/view-media.module.ts b/src/app/modals/view-media/view-media.module.ts
index eb52e9daf..be226427f 100644
--- a/src/app/modals/view-media/view-media.module.ts
+++ b/src/app/modals/view-media/view-media.module.ts
@@ -8,6 +8,7 @@ import { ViewMediaPageRoutingModule } from './view-media-routing.module';
import { ViewMediaPage } from './view-media.page';
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
+import { PdfViewerModule } from 'ng2-pdf-viewer';
@NgModule({
imports: [
@@ -16,6 +17,7 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
IonicModule,
FontAwesomeModule,
ViewMediaPageRoutingModule,
+ PdfViewerModule
],
declarations: [ViewMediaPage]
})
diff --git a/src/app/modals/view-media/view-media.page.html b/src/app/modals/view-media/view-media.page.html
index b4367aac4..6db2694c0 100644
--- a/src/app/modals/view-media/view-media.page.html
+++ b/src/app/modals/view-media/view-media.page.html
@@ -24,6 +24,11 @@
diff --git a/src/app/modals/view-media/view-media.page.ts b/src/app/modals/view-media/view-media.page.ts
index ff6820f19..58bfdd636 100644
--- a/src/app/modals/view-media/view-media.page.ts
+++ b/src/app/modals/view-media/view-media.page.ts
@@ -1,5 +1,6 @@
import { Component, OnInit } from '@angular/core';
import { ModalController, NavParams } from '@ionic/angular';
+import { DomSanitizer} from '@angular/platform-browser';
@Component({
selector: 'app-view-media',
@@ -18,9 +19,12 @@ export class ViewMediaPage implements OnInit {
maxRation: 2
};
+ base64Sanitize:any = "";
+
constructor(
private modalController: ModalController,
private navParams:NavParams,
+ public sanitizer: DomSanitizer,
) {
this.image = this.navParams.get('image')
this.type = this.navParams.get('type')
@@ -29,8 +33,18 @@ export class ViewMediaPage implements OnInit {
}
ngOnInit() {
+ console.log(this.image)
+ this.base64Sanitize = this.sanitizer.bypassSecurityTrustResourceUrl(eval(this.image));
+ console.log(this.base64Sanitize)
+
}
+ sanitizeBase64() {
+ return this.sanitizer.bypassSecurityTrustResourceUrl(this.image);
+ }
+
+
+
close(){
this.modalController.dismiss()
}
diff --git a/src/app/pages/chat/messages/messages.page.html b/src/app/pages/chat/messages/messages.page.html
index bcd95991b..15a491aad 100644
--- a/src/app/pages/chat/messages/messages.page.html
+++ b/src/app/pages/chat/messages/messages.page.html
@@ -80,7 +80,7 @@
-
+
diff --git a/src/app/pages/chat/messages/messages.page.ts b/src/app/pages/chat/messages/messages.page.ts
index c32237485..cf9846ff7 100644
--- a/src/app/pages/chat/messages/messages.page.ts
+++ b/src/app/pages/chat/messages/messages.page.ts
@@ -44,7 +44,7 @@ import { Plugins, Capacitor } from '@capacitor/core';
import { MultipleDocumentsPicker } from '@awesome-cordova-plugins/multiple-document-picker/ngx';
import { DomSanitizer} from '@angular/platform-browser';
import { StringDecoder } from 'string_decoder';
-//import { File } from 'node_modules_/@ionic-native/file/ngx';
+import { File } from '@ionic-native/file/ngx';
const IMAGE_DIR = 'stored-images';
@@ -133,7 +133,8 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
private fileToBase64Service: FileToBase64Service,
private multipleDocumentsPicker: MultipleDocumentsPicker,
private sant: DomSanitizer,
- //private file: File
+ private file: File,
+ //private fileOpener: FileOpener,
private sanitiser: DomSanitizer,
) {
this.loggedUser = authService.ValidatedUserChat['data'];
@@ -740,17 +741,6 @@ export class MessagesPage implements OnInit, AfterViewInit, OnDestroy {
return zoneOriginalInstance || fileReader;
}
-fileToBase64 = (blob,filename) => {
- return new Promise(resolve => {
- var file = new File([blob], filename);
- var reader = this.getFileReader(); // Read file content on file loaded event
- reader.onloadend = (evt) => {
- console.log(evt.target.result)
- resolve(evt.target.result); }; // Convert data to base64
- reader.readAsDataURL(file);
- } )
- };
-
async addFileToChat(types: typeof FileType[]) {
/* this.multipleDocumentsPicker.pick(2)
@@ -1032,12 +1022,11 @@ fileToBase64 = (blob,filename) => {
} 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 {
+ } 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 = new Uint8Array(event.body).reduce((data, byte) => data + String.fromCharCode(byte), '');
//this.downloadFile = event.body
- console.log(event.body)
- console.log(this._arrayBufferToBase64(event.body))
+ console.log(this.downloadFile)
}
msg.attachments[0] = {
@@ -1070,10 +1059,13 @@ fileToBase64 = (blob,filename) => {
console.log(msg);
if (!msg.attachments[0].image_url || msg.attachments[0].image_url === null || msg.attachments[0].image_url === '') {
- this.downloadFile(msg)
+ this.downloadFileMsg(msg)
//this.testDownlod(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',
diff --git a/src/app/shared/chat/messages/messages.page.ts b/src/app/shared/chat/messages/messages.page.ts
index b2d487486..d470e7306 100644
--- a/src/app/shared/chat/messages/messages.page.ts
+++ b/src/app/shared/chat/messages/messages.page.ts
@@ -86,8 +86,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
allowTyping = true;
storedFileNames = [];
lastAudioRecorded = '';
- audioRecorded:any = "";
- audioDownloaded:any = "";
+ audioRecorded: any = "";
+ audioDownloaded: any = "";
durationDisplay = '';
duration = 0;
@@ -239,7 +239,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}, 1000)
}
- async getFile(fileName?:any){
+ async getFile(fileName?: any) {
const audioFile = await Filesystem.readFile({
path: fileName,
directory: Directory.Data
@@ -257,10 +257,10 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
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}`);
}
});
@@ -293,8 +293,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
//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');
})
}
@@ -304,7 +304,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}, 1000);
}
- async deleteRecording(){
+ async deleteRecording() {
this.storage.remove('fileName');
this.storage.remove('recordData');
@@ -361,17 +361,17 @@ export class MessagesPage implements OnInit, OnChanges, 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 base64Response = await fetch(this.audioRecorded);
- const blob = await base64Response.blob();
+ const blob = await base64Response.blob();
const formData = new FormData();
formData.append("blobFile", blob);
@@ -380,11 +380,11 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
file: {
"type": "application/audio",
/* "guid": '', */
- "msDuration":audioFile.value.msDuration,
- "mimeType":audioFile.value.mimeType,
+ "msDuration": audioFile.value.msDuration,
+ "mimeType": audioFile.value.mimeType,
},
attachments: [{
- "title": fileName ,
+ "title": fileName,
"title_link": this.audioRecorded,
"title_link_download": true,
"type": "audio"
@@ -395,10 +395,10 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}
- deleteMessage(msgId: string, msg:MessageService) {
+ deleteMessage(msgId: string, msg: MessageService) {
- /* msg.delateStatusFalse()
- this.wsChatMethodsService.getDmRoom(this.roomId).sendDeleteRequest(msgId) */
+ /* msg.delateStatusFalse()
+ this.wsChatMethodsService.getDmRoom(this.roomId).sendDeleteRequest(msgId) */
}
@@ -417,8 +417,8 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
else {
console.log('PDF CLICK', msg)
var str = msg.attachments[0].image_url;
- str = str.substring(1,((str.length)-1));
-
+ str = str.substring(1, ((str.length) - 1));
+
const encodedData = btoa(str);
/* let fullUrl;
fullUrl = "https://gabinetedigitalchat.dyndns.info" + url;
@@ -443,17 +443,17 @@ export class MessagesPage implements OnInit, OnChanges, 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 openViewDocumentModal(file: any) {
@@ -772,7 +772,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
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)
@@ -922,7 +922,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
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))
@@ -939,7 +939,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
// save the changes to the storage
//msg.save()
-
+
}
});
@@ -948,16 +948,6 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
}
- _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 );
-}
-
pdfPreview() {
const options: DocumentViewerOptions = {
title: 'My App'
@@ -970,12 +960,33 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
if (!msg.attachments[0].image_url || msg.attachments[0].image_url === null || msg.attachments[0].image_url === '') {
this.downloadFileMsg(msg)
-
- } else if (msg.file.type === "application/pdf") {
- this.viewDocument(msg, msg.attachments.image_url)
+
+ /* } else if (msg.file.type === "application/pdf") {
+
+
+ console.log(str);
+ const win = window.open("", "_blank");
+ let html = '';
+
+ html += '';
+ html += '';
+ html += '';
+ html += '';
+ html += '';
+
+ setTimeout(() => {
+ win.document.write(html);
+ }, 0); */
+
+
+
+ //this.viewDocument(msg, msg.attachments.image_url)
} else {
+ var str = msg.attachments[0].image_url;
+ str = str.substring(1, ((str.length) - 1));
+
/* if(msg.file.type === "application/pdf") {
this.viewDocument(msg, msg.attachments.image_url)
} else { */
@@ -983,7 +994,7 @@ export class MessagesPage implements OnInit, OnChanges, AfterViewInit, OnDestroy
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
diff --git a/src/app/shared/publication/view-publications/view-publications.page.html b/src/app/shared/publication/view-publications/view-publications.page.html
index 81573e3ce..47ed1b276 100644
--- a/src/app/shared/publication/view-publications/view-publications.page.html
+++ b/src/app/shared/publication/view-publications/view-publications.page.html
@@ -40,7 +40,8 @@