diff --git a/Jenkinsfile b/Jenkinsfile index 66cff19..6ae1d33 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,36 +7,59 @@ pipeline { buildDiscarder(logRotator(numToKeepStr: '10')) } parameters { + string(name: 'APP_PACKAGE_ID', defaultValue: 'comptaplan.app', description: 'Application package id used as android identifier') + string(name: 'APP_BUNDLE_ID', defaultValue: 'comptaplan_app', description: 'Application bundle id used as ios identifier') string(name: 'APP_TITLE', defaultValue: 'My Comptaplan', description: 'Application title') string(name: 'APP_URI', defaultValue: 'https://my.comptaplan.be', description: 'Application uri') string(name: 'APP_COLOR', defaultValue: 'blue', description: 'Application color (blue, teal, ...)') string(name: 'BUILD_MODE', defaultValue: 'debug', description: 'Flutter build mode (debug/release)') - string(name: 'UPLOAD_TRACK', defaultValue: 'alpha', description: 'Upload track') - string(name: 'RELEASE_MESSAGE', defaultValue: 'Nouvelle version', description: 'A release message') - string(name: 'RELEASE_STATUS', defaultValue: 'completed', description: 'draft/completed') + string(name: 'ANDROID_SIGNING_KEYSTORE_CREDENTIAL', defaultValue: 'jenkins-gestemps-android-service-secret-keystore') + string(name: 'ANDROID_SIGNING_KEYSTORE_PASSWORD_CREDENTIAL', defaultValue: 'jenkins-gestemps-android-service-secret-keystore-password') + string(name: 'ANDROID_SIGNING_KEY_PASSWORD_CREDENTIAL', defaultValue: 'jenkins-gestemps-android-service-secret-key-password') + string(name: 'ANDROID_SIGNING_KEY_ALIAS', defaultValue: 'comptaplan', + description: 'The key alias to use within the keystore') booleanParam(name: 'SKIP_PUBLISH', defaultValue: 'true', description: 'Skip publishing apk') string(name: 'GIT_CREDENTIAL_ID', defaultValue: 'jenkins-jenkins-ssh-key', description: '') + string(name: 'RELEASE_MESSAGE', defaultValue: 'Nouvelle version', description: 'A release message') + string(name: 'ANDROID_UPLOAD_TRACK', defaultValue: 'alpha', description: 'Upload track (internal/alpha/beta/production)') + string(name: 'ANDROID_RELEASE_STATUS', defaultValue: 'completed', description: 'draft/completed') + string(name: 'ANDROID_API_KEY_CREDENTIAL', defaultValue: 'jenkins-gestemps-android-service-secret-api-key', description: 'Api key to for the play store api') + string(name: 'GIT_SSH_REMOTE_NAME', defaultValue: 'ssh://git@gitea.valuya.com:2022/Valuya/comptaplan_app.git', + description: 'We use ssh authentication, but gitea may use an http remotes by default. This is the remote to push the build number increment.') string(name: 'GIT_PUSH_BRANCH', defaultValue: 'android-releases', description: 'A branch to push the commit') string(name: 'GIT_TAG', defaultValue: '', description: 'An additional tag to push') + string(name: 'SSH_KNOWN_HOSTS_FILE', defaultValue: '/var/run/ssh/known_hosts.gitea.valuya.com', description: 'Known hosts for ssh client (might be used to get flutter git dependencies and push commits)') booleanParam(name: 'SKIP_PUSH_TAG', defaultValue: 'true', description: 'Skip push tag') - string(name: 'NODEJS_INSTALLATION', defaultValue: 'node14',description: 'Nodejs installation to use') + string(name: 'NODEJS_INSTALLATION', defaultValue: 'node 15',description: 'Nodejs installation to use') } stages { stage ('Build') { steps { script { + env.APP_PACKAGE_ID= params.APP_PACKAGE_ID + env.APP_BUNDLE_ID= params.APP_BUNDLE_ID env.APP_TITLE= params.APP_TITLE env.APP_URI= params.APP_URI env.APP_COLOR= params.APP_COLOR env.BUILD_MODE= params.BUILD_MODE + env.SSH_KNOWN_HOSTS_FILE= params.SSH_KNOWN_HOSTS_FILE + env.ANDROID_KEY_ALIAS= params.ANDROID_SIGNING_KEY_ALIAS } container ('flutter') { sshagent(["${params.GIT_CREDENTIAL_ID}"]) { - sh 'flutter doctor' - sh 'GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/var/run/ssh/known_hosts.gitea.fteamdev.valuya.be" flutter pub get' - sh 'flutter clean' - sh 'APP_TITLE="$APP_TITLE" APP_URI="$APP_URI" APP_COLOR="$APP_COLOR" BUILDMODE="$BUILD_MODEs" ./tools/jenkins-build-android.sh' - stash(name: 'outputs', includes: 'build/app/outputs/**') + withCredentials([ + file(credentialsId: params.ANDROID_SIGNING_KEYSTORE_CREDENTIAL, variable: 'ANDROID_KEYSTORE_FILE'), + string(credentialsId: params.ANDROID_SIGNING_KEYSTORE_PASSWORD_CREDENTIAL, variable: 'ANDROID_KEYSTORE_PASSWORD'), + string(credentialsId: params.ANDROID_SIGNING_KEY_PASSWORD_CREDENTIAL, variable: 'ANDROID_KEY_PASSWORD') + ]) { + sh 'flutter doctor' + sh 'GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=$SSH_KNOWN_HOSTS_FILE" flutter pub get' + sh 'flutter clean' + sh './tools/set-bundle-identifier.sh "$APP_BUNDLE_ID"' + sh './tools/set-package.sh "$APP_PACKAGE_ID"' + sh './tools/set-title.sh "$APP_TITLE"' + sh './tools/jenkins-build-android.sh' + } } } } @@ -51,14 +74,20 @@ pipeline { env.SKIP_PUSH_TAG= params.SKIP_PUSH_TAG env.GIT_TAG= params.GIT_TAG env.GIT_PUSH_BRANCH = params.GIT_PUSH_BRANCH - env.TRACK = params.UPLOAD_TRACK - env.RELEASE_STATUS = params.RELEASE_STATUS + env.ANDROID_UPLOAD_TRACK = params.ANDROID_UPLOAD_TRACK + env.ANDROID_RELEASE_STATUS = params.ANDROID_RELEASE_STATUS env.RELEASE_MESSAGE = params.RELEASE_MESSAGE + env.GIT_SSH_REMOTE_NAME = params.GIT_SSH_REMOTE_NAME + env.SSH_KNOWN_HOSTS_FILE = params.SSH_KNOWN_HOSTS_FILE } - unstash(name: 'outputs') sshagent(["${params.GIT_CREDENTIAL_ID}"]) { nodejs(nodeJSInstallationName: "${params.NODEJS_INSTALLATION}") { - sh './tools/jenkins-publish-android.sh' + withCredentials([ + file(credentialsId: params.ANDROID_API_KEY_CREDENTIAL, variable: 'GOOGLE_APPLICATION_CREDENTIALS') + ]) { + sh './tools/jenkins-publish-android.sh' + } + } sh ''' VERSION_CODE=$(./tools/jenkins-increment-buildnumber.sh || echo $?) @@ -66,9 +95,9 @@ pipeline { git config user.email "jenkins@valuya.com" git config user.name "Jenkins release" git add pubspec.yaml - git remote add ssh "ssh://git@gitea.valuya.com:2022/Valuya/comptaplan_app.git" + git remote add ssh "$GIT_SSH_REMOTE_NAME" git commit -m "Bump to build $VERSION_CODE" - export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/var/run/ssh/known_hosts.gitea.valuya.com" + export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=$SSH_KNOWN_HOSTS_FILE" git push ssh HEAD:$GIT_PUSH_BRANCH if [ "$SKIP_PUSH_TAG" != "true" ] ; then git tag "$GIT_TAG" diff --git a/README.md b/README.md index 195be10..498223b 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,29 @@ An embedded webview Build-time env config: -APP_TITLE=The app title which does not appear used much -APP_URI=THe uri to load -APP_COLOR=The color to use a theme that does not appear used much - +APP_TITLE=The app title which does not appear used much APP_URI=THe uri to load APP_COLOR=The color to use a theme that does not appear used +much Pass them to dart usign --dart-define: `--dart-define="APP_TITLE=test" --dart-define="APP_URI=https://www.charlyghislain.com"` Pass those flags to flutter run, ... +See jenkinsfile. + ## To publish on app store -- Clone this repo +- Fork this repo - Alter the android and ios config to your liking, package name, key etc -- Publish +- Push your branding changes to another repo +- Set up the jenkins job +- Merge upstream changes regularly + + +## Adnroid checklist: +- setup a key.properties file along local.properties +- load the properties in the app/build.gradle and reference to generate the manaifest + ## Getting Started @@ -29,5 +37,4 @@ A few resources to get you started if this is your first Flutter project: - [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) For help getting started with Flutter, view our -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +[online documentation](https://flutter.dev/docs), which offers tutorials, samples, guidance on mobile development, and a full API reference. diff --git a/android/app/build.gradle b/android/app/build.gradle index 8a2bf85..e2295cf 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -21,6 +21,13 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + + apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" @@ -41,6 +48,10 @@ android { main.java.srcDirs += 'src/main/kotlin' } + dependencies { + implementation 'com.google.android.material:material:1.4.0' + } + defaultConfig { applicationId "comptaplan.app" minSdkVersion 19 @@ -56,7 +67,6 @@ android { storePassword keystoreProperties['storePassword'] } } - buildTypes { release { signingConfig signingConfigs.release diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 535572e..97389f6 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="comptaplan.app"> diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 07ad2d8..10e7847 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,14 @@ + + + + + + + android:icon="@mipmap/icon"> - + - diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index d74aa35..2316bee 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -12,7 +12,7 @@ running. This Theme is only used starting with V2 of Flutter's Android embedding. --> - diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml index 535572e..97389f6 100644 --- a/android/app/src/profile/AndroidManifest.xml +++ b/android/app/src/profile/AndroidManifest.xml @@ -1,5 +1,5 @@ + package="comptaplan.app"> diff --git a/images/winbooks_connect.png b/images/winbooks_connect.png new file mode 100644 index 0000000..e280904 Binary files /dev/null and b/images/winbooks_connect.png differ diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index a536e16..1354a38 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -291,7 +291,7 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.charlyghislain.embeddedWebview; + PRODUCT_BUNDLE_IDENTIFIER = com.charlyghislain.embedded_webview; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -415,7 +415,7 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.charlyghislain.embeddedWebview; + PRODUCT_BUNDLE_IDENTIFIER = com.charlyghislain.embedded_webview; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -434,7 +434,7 @@ ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.charlyghislain.embeddedWebview; + PRODUCT_BUNDLE_IDENTIFIER = com.charlyghislain.embedded_webview; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024x1024.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024x1024.png new file mode 100644 index 0000000..03fca97 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024x1024.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120-1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120-1.png new file mode 100644 index 0000000..aae727f Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120-1.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120.png new file mode 100644 index 0000000..aae727f Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120x120.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/152x152.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/152x152.png new file mode 100644 index 0000000..1483283 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/152x152.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/167x167.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/167x167.png new file mode 100644 index 0000000..6532f10 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/167x167.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/180x180.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/180x180.png new file mode 100644 index 0000000..3caf0c0 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/180x180.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/20x20.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/20x20.png new file mode 100644 index 0000000..6061726 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/20x20.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/29x29.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/29x29.png new file mode 100644 index 0000000..a932bb7 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/29x29.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40-1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40-1.png new file mode 100644 index 0000000..73f096b Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40-1.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40-2.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40-2.png new file mode 100644 index 0000000..73f096b Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40-2.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40.png new file mode 100644 index 0000000..73f096b Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40x40.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58-1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58-1.png new file mode 100644 index 0000000..58cb16d Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58-1.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58.png new file mode 100644 index 0000000..58cb16d Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58x58.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/60x60.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/60x60.png new file mode 100644 index 0000000..20ac7f1 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/60x60.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/76x76.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/76x76.png new file mode 100644 index 0000000..caba2f4 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/76x76.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80-1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80-1.png new file mode 100644 index 0000000..0831188 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80-1.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80.png new file mode 100644 index 0000000..0831188 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80x80.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/87x87.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/87x87.png new file mode 100644 index 0000000..f0150c5 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/87x87.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fa..b51241a 100644 --- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,122 +1,116 @@ { "images" : [ { - "size" : "20x20", + "filename" : "40x40.png", "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { - "size" : "20x20", + "filename" : "60x60.png", "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" + "scale" : "3x", + "size" : "20x20" }, { - "size" : "29x29", + "filename" : "58x58.png", "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" + "scale" : "2x", + "size" : "29x29" }, { - "size" : "29x29", + "filename" : "87x87.png", "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" + "scale" : "3x", + "size" : "29x29" }, { - "size" : "29x29", + "filename" : "80x80.png", "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" + "scale" : "2x", + "size" : "40x40" }, { - "size" : "40x40", + "filename" : "120x120.png", "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" + "scale" : "3x", + "size" : "40x40" }, { - "size" : "40x40", + "filename" : "120x120-1.png", "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" + "scale" : "2x", + "size" : "60x60" }, { - "size" : "60x60", + "filename" : "180x180.png", "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" + "scale" : "3x", + "size" : "60x60" }, { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", + "filename" : "20x20.png", "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "20x20" }, { - "size" : "20x20", + "filename" : "40x40-1.png", "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { - "size" : "29x29", + "filename" : "29x29.png", "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "29x29" }, { - "size" : "29x29", + "filename" : "58x58-1.png", "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { - "size" : "40x40", + "filename" : "40x40-2.png", "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "40x40" }, { - "size" : "40x40", + "filename" : "80x80-1.png", "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { - "size" : "76x76", + "filename" : "76x76.png", "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "76x76" }, { - "size" : "76x76", + "filename" : "152x152.png", "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "76x76" }, { - "size" : "83.5x83.5", + "filename" : "167x167.png", "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "83.5x83.5" }, { - "size" : "1024x1024", + "filename" : "1024x1024.png", "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "1024x1024" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } } diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x748.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x748.png new file mode 100644 index 0000000..e01cd9a Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x748.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x768-1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x768-1.png new file mode 100644 index 0000000..0b06983 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x768-1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x768.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x768.png new file mode 100644 index 0000000..0b06983 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1024x768.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1125x2436.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1125x2436.png new file mode 100644 index 0000000..59808e6 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1125x2436.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1242x2208.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1242x2208.png new file mode 100644 index 0000000..3e0d156 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1242x2208.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1242x2688.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1242x2688.png new file mode 100644 index 0000000..c3c6592 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1242x2688.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2008.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2008.png new file mode 100644 index 0000000..bfedc4b Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2008.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2048-1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2048-1.png new file mode 100644 index 0000000..2319a7a Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2048-1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2048.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2048.png new file mode 100644 index 0000000..2319a7a Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1536x2048.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/1792x828.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1792x828.png new file mode 100644 index 0000000..810c86d Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/1792x828.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1496.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1496.png new file mode 100644 index 0000000..af4e0a2 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1496.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1536-1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1536-1.png new file mode 100644 index 0000000..2983133 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1536-1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1536.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1536.png new file mode 100644 index 0000000..2983133 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2048x1536.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/2208x1242.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2208x1242.png new file mode 100644 index 0000000..903b182 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2208x1242.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/2436x1125.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2436x1125.png new file mode 100644 index 0000000..2f8f904 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2436x1125.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/2688x1242.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2688x1242.png new file mode 100644 index 0000000..c9a3f3c Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/2688x1242.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/320x480.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/320x480.png new file mode 100644 index 0000000..7a64e2d Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/320x480.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x1136-1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x1136-1.png new file mode 100644 index 0000000..4d8fb55 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x1136-1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x1136.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x1136.png new file mode 100644 index 0000000..4d8fb55 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x1136.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x960-1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x960-1.png new file mode 100644 index 0000000..bc64f98 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x960-1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x960.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x960.png new file mode 100644 index 0000000..bc64f98 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/640x960.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/750x1334.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/750x1334.png new file mode 100644 index 0000000..597734e Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/750x1334.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1004.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1004.png new file mode 100644 index 0000000..a3dd060 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1004.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1024-1.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1024-1.png new file mode 100644 index 0000000..1fe5c70 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1024-1.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1024.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1024.png new file mode 100644 index 0000000..1fe5c70 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/768x1024.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/828x1792.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/828x1792.png new file mode 100644 index 0000000..176e84d Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchImage.imageset/828x1792.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json index 0bedcf2..db5d50b 100644 --- a/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -1,23 +1,216 @@ { "images" : [ { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" + "extent" : "full-screen", + "filename" : "1242x2688.png", + "idiom" : "iphone", + "minimum-system-version" : "12.0", + "orientation" : "portrait", + "scale" : "3x", + "subtype" : "2688h" }, { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", + "extent" : "full-screen", + "filename" : "2688x1242.png", + "idiom" : "iphone", + "minimum-system-version" : "12.0", + "orientation" : "landscape", + "scale" : "3x", + "subtype" : "2688h" + }, + { + "extent" : "full-screen", + "filename" : "828x1792.png", + "idiom" : "iphone", + "minimum-system-version" : "12.0", + "orientation" : "portrait", + "scale" : "2x", + "subtype" : "1792h" + }, + { + "extent" : "full-screen", + "filename" : "1792x828.png", + "idiom" : "iphone", + "minimum-system-version" : "12.0", + "orientation" : "landscape", + "scale" : "2x", + "subtype" : "1792h" + }, + { + "extent" : "full-screen", + "filename" : "1125x2436.png", + "idiom" : "iphone", + "minimum-system-version" : "11.0", + "orientation" : "portrait", + "scale" : "3x", + "subtype" : "2436h" + }, + { + "extent" : "full-screen", + "filename" : "2436x1125.png", + "idiom" : "iphone", + "minimum-system-version" : "11.0", + "orientation" : "landscape", + "scale" : "3x", + "subtype" : "2436h" + }, + { + "extent" : "full-screen", + "filename" : "1242x2208.png", + "idiom" : "iphone", + "minimum-system-version" : "8.0", + "orientation" : "portrait", + "scale" : "3x", + "subtype" : "736h" + }, + { + "extent" : "full-screen", + "filename" : "2208x1242.png", + "idiom" : "iphone", + "minimum-system-version" : "8.0", + "orientation" : "landscape", + "scale" : "3x", + "subtype" : "736h" + }, + { + "extent" : "full-screen", + "filename" : "750x1334.png", + "idiom" : "iphone", + "minimum-system-version" : "8.0", + "orientation" : "portrait", + "scale" : "2x", + "subtype" : "667h" + }, + { + "extent" : "full-screen", + "filename" : "640x960.png", + "idiom" : "iphone", + "minimum-system-version" : "7.0", + "orientation" : "portrait", "scale" : "2x" }, { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" + "extent" : "full-screen", + "filename" : "640x1136.png", + "idiom" : "iphone", + "minimum-system-version" : "7.0", + "orientation" : "portrait", + "scale" : "2x", + "subtype" : "retina4" + }, + { + "extent" : "full-screen", + "filename" : "768x1024.png", + "idiom" : "ipad", + "minimum-system-version" : "7.0", + "orientation" : "portrait", + "scale" : "1x" + }, + { + "extent" : "full-screen", + "filename" : "1024x768.png", + "idiom" : "ipad", + "minimum-system-version" : "7.0", + "orientation" : "landscape", + "scale" : "1x" + }, + { + "extent" : "full-screen", + "filename" : "1536x2048.png", + "idiom" : "ipad", + "minimum-system-version" : "7.0", + "orientation" : "portrait", + "scale" : "2x" + }, + { + "extent" : "full-screen", + "filename" : "2048x1536.png", + "idiom" : "ipad", + "minimum-system-version" : "7.0", + "orientation" : "landscape", + "scale" : "2x" + }, + { + "extent" : "full-screen", + "filename" : "320x480.png", + "idiom" : "iphone", + "orientation" : "portrait", + "scale" : "1x" + }, + { + "extent" : "full-screen", + "filename" : "640x960-1.png", + "idiom" : "iphone", + "orientation" : "portrait", + "scale" : "2x" + }, + { + "extent" : "full-screen", + "filename" : "640x1136-1.png", + "idiom" : "iphone", + "orientation" : "portrait", + "scale" : "2x", + "subtype" : "retina4" + }, + { + "extent" : "to-status-bar", + "filename" : "768x1004.png", + "idiom" : "ipad", + "orientation" : "portrait", + "scale" : "1x" + }, + { + "extent" : "full-screen", + "filename" : "768x1024-1.png", + "idiom" : "ipad", + "orientation" : "portrait", + "scale" : "1x" + }, + { + "extent" : "to-status-bar", + "filename" : "1024x748.png", + "idiom" : "ipad", + "orientation" : "landscape", + "scale" : "1x" + }, + { + "extent" : "full-screen", + "filename" : "1024x768-1.png", + "idiom" : "ipad", + "orientation" : "landscape", + "scale" : "1x" + }, + { + "extent" : "to-status-bar", + "filename" : "1536x2008.png", + "idiom" : "ipad", + "orientation" : "portrait", + "scale" : "2x" + }, + { + "extent" : "full-screen", + "filename" : "1536x2048-1.png", + "idiom" : "ipad", + "orientation" : "portrait", + "scale" : "2x" + }, + { + "extent" : "to-status-bar", + "filename" : "2048x1496.png", + "idiom" : "ipad", + "orientation" : "landscape", + "scale" : "2x" + }, + { + "extent" : "full-screen", + "filename" : "2048x1536-1.png", + "idiom" : "ipad", + "orientation" : "landscape", + "scale" : "2x" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } } diff --git a/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/1536x2048.png b/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/1536x2048.png new file mode 100644 index 0000000..a64ac8f Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/1536x2048.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/2304x3072.png b/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/2304x3072.png new file mode 100644 index 0000000..741bb6c Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/2304x3072.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/768x1024.png b/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/768x1024.png new file mode 100644 index 0000000..4ff156c Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/768x1024.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json new file mode 100644 index 0000000..8a27b61 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchScreen.AspectFill.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "768x1024.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "1536x2048.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "2304x3072.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/1536x2048.png b/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/1536x2048.png new file mode 100644 index 0000000..2319a7a Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/1536x2048.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/384x512.png b/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/384x512.png new file mode 100644 index 0000000..1a112fe Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/384x512.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/768x1024.png b/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/768x1024.png new file mode 100644 index 0000000..1fe5c70 Binary files /dev/null and b/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/768x1024.png differ diff --git a/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json b/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json new file mode 100644 index 0000000..ab2fb75 --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchScreen.Center.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "384x512.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "768x1024.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "1536x2048.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/lib/main.dart b/lib/main.dart index 819b254..ee8a969 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,33 +1,33 @@ +import 'package:comptaplan_app/winbooks_migration_widget.dart'; +import 'package:comptaplan_app/webview_widget.dart'; import 'package:flutter/material.dart'; -import 'package:webview_flutter/webview_flutter.dart'; void main() { const title = String.fromEnvironment("APP_TITLE"); const uri = String.fromEnvironment("APP_URI"); + const playStoreUri = 'https://play.google.com/store/apps/details?id=com.winbooks.connect'; + const appStoreUri = 'https://apps.apple.com/be/app/winbooks-connect/id1534550954'; const color = String.fromEnvironment("APP_COLOR"); - runApp(const MyApp(title, uri, color)); + runApp(const MyApp(title, uri, playStoreUri, appStoreUri, color)); } class MyApp extends StatelessWidget { final String _title; final String _uri; + final String _playstoreUri; + final String _appStoreUri; final String _color; - const MyApp(this._title, this._uri, this._color, {Key? key}) : super(key: key); + const MyApp(this._title, this._uri, this._playstoreUri, this._appStoreUri, this._color, {Key? key}) : super(key: key); // This widget is the root of your application. @override Widget build(BuildContext context) { - MaterialColor materialColor = this._getMaterialColor(this._color); - return MaterialApp( - title: this._title, - theme: ThemeData(primarySwatch: materialColor), - home: WebView( - initialUrl: this._uri, - javascriptMode: JavascriptMode.unrestricted, - zoomEnabled: true, - allowsInlineMediaPlayback: true, - )); + MaterialColor materialColor = _getMaterialColor(_color); + return MaterialApp(title: _title, theme: ThemeData(primarySwatch: materialColor), initialRoute: '/migrate', routes: { + '/migrate': (context) => WinbooksMigrationWidget(_title, _playstoreUri, _appStoreUri), + '/web': (context) => WebViewWidget(_uri), + }); } MaterialColor _getMaterialColor(String colorString) { diff --git a/lib/webview_widget.dart b/lib/webview_widget.dart new file mode 100644 index 0000000..a16e0c1 --- /dev/null +++ b/lib/webview_widget.dart @@ -0,0 +1,47 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter_webview_pro/webview_flutter.dart'; + +class WebViewWidget extends StatefulWidget { + final String _initialUrl; + + const WebViewWidget(this._initialUrl, {Key? key}) : super(key: key); + + @override + WebViewWidgetState createState() => WebViewWidgetState(); +} + +class WebViewWidgetState extends State { + WebViewWidgetState(); + + @override + void initState() { + super.initState(); + // Enable hybrid composition. + if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView(); + } + + @override + Widget build(BuildContext context) { + return WebView( + initialUrl: widget._initialUrl, + javascriptMode: JavascriptMode.unrestricted, + javascriptChannels: { + _toasterJavascriptChannel(context), + }, + gestureNavigationEnabled: true, + ); + } + + JavascriptChannel _toasterJavascriptChannel(BuildContext context) { + return JavascriptChannel( + name: 'Toaster', + onMessageReceived: (JavascriptMessage message) { + // ignore: deprecated_member_use + Scaffold.of(context).showSnackBar( + SnackBar(content: Text(message.message)), + ); + }); + } +} diff --git a/lib/winbooks_migration_widget.dart b/lib/winbooks_migration_widget.dart new file mode 100644 index 0000000..7c9db6e --- /dev/null +++ b/lib/winbooks_migration_widget.dart @@ -0,0 +1,108 @@ +import 'dart:io'; + +import 'package:android_intent_plus/android_intent.dart'; +import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class WinbooksMigrationWidget extends StatefulWidget { + final String _playStoreUrl; + final String _appStoreUrl; + final String _title; + + const WinbooksMigrationWidget(this._title, this._playStoreUrl, this._appStoreUrl, {Key? key}) : super(key: key); + + @override + WinbooksMigrationWidgetState createState() => WinbooksMigrationWidgetState(); +} + +class WinbooksMigrationWidgetState extends State { + WinbooksMigrationWidgetState(); + + @override + void initState() { + super.initState(); + } + + @override + Widget build(BuildContext context) { + ThemeData themeData = Theme.of(context); + TextStyle largerTextStyle = themeData.textTheme.bodyText1!.apply(fontSizeFactor: 1.4); + TextStyle smallerTextStyle = themeData.textTheme.bodyText2!; + AssetBundle assetBundle = DefaultAssetBundle.of(context); + return Scaffold( + appBar: AppBar( + title: Text(widget._title), + ), + body: GridView.count( + crossAxisCount: 1, + children: [ + Column(children: [ + Container( + margin: const EdgeInsets.all(10.0), + child: Text( + 'My comptaplan migre vers WinBooks Connect. Téléchargez WinBooks Connect pour continuer à envoyer vos fichiers à votre comptable', + textAlign: TextAlign.center, + style: largerTextStyle), + ), + Center( + child: Container( + margin: const EdgeInsets.all(10.0), + child: ElevatedButton( + style: ElevatedButton.styleFrom(textStyle: largerTextStyle, padding: const EdgeInsets.all(20.0)), + child: Row(children: [ + Image.asset('images/winbooks_connect.png', bundle: assetBundle, width: 50.0, height: 50.0), + const SizedBox(width: 10), + const Flexible(child: Text('Télécharger WinBooks Connect', textAlign: TextAlign.left, softWrap: true)) + ]), + onPressed: () async { + return _onWinbooksConnectPress(); + }, + ), + ), + ), + Container( + margin: const EdgeInsets.all(10.0), + child: Text( + 'Si vous ne parvenez pas à télécharger Winbooks Connect, ou pour obtenir vos identifiants, veuillez contacter votre comptable.', + textAlign: TextAlign.left, + style: smallerTextStyle), + ), + Center( + child: Container( + margin: const EdgeInsets.all(10.0), + child: ElevatedButton( + style: ElevatedButton.styleFrom(textStyle: smallerTextStyle, padding: const EdgeInsets.all(10.0)), + child: const Text('Vers My Comptaplan', softWrap: true), + onPressed: () async { + return _onMyComptaplanPress(); + }, + ), + ), + ), + Container( + margin: const EdgeInsets.all(10.0), + child: Text("L'accès à My Comptaplan risque de ne plus fonctionner prochainement.", + textAlign: TextAlign.left, style: smallerTextStyle), + ), + ]) + ], + )); + } + + Future _onWinbooksConnectPress() async { + if (Platform.isAndroid) { + AndroidIntent intent = AndroidIntent( + action: 'action_view', + data: widget._playStoreUrl, + package: 'com.android.vending', + ); + await intent.launch(); + } else if (Platform.isIOS) { + await launch(widget._appStoreUrl); + } + } + + Future _onMyComptaplanPress() async { + await Navigator.pushNamed(context, '/web'); + } +} diff --git a/pubspec.lock b/pubspec.lock index fcdf4d4..b98d7af 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,62 +1,70 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + android_intent_plus: + dependency: "direct main" + description: + name: android_intent_plus + sha256: "54810cb33945c2c10742cd746ea994822c115e9dbe189919bc63cb436e45a6af" + url: "https://pub.dev" + source: hosted + version: "3.1.6" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.1" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.1.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.3.0" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.1" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be + url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "1.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" flutter: dependency: "direct main" description: flutter @@ -66,49 +74,92 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "2.0.1" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + flutter_webview_pro: + dependency: "direct main" + description: + name: flutter_webview_pro + sha256: "59bce97b1c1bc732060484cc5fd0caab545a3e328f9d948108b35df3ab6eb31b" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "2.1.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + url: "https://pub.dev" source: hosted - version: "0.12.10" + version: "0.12.15" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" + source: hosted + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.9.1" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.3" + platform: + dependency: transitive + description: + name: platform + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" + source: hosted + version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a + url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.1.3" sky_engine: dependency: transitive description: flutter @@ -118,86 +169,122 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.9.1" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + url: "https://pub.dev" source: hosted - version: "0.4.2" - typed_data: + version: "0.5.1" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + sha256: e8f2efc804810c0f2f5b485f49e7942179f56eabcfe81dce3387fec4bb55876b + url: "https://pub.dev" + source: hosted + version: "6.1.9" + url_launcher_android: dependency: transitive description: - name: typed_data - url: "https://pub.dartlang.org" + name: url_launcher_android + sha256: "3e2f6dfd2c7d9cd123296cab8ef66cfc2c1a13f5845f42c7a0f365690a8a7dd1" + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "6.0.23" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: "0a5af0aefdd8cf820dd739886efb1637f1f24489900204f50984634c07a54815" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: "318c42cba924e18180c029be69caf0a1a710191b9ec49bb42b5998fdcccee3cc" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "41988b55570df53b3dd2a7fc90c76756a963de6a8c5f8e113330cb35992e2094" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: "44d79408ce9f07052095ef1f9a693c258d6373dc3944249374e30eff7219ccb0" + url: "https://pub.dev" + source: hosted + version: "2.0.14" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: b6217370f8eb1fd85c8890c539f5a639a01ab209a36db82c921ebeacefc7a615 + url: "https://pub.dev" + source: hosted + version: "3.0.3" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.0" - webview_flutter: - dependency: "direct main" - description: - name: webview_flutter - url: "https://pub.dartlang.org" - source: hosted - version: "2.3.1" - webview_flutter_android: - dependency: transitive - description: - name: webview_flutter_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.3.1" - webview_flutter_platform_interface: - dependency: transitive - description: - name: webview_flutter_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.5.1" - webview_flutter_wkwebview: - dependency: transitive - description: - name: webview_flutter_wkwebview - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.0" + version: "2.1.4" sdks: - dart: ">=2.14.0 <3.0.0" - flutter: ">=2.5.0" + dart: ">=3.0.0 <4.0.0" + flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index 787589b..d71e0d9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.0+60 +version: 1.0.0+68 environment: sdk: ">=2.12.0 <3.0.0" @@ -34,7 +34,11 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 - webview_flutter: ^2.3.1 + #webview_flutter: ^2.3.1 + flutter_webview_pro: ^1.0.0 + android_intent_plus: ^3.0.2 + url_launcher: ^6.0.18 + dev_dependencies: flutter_test: sdk: flutter @@ -44,7 +48,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^1.0.0 + flutter_lints: ^2.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec @@ -58,8 +62,8 @@ flutter: uses-material-design: true # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg + assets: + - images/winbooks_connect.png # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index bc5c315..0000000 --- a/test/widget_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility that Flutter provides. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:comptaplan_app/main.dart'; - -void main() { - testWidgets('Counter increments smoke test', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that our counter starts at 0. - expect(find.text('0'), findsOneWidget); - expect(find.text('1'), findsNothing); - - // Tap the '+' icon and trigger a frame. - await tester.tap(find.byIcon(Icons.add)); - await tester.pump(); - - // Verify that our counter has incremented. - expect(find.text('0'), findsNothing); - expect(find.text('1'), findsOneWidget); - }); -} diff --git a/tools/jenkins-build-android.sh b/tools/jenkins-build-android.sh index 1a68e41..5d0e451 100755 --- a/tools/jenkins-build-android.sh +++ b/tools/jenkins-build-android.sh @@ -1,26 +1,30 @@ #!/bin/bash # debug/release -BUILDMODE=${BUILDMODE:-debug} +BUILD_MODE=${BUILD_MODE:-debug} # LOCAL/DEV/PROD APP_TITLE=${APP_TITLE:-} APP_URI=${APP_URI:-} APP_COLOR=${APP_COLOR:-} +ANDROID_KEYSTORE_FILE=${ANDROID_KEYSTORE_FILE:-} +ANDROID_KEY_ALIAS=${ANDROID_KEY_ALIAS:-} +ANDROID_KEYSTORE_PASSWORD=${ANDROID_KEYSTORE_PASSWORD:-} +ANDROID_KEY_PASSWORD=${ANDROID_KEY_PASSWORD:-} cat << EOF > android/local.properties flutter.sdk=/home/developer/flutter sdk.dir=/home/developer/android -flutter.buildMode=${BUILDMODE} +flutter.buildMode=${BUILD_MODE} flutter.versionName= flutter.versionCode= EOF cat << EOF > android/key.properties -storePassword=jenkins.fteamdev -keyPassword=jenkins.fteamdev -keyAlias=jenkins.fteamdev -storeFile=/var/run/secrets/gestemps/signing_keystore.jks +storePassword=${ANDROID_KEYSTORE_PASSWORD} +keyPassword=${ANDROID_KEY_PASSWORD} +keyAlias=${ANDROID_SIGNING_KEY_ALIAS} +storeFile=${ANDROID_KEYSTORE_FILE} EOF pwd diff --git a/tools/jenkins-publish-android.sh b/tools/jenkins-publish-android.sh index d703708..e93b068 100755 --- a/tools/jenkins-publish-android.sh +++ b/tools/jenkins-publish-android.sh @@ -1,9 +1,10 @@ #!/bin/bash -TRACK=${TRACK:-alpha} +ANDROID_UPLOAD_TRACK=${ANDROID_UPLOAD_TRACK:-alpha} RELEASE_STATUS=${RELEASE_STATUS:-completed} RELEASE_MESSAGE="${RELEASE_MESSAGE:-New version}" +GOOGLE_APPLICATION_CREDENTIALS="${GOOGLE_APPLICATION_CREDENTIALS:-}" VERSION_AND_CODE="$(cat pubspec.yaml | grep 'version:' | sed 's/version: //')" @@ -19,9 +20,8 @@ npm install ./node_modules/.bin/tsc npm install -g --save googleapis -GOOGLE_APPLICATION_CREDENTIALS=/var/run/secrets/gestemps/google_api.key.json \ node ${WD}/publish-android-js/publish-app-store.js \ -"$TRACK" "$VERSION_CODE" "$RELEASE_STATUS" "$VERSION_CODE $VERISON_NAME" "$RELEASE_MESSAGE" ${WD}/../build/app/outputs/bundle/release/app-release.aab \ +"$ANDROID_UPLOAD_TRACK" "$VERSION_CODE" "$RELEASE_STATUS" "$VERSION_CODE $VERISON_NAME" "$RELEASE_MESSAGE" ${WD}/../build/app/outputs/bundle/release/app-release.aab \ || exit 1 popd diff --git a/tools/publish-android-js/package-lock.json b/tools/publish-android-js/package-lock.json index 2038a6a..a9c3a25 100644 --- a/tools/publish-android-js/package-lock.json +++ b/tools/publish-android-js/package-lock.json @@ -14,9 +14,9 @@ } }, "node_modules/@types/node": { - "version": "14.17.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.33.tgz", - "integrity": "sha512-noEeJ06zbn3lOh4gqe2v7NMGS33jrulfNqYFDjjEbhpDEHR5VTxgYNQSBqBlJIsBJW3uEYDgD6kvMnrrhGzq8g==" + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==" }, "node_modules/abort-controller": { "version": "3.0.0", @@ -68,9 +68,9 @@ ] }, "node_modules/bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==", "engines": { "node": "*" } @@ -78,7 +78,7 @@ "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, "node_modules/call-bind": { "version": "1.0.2", @@ -93,9 +93,9 @@ } }, "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -130,9 +130,9 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "node_modules/fast-text-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", - "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, "node_modules/function-bind": { "version": "1.1.1", @@ -140,15 +140,15 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/gaxios": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", - "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", "dependencies": { "abort-controller": "^3.0.0", "extend": "^3.0.2", "https-proxy-agent": "^5.0.0", "is-stream": "^2.0.0", - "node-fetch": "^2.6.1" + "node-fetch": "^2.6.7" }, "engines": { "node": ">=10" @@ -167,22 +167,22 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/google-auth-library": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.10.2.tgz", - "integrity": "sha512-M37o9Kxa/TLvOLgF71SXvLeVEP5sbSTmKl1zlIgl72SFy5PtsU3pOdu8G8MIHHpQ3/NZabDI8rQkA9DvQVKkPA==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz", + "integrity": "sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==", "dependencies": { "arrify": "^2.0.0", "base64-js": "^1.3.0", @@ -199,11 +199,11 @@ } }, "node_modules/google-p12-pem": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", - "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", + "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", "dependencies": { - "node-forge": "^0.10.0" + "node-forge": "^1.3.1" }, "bin": { "gp12-pem": "build/src/bin/gp12-pem.js" @@ -225,13 +225,13 @@ } }, "node_modules/googleapis-common": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-5.0.5.tgz", - "integrity": "sha512-o2dgoW4x4fLIAN+IVAOccz3mEH8Lj1LP9c9BSSvkNJEn+U7UZh0WSr4fdH08x5VH7+sstIpd1lOYFZD0g7j4pw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-5.1.0.tgz", + "integrity": "sha512-RXrif+Gzhq1QAzfjxulbGvAY3FPj8zq/CYcvgjzDbaBNCD6bUl+86I7mUs4DKWHGruuK26ijjR/eDpWIDgNROA==", "dependencies": { "extend": "^3.0.2", "gaxios": "^4.0.0", - "google-auth-library": "^7.0.2", + "google-auth-library": "^7.14.0", "qs": "^6.7.0", "url-template": "^2.0.8", "uuid": "^8.0.0" @@ -241,12 +241,12 @@ } }, "node_modules/gtoken": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.1.tgz", - "integrity": "sha512-yqOREjzLHcbzz1UrQoxhBtpk8KjrVhuqPE7od1K2uhyxG2BHjKZetlbLw/SPZak/QqTIQW+addS+EcjqQsZbwQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", + "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", "dependencies": { "gaxios": "^4.0.0", - "google-p12-pem": "^3.0.3", + "google-p12-pem": "^3.1.3", "jws": "^4.0.0" }, "engines": { @@ -265,9 +265,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -276,9 +276,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { "agent-base": "6", "debug": "4" @@ -342,36 +342,44 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "engines": { - "node": ">= 6.0.0" + "node": ">= 6.13.0" } }, "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { "side-channel": "^1.0.4" }, @@ -417,12 +425,12 @@ "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/typescript": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", - "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -434,7 +442,7 @@ "node_modules/url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" }, "node_modules/uuid": { "version": "8.3.2", @@ -447,12 +455,12 @@ "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -466,9 +474,9 @@ }, "dependencies": { "@types/node": { - "version": "14.17.33", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.33.tgz", - "integrity": "sha512-noEeJ06zbn3lOh4gqe2v7NMGS33jrulfNqYFDjjEbhpDEHR5VTxgYNQSBqBlJIsBJW3uEYDgD6kvMnrrhGzq8g==" + "version": "14.18.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz", + "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==" }, "abort-controller": { "version": "3.0.0", @@ -497,14 +505,14 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", + "integrity": "sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig==" }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" }, "call-bind": { "version": "1.0.2", @@ -516,9 +524,9 @@ } }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "requires": { "ms": "2.1.2" } @@ -542,9 +550,9 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "fast-text-encoding": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz", - "integrity": "sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz", + "integrity": "sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==" }, "function-bind": { "version": "1.1.1", @@ -552,15 +560,15 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "gaxios": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.2.tgz", - "integrity": "sha512-T+ap6GM6UZ0c4E6yb1y/hy2UB6hTrqhglp3XfmU9qbLCGRYhLVV5aRPpC4EmoG8N8zOnkYCgoBz+ScvGAARY6Q==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", "requires": { "abort-controller": "^3.0.0", "extend": "^3.0.2", "https-proxy-agent": "^5.0.0", "is-stream": "^2.0.0", - "node-fetch": "^2.6.1" + "node-fetch": "^2.6.7" } }, "gcp-metadata": { @@ -573,19 +581,19 @@ } }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "google-auth-library": { - "version": "7.10.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.10.2.tgz", - "integrity": "sha512-M37o9Kxa/TLvOLgF71SXvLeVEP5sbSTmKl1zlIgl72SFy5PtsU3pOdu8G8MIHHpQ3/NZabDI8rQkA9DvQVKkPA==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.14.1.tgz", + "integrity": "sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA==", "requires": { "arrify": "^2.0.0", "base64-js": "^1.3.0", @@ -599,11 +607,11 @@ } }, "google-p12-pem": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.2.tgz", - "integrity": "sha512-tjf3IQIt7tWCDsa0ofDQ1qqSCNzahXDxdAGJDbruWqu3eCg5CKLYKN+hi0s6lfvzYZ1GDVr+oDF9OOWlDSdf0A==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", + "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", "requires": { - "node-forge": "^0.10.0" + "node-forge": "^1.3.1" } }, "googleapis": { @@ -616,25 +624,25 @@ } }, "googleapis-common": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-5.0.5.tgz", - "integrity": "sha512-o2dgoW4x4fLIAN+IVAOccz3mEH8Lj1LP9c9BSSvkNJEn+U7UZh0WSr4fdH08x5VH7+sstIpd1lOYFZD0g7j4pw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-5.1.0.tgz", + "integrity": "sha512-RXrif+Gzhq1QAzfjxulbGvAY3FPj8zq/CYcvgjzDbaBNCD6bUl+86I7mUs4DKWHGruuK26ijjR/eDpWIDgNROA==", "requires": { "extend": "^3.0.2", "gaxios": "^4.0.0", - "google-auth-library": "^7.0.2", + "google-auth-library": "^7.14.0", "qs": "^6.7.0", "url-template": "^2.0.8", "uuid": "^8.0.0" } }, "gtoken": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.1.tgz", - "integrity": "sha512-yqOREjzLHcbzz1UrQoxhBtpk8KjrVhuqPE7od1K2uhyxG2BHjKZetlbLw/SPZak/QqTIQW+addS+EcjqQsZbwQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", + "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", "requires": { "gaxios": "^4.0.0", - "google-p12-pem": "^3.0.3", + "google-p12-pem": "^3.1.3", "jws": "^4.0.0" } }, @@ -647,14 +655,14 @@ } }, "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, "https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "requires": { "agent-base": "6", "debug": "4" @@ -706,27 +714,27 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", "requires": { "whatwg-url": "^5.0.0" } }, "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==" }, "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" }, "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "requires": { "side-channel": "^1.0.4" } @@ -749,17 +757,17 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "typescript": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.2.tgz", - "integrity": "sha512-5BlMof9H1yGt0P8/WF+wPNw6GfctgGjXp5hkblpyT+8rkASSmkUKMXrxR0Xg8ThVCi/JnHQiKXeBaEwCeQwMFw==" + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" }, "url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", - "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" + "integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==" }, "uuid": { "version": "8.3.2", @@ -769,12 +777,12 @@ "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" diff --git a/tools/publish-android-js/publish-app-store.ts b/tools/publish-android-js/publish-app-store.ts index 1ded930..aa475b6 100644 --- a/tools/publish-android-js/publish-app-store.ts +++ b/tools/publish-android-js/publish-app-store.ts @@ -30,11 +30,11 @@ if (versionCode == null || versionCode.length < 1 || versionStatus == null || ve } try { - const packageName = 'be.fiscalteam.nitro_trustee_mobile'; + const packageName = 'comptaplan.app'; // const apkMime = 'application/vnd.android.package-archive'; const apkMime = 'application/octet-stream'; const apkFileStream = createReadStream(aabFilePath); - const appName = `Nitro admin mobile`; + const appName = `My comptaplan`; const apiKeyFilePath: PathLike = process.env.GOOGLE_APPLICATION_CREDENTIALS; // Use GOOGLE_APPLICATION_CREDENTIALS to point to api key (json) diff --git a/tools/set-bundle-identifier.sh b/tools/set-bundle-identifier.sh new file mode 100755 index 0000000..2420e82 --- /dev/null +++ b/tools/set-bundle-identifier.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +BUNDLE_NAME="$1" + +echo "Setting the ios bundle name to $BUNDLE_NAME" + +sed -i "s/PRODUCT_BUNDLE_IDENTIFIER = .*;/PRODUCT_BUNDLE_IDENTIFIER = $BUNDLE_NAME;/" ios/Runner.xcodeproj/project.pbxproj diff --git a/tools/set-package.sh b/tools/set-package.sh new file mode 100755 index 0000000..595a20c --- /dev/null +++ b/tools/set-package.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +PACKAGE="$1" + +echo "Setting the application android package to $PACKAGE" + +sed -i "s/package=\"[^\"]\+\"/package=\"$PACKAGE\"/" android/app/src/debug/AndroidManifest.xml +sed -i "s/package=\"[^\"]\+\"/package=\"$PACKAGE\"/" android/app/src/main/AndroidManifest.xml +sed -i "s/package=\"[^\"]\+\"/package=\"$PACKAGE\"/" android/app/src/profile/AndroidManifest.xml + +sed -i "s/applicationId \"[^\"]\+\"/applicationId \"$PACKAGE\"/" android/app/build.gradle + +sed -i "s/package .*/package $PACKAGE/" android/app/src/main/kotlin/com/charlyghislain/embedded_webview/MainActivity.kt + diff --git a/tools/set-title.sh b/tools/set-title.sh new file mode 100755 index 0000000..68cc97f --- /dev/null +++ b/tools/set-title.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +TITLE="$1" + +echo "Setting the application title to $TITLE" + +sed -i "s/android:label=\"[^\"]\+\"/android:label=\"$TITLE\"/" android/app/src/main/AndroidManifest.xml + +NAME_LENGTH="${#TITLE}" +LONG_NAME="$(( $NAME_LENGTH > 15))" # 1 if long name +BUNDLE_NAME="$(echo $TITLE | cut -c -15)" + +perl -0777 -i -pe "s#\tCFBundleName\n[^\n]+#\tCFBundleName\n\t$BUNDLE_NAME#igs" ios/Runner/Info.plist + + if [ "$LONG_NAME" = "1" ] ; then +# todo : set bundleDisplayName +echo "Warning: name truncated to $BUNDLE_NAME" +fi +