How to download a file with ionic 5 - ionic-framework

I am trying to download a file with my ionic app, but it's not working, the file is a video file and I want to show a progress bar as its downloading, How it will work is that when a user clicks on download, it will check if the directory AppName exist, it not it will create the directory, then download the file inside the directory.
Here's my code
download() {
this.chkmkDir().then(async ()=>{
const fileTransfer: FileTransferObject = this.fileTransfer.create();
this.storageDirectory = `${this.file.dataDirectory}${api.AppName}/`;
fileTransfer.onProgress((progressEvent)=>this.progress=Math.round((progressEvent.loaded / progressEvent.total) * 100))
let fileName=await this.service.getFileName('mp4')
var URL = encodeURI('test.mp4');
fileTransfer.download(URL,`${this.storageDirectory}${fileName}`, true)
})
}
chkmkDir(){
return new Promise((resolve, reject)=>{
this.file.checkDir(this.file.dataDirectory, api.AppName).then(res=>resolve()
).catch(err => {
this.file.createDir(this.file.dataDirectory, api.AppName,false).then(res =>resolve())
.catch(err=>reject(JSON.stringify(err)));
});
})
}
Please what am I doing wrong, I got this error in the console
ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'then' of undefined TypeError: Cannot read property 'then' of undefined

The plugin that you're using is just not there. Your code can't read the classes from the plugin. That may happen due to plugin incompatibility or other dependency issues related to plugins.
This can happen too when you didn't set or configured the plugin properly. Please check your app.module.ts file. And also check if any error related to plugin versions incompatibility is logged in the console. In a brief, all your plugins should have the same version as your "#ionic-native/core" version.
Ex:
package.json
"#ionic-native/core": "^5.0.0",
"#ionic-native/diagnostic": "^5.0.0",
"#ionic-native/dialogs": "^5.0.0",
"#ionic-native/file": "^5.0.0",
"#ionic-native/file-path": "^5.0.0",
"#ionic-native/file-transfer": "^5.0.0",
"#ionic-native/http": "^5.0.0",

Related

Installing React Native Firebase fails at compiling RingBuffer.swift

