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 += '