I am attempting to implement RNFB to my react-native project. for iOS the pods install just fine. However, when I run npm run iOS I get the following error and crash report:
❌ /Users/[Redacted]/Documents/GitHub/[Redacted]/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/RingBuffer.swift:19:35: reference to generic type 'Array' requires arguments in <...>
case outOfBoundsPush(pushIndex: Array.Index, endIndex: Array.Index)
I was able to find this article that was very recent and it appears to be what I'm looking for but I have absolutely no idea what it says... google translate helps a little bit but I do not know enough to be able to infer a solution.
honestly I do not really even need anything related to heartbeat from firebase. I just need to use the Firebase Analytics and Google Analytics capabilities. But this package came with it and I don't see a way to tell it not to compile.
Regardless, I attempted to downgrade to a lower version of RNFB, I believe I it was version 15.4.0 -> 15.0.0 to see if maybe the new package was the problem but I still get the same errors.
I tried modifying the RingBuffer.swift file... but the file is read-only.
This issue is happening in other FirebaseCore/Internal files...
The following build commands failed:
CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
CompileSwift normal x86_64 /Users/[Redacted]/Documents/GitHub/[Redacted]/ios/Pods/FirebaseCoreInternal/[Redacted]/Internal/Sources/HeartbeatLogging/HeartbeatController.swift
CompileSwift normal x86_64 /Users/[Redacted]/Documents/GitHub/[Redacted]/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatsBundle.swift
CompileSwift normal x86_64 /Users/[Redacted]/Documents/GitHub/[Redacted]/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/HeartbeatsPayload.swift
CompileSwift normal x86_64 /Users/[Redacted]/Documents/GitHub/[Redacted]/ios/Pods/FirebaseCoreInternal/FirebaseCore/Internal/Sources/HeartbeatLogging/RingBuffer.swift
here is my package.json file
"main": "index.js",
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"web": "expo start --web",
"start": "react-native start",
"test": "jest",
"debug-build-android": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res",
"build-android": "./android/gradlew ./android/assembleRelease"
},
"dependencies": {
"#react-native-async-storage/async-storage": "^1.13.4",
"#react-native-community/masked-view": "0.1.10",
"#react-native-community/netinfo": "^5.9.9",
"#react-native-firebase/app": "^15.0.0",
"#react-navigation/bottom-tabs": "^5.11.2",
"#react-navigation/drawer": "^5.11.4",
"#react-navigation/native": "^5.8.10",
"#react-navigation/stack": "^5.12.8",
"axios": "^0.21.1",
"expo": "~40.0.0",
"expo-app-loading": "1.0.3",
"expo-asset": "~8.2.1",
"expo-blur": "~8.2.2",
"expo-file-system": "~9.3.0",
"expo-gl": "^9.2.0",
"expo-keep-awake": "~8.4.0",
"expo-screen-orientation": "^3.3.0",
"expo-splash-screen": "~0.8.1",
"expo-three": "^5.5.1",
"expo-updates": "~0.4.0",
"expo-web-browser": "~8.6.0",
"immutability-helper": "^3.1.1",
"lodash.throttle": "^4.1.1",
"react": "16.13.1",
"react-dom": "16.13.1",
"react-native": "~0.63.4",
"react-native-background-downloader": "^2.3.4",
"react-native-base64": "^0.2.1",
"react-native-elements": "3.4.1",
"react-native-fast-image": "^8.3.4",
"react-native-gesture-handler": "~1.8.0",
"react-native-maps": "^0.27.1",
"react-native-reanimated": "~1.13.0",
"react-native-render-html": "^5.0.1",
"react-native-safe-area-context": "^3.1.9",
"react-native-screens": "~2.15.0",
"react-native-toast-message": "1.4.9",
"react-native-unimodules": "~0.12.0",
"react-native-video": "^5.2.0",
"react-native-view-pdf": "^0.13.2",
"react-native-webview": "11.0.0",
"react-native-zip-archive": "^6.0.2",
"react-navigation-header-buttons": "^7.0.1",
"react-redux": "^7.2.2",
"react-three-fiber": "^5.3.21",
"realm": "^10.4.0",
"redux": "^4.0.5",
"redux-devtools-extension": "^2.13.9",
"redux-persist": "^6.0.0",
"redux-thunk": "^2.3.0",
"three": "0.123.0"
},
"devDependencies": {
"#babel/core": "~7.9.0",
"#testing-library/react-native": "^7.2.0",
"#types/jest": "^26.0.19",
"#types/lodash.throttle": "^4.1.6",
"#types/react": "^17.0.0",
"#types/react-native": "^0.63.40",
"#types/react-native-background-downloader": "^2.3.3",
"#types/react-native-base64": "^0.2.0",
"#types/react-native-video": "^5.0.10",
"#types/react-redux": "^7.1.14",
"#types/react-test-renderer": "^17.0.0",
"#types/redux-mock-store": "^1.0.3",
"#types/three": "^0.125.3",
"babel-jest": "^25.2.6",
"jest": "~25.2.6",
"jest-expo": "^42.1.0",
"react-test-renderer": "~16.13.1",
"redux-mock-store": "^1.5.4",
"ts-node": "^10.2.1",
"typescript": "^4.1.3"
},
"jest": {
"preset": "jest-expo"
},
"private": true,
"version": "1.0.1"
}
here is my pod file
$RNFirebaseAsStaticFramework = true #firebase requires static frameworkds
require_relative '../node_modules/react-native/scripts/react_native_pods'
require_relative '../node_modules/react-native-unimodules/cocoapods.rb'
require_relative '../node_modules/#react-native-community/cli-platform-ios/native_modules'
platform :ios, '11.0'
target '[Redacted]' do
use_unimodules!
config = use_native_modules!
use_react_native!(:path => config["reactNativePath"])
# react native firebase requires frameworks...
use_frameworks!
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable these next few lines.
# use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
config.build_settings['SWIFT_VERSION'] = '5.0'
end
end
flipper_post_install(installer)
end
end
Xcode Version : Version 13.4.1 (13F100)
some lines have been removed for anonymity.
I was able to fix this compilation error by overwriting the specified pod dependency .swift file with modifications to the following code block
//dependency errors at this point in the file
case outOfBoundsPush(pushIndex: Array.Index, endIndex: Array.Index)
//adding a type definition for the array fixes compilation error
case outOfBoundsPush(pushIndex: Array<Any>.Index, endIndex: Array<Any>.Index)
now if only I knew where to report the pod file discrepancy. Or if anyone would like to tell me why the pod file is packaged improperly for my compiler to understand?
Firebase's minimum supported Swift Version is 5.3 - so the override in the Podfile's post_install script may be the issue. Try deleting or updating config.build_settings['SWIFT_VERSION'] = '5.0'

Using CapacitorGoogleMaps from #capacitor/core in capacitor v3

I have a problem with CapacitorGoogleMaps... In v2 it was ok but importing CapacitorGoogleMaps from #capacitor-community/capacitor-googlemaps-native give me issues reported by user. So I'm trying to use CapacitorGoogleMaps using v2's method:
import { Plugins } from '#capacitor/core';
const { CapacitorGoogleMaps } = Plugins;
But it results in this error:
TypeError: undefined is not an object (evaluating 'CapacitorGoogleMaps.addListener')
I'm using the oldest stable v3 packages as possible:
"#capacitor/core": "3.0.0",
"#capacitor/ios": "3.0.0",
"#capacitor/android": "3.0.0",
"#capacitor/cli": "3.0.0"
Please help, can I really use CapacitorGoogleMaps the v2 way when I'm using v3?

Attempted import error: 'FlyToInterpolator' when using mapBox

Getting this error when trying to use react mapbox geocoder in my react project.
I deleted FlyToInterpolator but still getting the same error.
Anybody has a solution?
I installed
import MapGL from "react-map-gl";
import Geocoder from "react-map-gl-geocoder";
./node_modules/react-map-gl-geocoder/dist/index.m.js
Attempted import error: 'FlyToInterpolator' is not exported from 'react-map-gl' (imported as 'r').
these are my dependencies:
"mapbox": "^1.0.0-beta10",
"mapbox-gl": "^2.7.0",
"mapbox-gl-geocoder": "^2.0.1",
"prop-types": "^15.8.1",
"react": "^16.14.0",
"react-dom": "^16.14.0",
"react-icons": "^4.3.1",
"react-map-gl": "^7.0.9",
"react-map-gl-geocoder": "^2.2.0",
"react-mapbox-gl-geocoder": "^1.1.0",
"react-scripts": "4.0.3",
"reactstrap": "^9.0.1",
react-map-gl-geocoder doesn't work with latest react-map-gl version as you can see here https://github.com/SamSamskies/react-map-gl-geocoder/issues/132
You can use #mapbox/mapbox-gl-geocoder instead:
https://github.com/mapbox/mapbox-gl-geocoder
Just replace the import:
import MapboxGeocoder from '#mapbox/mapbox-gl-geocoder';

How to fix Error cannot find module 'core-js/es6'

I have been getting an error regardless of what I do. In fact I am building an app with mongoDB as a server using mongoose and babel-watch, but every time I run babel-watch I get this error:
Error cannot find module 'core-js/es6'
I have installed and reinstalled core.js using npm install core.js, however nothing changes. Please help.
These are the dependencies I have installed on my project:
"dependencies": {
"body-parser": "^1.19.0",
"core-js": "^2.6",
"cuid": "^2.1.6",
"express": "^4.17.1",
"limax": "^1.7.0",
"mongoose": "^5.6.9",
"node-gyp": "^5.0.3"
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-core": "^6.26.3",
"babel-loader": "^8.0.6",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-0": "^6.24.1",
"babel-watch": "^7.0.0",
"nodemon": "^1.19.1"
}
}
Code error seen from terminal after running npm start
For core.js v3.9 import in App.tsx the next line: import "core-js/es";
Given that you are using core-js v2.6.9, your path should be core-js/library/es6 as the example shows you in the documentation here.

karma + gulp + jasmine + commonjs/browserify

I'm trying to get my karma jasmine unit testing back up running after introducing a bunch of commonJS (at least I guess that's what it's called) and starting to use package.json and upgrading all packages and get errors everywhere.
Running gulp test, I get
[04:01:55] Using gulpfile ~/workspace/thisapp/Gulpfile.js
[04:01:55] Starting 'test'...
[04:01:55] Starting Karma server...
/home/leo/workspace/thisapp/node_modules/karma/node_modules/di/lib/injector.js:9
throw error('No provider for "' + name + '"!');
^
Error: No provider for "framework:browserify"! (Resolving: framework:browserify)
at error (/home/leo/workspace/thisapp/node_modules/karma/node_modules/di/lib/injector.js:22:68)
at Object.parent.get (/home/leo/workspace/thisapp/node_modules/karma/node_modules/di/lib/injector.js:9:13)
at get (/home/leo/workspace/thisapp/node_modules/karma/node_modules/di/lib/injector.js:54:19)
at /home/leo/workspace/thisapp/node_modules/karma/lib/server.js:29:14
at Array.forEach (native)
at start (/home/leo/workspace/thisapp/node_modules/karma/lib/server.js:28:21)
at invoke (/home/leo/workspace/thisapp/node_modules/karma/node_modules/di/lib/injector.js:75:15)
at Object.exports.start (/home/leo/workspace/thisapp/node_modules/karma/lib/server.js:307:12)
at Object.<anonymous> (/home/leo/workspace/thisapp/node_modules/gulp-karma/lib/background.js:3:8)
at Module._compile (module.js:456:26)
with
frameworks : [ 'jasmine', 'browserify' ],
in my karma config and this (horribly) set of dependencies:
"browserify": "^10.2.3",
"browserify-shim": "^3.8.9",
"esmangle": "^1.0.1",
"gulp": "^3.9.0",
"gulp-browserify": "^0.5.1",
"gulp-cordova": "^0.1.2",
"gulp-if": "^1.2.5",
"gulp-jshint": "^1.11.0",
"gulp-karma": "0.0.4",
"gulp-replace": "^0.5.3",
"gulp-shell": "^0.4.2",
"gulp-sourcemaps": "^1.5.2",
"gulp-uglify": "^1.2.0",
"gulp-util": "^3.0.5",
"jasmine-core": "^2.3.4",
"karma": "^0.12.37",
"karma-browserify": "^4.2.1",
"karma-chrome-launcher": "^0.2.0",
"karma-commonjs": "0.0.13",
"karma-jasmine": "^0.3.6",
"karma-jasmine-html-reporter": "*",
"karma-phantomjs-launcher": "^0.2.0",
"phantomjs": "^1.9.17",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0"
Now my assumption would be that if karma-jasmine works, which it does (browserify was the latest addition, as the tests need some requires and karma-commonjs results in the same issues as karma-browserify), then karma-browserify should work equally.
But, for a very similar error of karma-jasmine not being found I had switched from karma to gulp-karma, as there I found the error and it was marked as fixed, which at least for karma-jasmine it is.
In the end I need karma with require and gulp would be nice to have but I'm lost.
You need to add it also to plugins of your karma config:
plugins : [
'karma-junit-reporter',
'karma-chrome-launcher',
'karma-firefox-launcher',
....
'karma-commonjs',
'karma-browserify'
],