From 53116080e4b5ab8569306633344c0560b04d2b48 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 17:53:47 +0100 Subject: [PATCH 01/41] jenkinsfile fix --- Jenkinsfile | 6 +++--- android/app/build.gradle | 13 +++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 864d890..932ef65 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -63,12 +63,12 @@ pipeline { sh ''' VERSION_CODE=$(./tools/jenkins-increment-buildnumber.sh || echo $?) [ "$VERSION_CODE" == "0" ] && exit 1 - git config user.email "jenkins@valuya.be" + git config user.email "jenkins@valuya.com" git config user.name "Jenkins release" git add pubspec.yaml - git remote add ssh "ssh://git@gitea.fteamdev.valuya.be:2022/fiscalteam/nitro-trustee-mobile.git" + git remote add ssh "ssh://git@gitea.valuya.com:2022/Valuya/embedded_webview.git" git commit -m "Bump to build $VERSION_CODE" - export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/var/run/ssh/known_hosts.gitea.fteamdev.valuya.be" + export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/var/run/ssh/known_hosts.gitea.valuya.com" git push ssh HEAD:$GIT_PUSH_BRANCH if [ "$SKIP_PUSH_TAG" != "true" ] ; then git tag "$GIT_TAG" diff --git a/android/app/build.gradle b/android/app/build.gradle index 37a72dc..9ca1728 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -49,12 +49,17 @@ android { versionCode flutterVersionCode.toInteger() versionName flutterVersionName } - + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug + signingConfig signingConfigs.release } } } -- 2.45.1 From 80f30b02b87045b6e8ca5286ff020baa9cf5779d Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:14:32 +0100 Subject: [PATCH 02/41] fix --- tools/jenkins-build-android.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/jenkins-build-android.sh b/tools/jenkins-build-android.sh index 1a68e41..ede13c6 100755 --- a/tools/jenkins-build-android.sh +++ b/tools/jenkins-build-android.sh @@ -27,3 +27,4 @@ pwd flutter build appbundle --dart-define="APP_TITLE=${APP_TITLE}" --dart-define="APP_URI=${APP_URI}" --dart-define="APP_COLOR=${APP_COLOR}" + -- 2.45.1 From 28a90263f61689ede1794408c225ada04f23532d Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:20:19 +0100 Subject: [PATCH 03/41] jenkins: fix keystore conf --- Jenkinsfile | 2 +- tools/jenkins-build-android.sh | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 66cff19..8542a8a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -33,7 +33,7 @@ pipeline { 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 'GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/var/run/ssh/known_hosts.gitea.valuya.com" 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/**') diff --git a/tools/jenkins-build-android.sh b/tools/jenkins-build-android.sh index ede13c6..7d54970 100755 --- a/tools/jenkins-build-android.sh +++ b/tools/jenkins-build-android.sh @@ -16,11 +16,16 @@ flutter.versionName= flutter.versionCode= EOF +SECRETS_PATH="/var/run/secrets/gestemps" +STOREPASS="$(head -n 1 ${SECRETS_PATH}/signing_keystore.store.password)" +KEYPASS="$(head -n 1 ${SECRETS_PATH}/signing_keystore.key.password)" +KEYALIAS="$(head -n 1 ${SECRETS_PATH}/signing_keystore.key.alias)" + cat << EOF > android/key.properties -storePassword=jenkins.fteamdev -keyPassword=jenkins.fteamdev -keyAlias=jenkins.fteamdev -storeFile=/var/run/secrets/gestemps/signing_keystore.jks +storePassword=${STOREPASS} +keyPassword=${KEYPASS} +keyAlias=${KEYALIAS +storeFile=${SECRETS_PATH}/signing_keystore.jks EOF pwd -- 2.45.1 From 06c521b1753a67153077aa096146afbb658b6a2d Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:24:59 +0100 Subject: [PATCH 04/41] jenkins: fix keystore conf --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 787589b..879bd70 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,7 +34,7 @@ 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.0.13 dev_dependencies: flutter_test: sdk: flutter -- 2.45.1 From 5e8f43b92adec22f5988b73a1d82e4fba07b0c87 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:26:13 +0100 Subject: [PATCH 05/41] typo --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8542a8a..3a436ef 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -35,7 +35,7 @@ pipeline { sh 'flutter doctor' sh 'GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/var/run/ssh/known_hosts.gitea.valuya.com" 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' + sh 'APP_TITLE="$APP_TITLE" APP_URI="$APP_URI" APP_COLOR="$APP_COLOR" BUILDMODE="$BUILD_MODE" ./tools/jenkins-build-android.sh' stash(name: 'outputs', includes: 'build/app/outputs/**') } } -- 2.45.1 From a1dd4055a3664e1981433337435a08f4cb5efe2e Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:28:21 +0100 Subject: [PATCH 06/41] fix --- android/app/build.gradle | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/android/app/build.gradle b/android/app/build.gradle index 8a2bf85..18c117a 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" -- 2.45.1 From 2005fd437f5713cd50462bc0947c43939dbe43e3 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:30:36 +0100 Subject: [PATCH 07/41] fix --- README.md | 6 ++++++ lib/main.dart | 2 -- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 195be10..7168e8e 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,12 @@ Pass those flags to flutter run, ... - Alter the android and ios config to your liking, package name, key etc - Publish + +## 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 This project is a starting point for a Flutter application. diff --git a/lib/main.dart b/lib/main.dart index 819b254..24038d4 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -25,8 +25,6 @@ class MyApp extends StatelessWidget { home: WebView( initialUrl: this._uri, javascriptMode: JavascriptMode.unrestricted, - zoomEnabled: true, - allowsInlineMediaPlayback: true, )); } -- 2.45.1 From 56003d3209ce2443febb2f8dfd99d6880f8da852 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:33:54 +0100 Subject: [PATCH 08/41] typo --- tools/jenkins-build-android.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/jenkins-build-android.sh b/tools/jenkins-build-android.sh index 7d54970..7c965f4 100755 --- a/tools/jenkins-build-android.sh +++ b/tools/jenkins-build-android.sh @@ -24,10 +24,10 @@ KEYALIAS="$(head -n 1 ${SECRETS_PATH}/signing_keystore.key.alias)" cat << EOF > android/key.properties storePassword=${STOREPASS} keyPassword=${KEYPASS} -keyAlias=${KEYALIAS +keyAlias=${KEYALIAS} storeFile=${SECRETS_PATH}/signing_keystore.jks EOF - +cat android/key.properties pwd flutter build appbundle --dart-define="APP_TITLE=${APP_TITLE}" --dart-define="APP_URI=${APP_URI}" --dart-define="APP_COLOR=${APP_COLOR}" -- 2.45.1 From 5c3bc83a09c49bf0c9e0fb68f97b53fdc1bafe9c Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:39:56 +0100 Subject: [PATCH 09/41] Update icon --- android/app/src/main/AndroidManifest.xml | 8 +++++++- .../src/main/res/drawable/launch_background.xml | 2 +- android/app/src/main/res/mipmap-hdpi/icon.png | Bin 0 -> 3229 bytes android/app/src/main/res/mipmap-mdpi/icon.png | Bin 0 -> 2041 bytes android/app/src/main/res/mipmap-xhdpi/icon.png | Bin 0 -> 4602 bytes android/app/src/main/res/mipmap-xxhdpi/icon.png | Bin 0 -> 7654 bytes .../app/src/main/res/mipmap-xxxhdpi/icon.png | Bin 0 -> 25939 bytes tools/jenkins-build-android.sh | 1 - 8 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 android/app/src/main/res/mipmap-hdpi/icon.png create mode 100644 android/app/src/main/res/mipmap-mdpi/icon.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/icon.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/icon.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/icon.png 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"> - + YK6wGQD3Pd?ojjxn-mH$a+>=rEtBS)y$^neZ-&T zT_J5OkBYUe#ZXZSkM9!@>mquZd}T31De?cSn=228dVTv+B97%0DJ9M+30X>(p=tb- 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1fe5c70590a4dd1fdcecbe016727212fdf038bc4 GIT binary patch literal 29622 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..176e84d197afc7cd67b3dbb1bb8288172623ed19 GIT binary patch literal 30719 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a64ac8f00a649f6692e6b6d1a8f9b5e8628bc510 GIT binary patch literal 14844 zcmeI1O^6&t6o6}!5Z0AI)Js+oir#~YPIqMhcq$7eYfog=C8v|AZ%<$*y+o3U%$5i9-oFk_$u>_x4YcBW3DV{w1oWK4Oyn zr*IU~p2!oX#y{4p)ymTTsI?%V?X-|A4SC!54AnI=jw5QfTFu4gl3yd$hHW?NtChv7 z-*U_4YNh75i%Vl&Uxa&l7RI{K1Ks9SUA><5JW-$L@moA<Y>c0{U|jd#W&rUY@Fu%~fo^`P@bYA@|d^U+)fY|M64(DTLA2 z+4JhTa%1Lv7{t2uK*FXsd0#*cs z2J8{AS;DD-5FDR?1PG7-kN}VXkN}VXkN}VXvIHto0!RQz07w8x07w8x@PClNoVoqQ z>3N-DumAnypMT9QKyn@~9N^{!uAty9?s2}9eDd(ir|*CG?Ojjp{HWbr_di>`a{V7_ C_3@kl literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..741bb6c613d7219d00082a3dcbca9d83c20cc4f7 GIT binary patch literal 28548 zcmeI4ONbmr7{_ZLgf(Oj3kpdN()1>1h%;T?^V(^5l1!#&+zHOIYzCd1)7xFM+wAtk z?%vGoCgPf#xtN;=k0N*w6%;%O?tmA)dXPj9A_xh%=s|oSC{}mROd`zUMG3_JT&BAC zs=B(WeqVk4uclsIS$<~r=*gpmklFf@wo1q&Jb8@FO!B{(>HQD+--)o=3NO2zu&euw zludVy33XdvXRAy%cV7IQEfO+y$7;61R^wUKaP71n*`#~6$4e8kc)sW9#wH7eHMVX! zCGp3P_eH@nOXBmn25op1wqY&p`t0)Va?{w|G>WEp{+zJbQ+Wk83w5DqZ#jY5D~WNv zDo;n*k|@L`;buup8r5p72o=|7LOxAX2BnHnD5m9nHj`7H5)`UXiON!jrsSNOqiSYB z82m(jH{a~2t6FVvFMd@LH^R_UC8^u(rn{N6>#s|4u~?L-A}LCWTcm;=C)9f>Czv1B zps~R4EibfOM~G_F*WB%}B=VLfk6?SFYMo%vO}xXTp6*F z#I~5toG{?F^2nC=Qll|4A6u<$kF0}mmEC)`vDQIz$79ke3*2qr;Dg+mkDBGF6`$#$ z>o;9@YuMu}8*b z*Kkd%vop?)W>uy5H&Z_JrXK45Xlxp4$MtQU_rDd*R>^bLb;C6YA2;@`R-@o(io3Ah3{iyr(L=67kjVF=> zIep}KoI}naLC^`&T)<2~C%`9w0#E=7KmjNK1)u;FfC5ke3P1rU00p1`6pSdi_RGPA zBmAm;bN}bkCtu7E(wb{0Gvu8ank1f^9;mEmCy&KBdyh>-WeDltAX9OoUEND0+4seM zoPlc4H<&ko0geJr6e~l#Bx2P>M1e2~A!IuVkO2c=01SWuFVKlUgt!3V1!@wMw!|Ae zP!;m@#H|mePVk28mH+(m*WWJ9L&boK0Tm-A6DkH?-0AjA-eArM2_ zNpu7l00UqE3{VCWfA}ycga7mMGv6*feKQL7kALUB^xAvbNt_Y-pH1pZZ=5^%$K7!H P(FmS;by<7&V*C1EO=*Xp literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..4ff156c8c51f875bbdebad1ea7fca36bf11e6be4 GIT binary patch literal 4834 zcmeHLzi-n(6u$ldm53t7!eqG&Ac%c-nxr{uN?Ip0Qe9PPq;{-pUlP;WXY30}J5`8< zfuZnMFqDY_387Ykg@2$DObkd}koXIbIHyV4=7*YgKp;7b&zJ9g_wK#-z02jr;=-fR z$jt}oo?{PAep$H{02BT6O#UYAKa*YqqR`bjv%B$JNTI@~X%apoE6sy&$ zP>l)1D~VDnl@g&W%5sz;qW-2s^;*>N$D0f)_6^T+sYM(vVAR)0g(^Jr^k@sV+oE;+ zMwnQ@#G3Akk^qA()q$qb!nqZ1qrSLlh+>y&r}LN=NaUn~)^x*if|)xfOt7j` ztnfhsqA(tnk_9P&;?i9xBM6Uh8ZoWnW;Yy+A(%V`WvMrHs-Foq4OAqat+V)BLA8pm zQ>w3~X(;FTRCf%VQx%?VO|UEzN!e^>A~Tsv!Q`wYWzsW=iKLp1$70DuN{&xVHf>d6 zRDvutZOvobbWhu$o`XCg6?@iGY-T-TbM;&xtG6%7o_q~kv$rpkJ#9tij2KksiE3?5 zF$o02miE|7OTE}(lJ%H2hwk5+2jJRHPE8kT-+msXM*$f54EOgAKV81E`~2fUE&{&4 z-T?qU1mN-r*arh(jAKn=7_4psaP>Oa9vJNXWj~lsf^#m?An4@j%ga7@(#C%NQ2ak$ zo|V+LP&CTn9940G;9_MJ5d8aI{@vn#6>9WET?H*9)M$Il4mH|-dW9P8IRDyI)Njpn z@bsm>P@|zn&pOFNjdo}&)M&@W<6@oUtlH}y=ze?RY4-59Zu?EK`$g~l<4a@Uof`T5 T^2ctK{pkd9nFaOj%<8j0x#-;! literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..2319a7a5bbfd7a207f6266e374fdde1ffed0c6a1 GIT binary patch literal 91718 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�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 D@tS7Y literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..1fe5c70590a4dd1fdcecbe016727212fdf038bc4 GIT binary patch literal 29622 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 literal 0 HcmV?d00001 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 + } +} -- 2.45.1 From 6a2b1592fed16459e4da6165b76e13b301da7d58 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sat, 27 Nov 2021 18:51:36 +0100 Subject: [PATCH 11/41] Fix --- tools/publish-android-js/publish-app-store.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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) -- 2.45.1 From c54ac3563ec67494d9713ed6d5d8deb2e19c33fc Mon Sep 17 00:00:00 2001 From: Jenkins release Date: Sat, 27 Nov 2021 18:54:34 +0100 Subject: [PATCH 12/41] Bump to build Update pubspec for version 1.0.0+61 60 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 879bd70..47c13cc 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+61 environment: sdk: ">=2.12.0 <3.0.0" -- 2.45.1 From 62924098d2044ebda92c2a387bb69bbbf29450fa Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 00:49:04 +0100 Subject: [PATCH 13/41] Fix --- android/app/src/debug/AndroidManifest.xml | 2 +- .../kotlin/com/charlyghislain/embedded_webview/MainActivity.kt | 2 +- android/app/src/profile/AndroidManifest.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) 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/kotlin/com/charlyghislain/embedded_webview/MainActivity.kt b/android/app/src/main/kotlin/com/charlyghislain/embedded_webview/MainActivity.kt index e595dcc..e5f87d2 100644 --- a/android/app/src/main/kotlin/com/charlyghislain/embedded_webview/MainActivity.kt +++ b/android/app/src/main/kotlin/com/charlyghislain/embedded_webview/MainActivity.kt @@ -1,4 +1,4 @@ -package com.charlyghislain.comptaplan_app +package comptaplan.app import io.flutter.embedding.android.FlutterActivity 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"> -- 2.45.1 From 9a6410504f313baf25600d90dc5e20381522fa6f Mon Sep 17 00:00:00 2001 From: Jenkins release Date: Sun, 28 Nov 2021 00:54:10 +0100 Subject: [PATCH 14/41] Bump to build Update pubspec for version 1.0.0+62 61 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 47c13cc..bc62992 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+61 +version: 1.0.0+62 environment: sdk: ">=2.12.0 <3.0.0" -- 2.45.1 From 9e934d644171c2c0f66d8abe562e5b8434ae8d0e Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 14:45:15 +0100 Subject: [PATCH 15/41] Fix file upload/download --- android/app/build.gradle | 4 ++ .../app/src/main/res/values-night/styles.xml | 2 +- android/app/src/main/res/values/styles.xml | 2 +- lib/main.dart | 12 ++--- lib/webview_widget.dart | 47 +++++++++++++++++++ pubspec.lock | 46 ++++-------------- pubspec.yaml | 4 +- 7 files changed, 68 insertions(+), 49 deletions(-) create mode 100644 lib/webview_widget.dart diff --git a/android/app/build.gradle b/android/app/build.gradle index 18c117a..6ef3881 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -40,6 +40,10 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } + dependencies { + implementation 'com.google.android.material:material:1.4.0' + } + kotlinOptions { jvmTarget = '1.8' } diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml index 449a9f9..26750f2 100644 --- a/android/app/src/main/res/values-night/styles.xml +++ b/android/app/src/main/res/values-night/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/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/lib/main.dart b/lib/main.dart index 24038d4..1044a57 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,5 @@ +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"); @@ -18,14 +18,8 @@ class MyApp extends StatelessWidget { // 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, - )); + MaterialColor materialColor = _getMaterialColor(this._color); + return MaterialApp(title: _title, theme: ThemeData(primarySwatch: materialColor), home: 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/pubspec.lock b/pubspec.lock index fcdf4d4..f1e5d5e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -74,6 +74,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_webview_pro: + dependency: "direct main" + description: + name: flutter_webview_pro + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" lints: dependency: transitive description: @@ -102,13 +109,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -170,34 +170,6 @@ packages: url: "https://pub.dartlang.org" 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" sdks: - dart: ">=2.14.0 <3.0.0" - flutter: ">=2.5.0" + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.22.0" diff --git a/pubspec.yaml b/pubspec.yaml index 47c13cc..4f2480e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,7 +34,9 @@ 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.0.13 +# webview_flutter: ^2.0.13 + # COmmunity plugin adding features unsupported in the official webview + flutter_webview_pro: ^1.0.0 dev_dependencies: flutter_test: sdk: flutter -- 2.45.1 From 96a202b4e2ea9cd66d64c19a3799243001ed52ea Mon Sep 17 00:00:00 2001 From: Jenkins release Date: Sun, 28 Nov 2021 14:56:13 +0100 Subject: [PATCH 16/41] Bump to build Update pubspec for version 1.0.0+63 62 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 8e7ca54..117fdb4 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+62 +version: 1.0.0+63 environment: sdk: ">=2.12.0 <3.0.0" -- 2.45.1 From 027eb0b7d12b758d356bf2dbe504f950718b8530 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 15:42:28 +0100 Subject: [PATCH 17/41] Clean up & add packaging scripts --- Jenkinsfile | 59 ++++++++++++++++++------ android/app/build.gradle | 4 ++ android/app/src/main/AndroidManifest.xml | 8 +++- test/widget_test.dart | 2 +- tools/jenkins-build-android.sh | 16 ++++--- tools/jenkins-publish-android.sh | 2 +- tools/set-bundle-identifier.sh | 7 +++ tools/set-package.sh | 14 ++++++ tools/set-title.sh | 18 ++++++++ 9 files changed, 107 insertions(+), 23 deletions(-) create mode 100644 tools/set-bundle-identifier.sh create mode 100644 tools/set-package.sh create mode 100644 tools/set-title.sh diff --git a/Jenkinsfile b/Jenkinsfile index 932ef65..1cc51bc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -7,17 +7,28 @@ pipeline { buildDiscarder(logRotator(numToKeepStr: '10')) } parameters { + string(name: 'APP_PACKAGE_ID', defaultValue: 'com.charlyghislain.embedded_webview', description: 'Application package id used as android identifier') + string(name: 'APP_BUNDLE_ID', defaultValue: 'com.charlyghislain.embedded_webview', description: 'Application bundle id used as ios identifier') string(name: 'APP_TITLE', defaultValue: 'Embedded Webview', description: 'Application title') - string(name: 'APP_URI', defaultValue: 'https://www.charlyghislain.com', description: 'Application uri') + string(name: 'APP_URI', defaultValue: 'https://www.charlyghislain.com', description: 'Application initial uri') string(name: 'APP_COLOR', defaultValue: 'red', 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: 'RELEASE_MESSAGE', defaultValue: 'Nouvelle version', description: 'A release message') + string(name: 'ANDROID_UPLOAD_TRACK', defaultValue: 'alpha', description: 'Upload track') + 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/embedded_webview.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_CREDENTIAL_ID', defaultValue: 'jenkins-jenkins-ssh-key', description: '') 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') } @@ -25,18 +36,31 @@ pipeline { 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' + stash(name: 'outputs', includes: 'build/app/outputs/**') + } } } } @@ -51,14 +75,21 @@ 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 +97,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/embedded_webview.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/android/app/build.gradle b/android/app/build.gradle index 9ca1728..8d4de25 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -41,6 +41,10 @@ android { main.java.srcDirs += 'src/main/kotlin' } + dependencies { + implementation 'com.google.android.material:material:1.4.0' + } + defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.charlyghislain.embedded_webview" diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 90d9128..e547e96 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,12 @@ - + + + + + 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/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 f23e6dc..c66fcb7 100755 --- a/tools/jenkins-publish-android.sh +++ b/tools/jenkins-publish-android.sh @@ -4,6 +4,7 @@ TRACK=${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,7 +20,6 @@ npm install ./node_modules/.bin/tsc npm install -g --save googleapis -GOOGLE_APPLICATION_CREDENTIALS=/var/run/secrets/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 \ || exit 1 diff --git a/tools/set-bundle-identifier.sh b/tools/set-bundle-identifier.sh new file mode 100644 index 0000000..d05e5bd --- /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 100644 index 0000000..54a87df --- /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/AndroidManfest.xml +sed -i "s/package=\"[^\"]\+\"/package=\"$PACKAGE\"/" android/app/src/main/AndroidManfest.xml +sed -i "s/package=\"[^\"]\+\"/package=\"$PACKAGE\"/" android/app/src/profile/AndroidManfest.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 100644 index 0000000..e25eb0b --- /dev/null +++ b/tools/set-title.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +TITLE="$1" + +echo "Setting the application title to $TITLE" + +sed -i "s/android:label=\"[^\"]\+\"/android:label=\"$TITLE\"/" android/app/src/main/AndroidManfest.xml + +NAME_LENGTH="${#TITLE}" +LONG_NAME="$(( $NAME_LENGTH > 15))" # 1 if long name +BUNDLE_NAME="$(cut -c -15 $TITLE)" + +perl -0777 -i -pe "s/\tCFBundleName\n[^\n]+/\tCFBundleName\n\t$BUNDLE_NAME/igs" + +if [ "$LONG_NAME" = "1" ] ; then +# todo : set bundleDisplayName +fi + -- 2.45.1 From d157673aac92a38d58c62d199ba3c00f9784ee5b Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 15:44:08 +0100 Subject: [PATCH 18/41] Upgrade webview --- lib/main.dart | 14 +++--------- lib/webview_widget.dart | 47 +++++++++++++++++++++++++++++++++++++++++ pubspec.lock | 46 ++++++++-------------------------------- pubspec.yaml | 4 +++- 4 files changed, 62 insertions(+), 49 deletions(-) create mode 100644 lib/webview_widget.dart diff --git a/lib/main.dart b/lib/main.dart index 819b254..cf459b3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,5 @@ +import 'package:embedded_webview/webview_widget.dart'; import 'package:flutter/material.dart'; -import 'package:webview_flutter/webview_flutter.dart'; void main() { const title = String.fromEnvironment("APP_TITLE"); @@ -18,16 +18,8 @@ class MyApp extends StatelessWidget { // 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), home: 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/pubspec.lock b/pubspec.lock index fcdf4d4..f1e5d5e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -74,6 +74,13 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_webview_pro: + dependency: "direct main" + description: + name: flutter_webview_pro + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" lints: dependency: transitive description: @@ -102,13 +109,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" sky_engine: dependency: transitive description: flutter @@ -170,34 +170,6 @@ packages: url: "https://pub.dartlang.org" 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" sdks: - dart: ">=2.14.0 <3.0.0" - flutter: ">=2.5.0" + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.22.0" diff --git a/pubspec.yaml b/pubspec.yaml index 383b1f2..5d05cb7 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,7 +34,9 @@ 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 + dev_dependencies: flutter_test: sdk: flutter -- 2.45.1 From 27edfbf28724339f38e3a4b5f52c89243bab4d7c Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 15:50:12 +0100 Subject: [PATCH 19/41] Fixes --- android/app/src/main/AndroidManifest.xml | 2 +- ios/Runner.xcodeproj/project.pbxproj | 6 +++--- ios/Runner/Info.plist | 2 +- tools/set-bundle-identifier.sh | 2 +- tools/set-package.sh | 6 +++--- tools/set-title.sh | 9 +++++---- 6 files changed, 14 insertions(+), 13 deletions(-) mode change 100644 => 100755 tools/set-bundle-identifier.sh mode change 100644 => 100755 tools/set-package.sh mode change 100644 => 100755 tools/set-title.sh diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e547e96..e02b448 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -7,7 +7,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - embedded_webview + Embedded webvie CFBundlePackageType APPL CFBundleShortVersionString diff --git a/tools/set-bundle-identifier.sh b/tools/set-bundle-identifier.sh old mode 100644 new mode 100755 index d05e5bd..2420e82 --- a/tools/set-bundle-identifier.sh +++ b/tools/set-bundle-identifier.sh @@ -4,4 +4,4 @@ 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 +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 old mode 100644 new mode 100755 index 54a87df..595a20c --- a/tools/set-package.sh +++ b/tools/set-package.sh @@ -4,9 +4,9 @@ PACKAGE="$1" echo "Setting the application android package to $PACKAGE" -sed -i "s/package=\"[^\"]\+\"/package=\"$PACKAGE\"/" android/app/src/debug/AndroidManfest.xml -sed -i "s/package=\"[^\"]\+\"/package=\"$PACKAGE\"/" android/app/src/main/AndroidManfest.xml -sed -i "s/package=\"[^\"]\+\"/package=\"$PACKAGE\"/" android/app/src/profile/AndroidManfest.xml +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 diff --git a/tools/set-title.sh b/tools/set-title.sh old mode 100644 new mode 100755 index e25eb0b..68cc97f --- a/tools/set-title.sh +++ b/tools/set-title.sh @@ -4,15 +4,16 @@ TITLE="$1" echo "Setting the application title to $TITLE" -sed -i "s/android:label=\"[^\"]\+\"/android:label=\"$TITLE\"/" android/app/src/main/AndroidManfest.xml +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="$(cut -c -15 $TITLE)" +BUNDLE_NAME="$(echo $TITLE | cut -c -15)" -perl -0777 -i -pe "s/\tCFBundleName\n[^\n]+/\tCFBundleName\n\t$BUNDLE_NAME/igs" +perl -0777 -i -pe "s#\tCFBundleName\n[^\n]+#\tCFBundleName\n\t$BUNDLE_NAME#igs" ios/Runner/Info.plist -if [ "$LONG_NAME" = "1" ] ; then + if [ "$LONG_NAME" = "1" ] ; then # todo : set bundleDisplayName +echo "Warning: name truncated to $BUNDLE_NAME" fi -- 2.45.1 From 9da3a88041336b6fbd43404c02245a5507418961 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 16:23:38 +0100 Subject: [PATCH 20/41] Fixes --- Jenkinsfile | 2 +- android/app/build.gradle | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1cc51bc..31888f7 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -30,7 +30,7 @@ pipeline { 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') { diff --git a/android/app/build.gradle b/android/app/build.gradle index 8d4de25..f21ade6 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -21,6 +21,12 @@ 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" -- 2.45.1 From 5b571b174b7e8aab851271cc64605e9df477c8a6 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 16:25:13 +0100 Subject: [PATCH 21/41] fix --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 9a47c0b..ec978c4 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -48,7 +48,7 @@ pipeline { sshagent(["${params.GIT_CREDENTIAL_ID}"]) { 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_KEYSTORE_PASSWORD_CREDENTIAL, variable: 'ANDROID_KEYSTORE_PASSWORD'), string(credentialsId: params.ANDROID_SIGNING_KEY_PASSWORD_CREDENTIAL, variable: 'ANDROID_KEY_PASSWORD') ]) { sh 'flutter doctor' -- 2.45.1 From c294e40c01cd8bd6e91d1cc44112e0a0fa9d4f76 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 16:26:49 +0100 Subject: [PATCH 22/41] fix --- Jenkinsfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index ec978c4..610f13c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,9 +13,9 @@ pipeline { 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: '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_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') string(name: 'GIT_CREDENTIAL_ID', defaultValue: 'jenkins-jenkins-ssh-key', description: '') -- 2.45.1 From 207732cbe75e30b6c98e616fd6c77e77143b6565 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 16:27:23 +0100 Subject: [PATCH 23/41] Fixes --- Jenkinsfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 31888f7..8d3512b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -13,9 +13,9 @@ pipeline { string(name: 'APP_URI', defaultValue: 'https://www.charlyghislain.com', description: 'Application initial uri') string(name: 'APP_COLOR', defaultValue: 'red', description: 'Application color (blue, teal, ...)') string(name: 'BUILD_MODE', defaultValue: 'debug', description: 'Flutter build mode (debug/release)') - 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_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') @@ -49,7 +49,7 @@ pipeline { sshagent(["${params.GIT_CREDENTIAL_ID}"]) { 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_KEYSTORE_PASSWORD_CREDENTIAL, variable: 'ANDROID_KEYSTORE_PASSWORD'), string(credentialsId: params.ANDROID_SIGNING_KEY_PASSWORD_CREDENTIAL, variable: 'ANDROID_KEY_PASSWORD') ]) { sh 'flutter doctor' -- 2.45.1 From 717559a421d879ce2f125e0dfbc52c6e3b901bb4 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 16:37:09 +0100 Subject: [PATCH 24/41] fix --- lib/main.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/main.dart b/lib/main.dart index cf459b3..d087092 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -import 'package:embedded_webview/webview_widget.dart'; +import 'package:comptaplan_app/webview_widget.dart'; import 'package:flutter/material.dart'; void main() { -- 2.45.1 From 93ed50761e4da0f2a0807fa557a1368f00d18924 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 16:40:14 +0100 Subject: [PATCH 25/41] fix --- Jenkinsfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Jenkinsfile b/Jenkinsfile index 610f13c..90ca4aa 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,6 +18,7 @@ pipeline { 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') -- 2.45.1 From 554bd1b10aeae1818dd6d7f860169ab56a7b3a1f Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 16:41:26 +0100 Subject: [PATCH 26/41] Update readme --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5ff593a..16aa1cc 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,23 @@ 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 ## Getting Started @@ -29,5 +31,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. -- 2.45.1 From 76349d4b422db462ac57d4d13368f5f7ef1108d4 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 16:44:33 +0100 Subject: [PATCH 27/41] Fix --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 8d3512b..bb8f982 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -85,7 +85,7 @@ pipeline { sshagent(["${params.GIT_CREDENTIAL_ID}"]) { nodejs(nodeJSInstallationName: "${params.NODEJS_INSTALLATION}") { withCredentials([ - file(credentialsId: params.ANDROID_API_KEY_CREDENTIAL, variable: 'GOOGLE_APPLICATION_CREDENTIALS') + string(credentialsId: params.ANDROID_API_KEY_CREDENTIAL, variable: 'GOOGLE_APPLICATION_CREDENTIALS') ]) { sh './tools/jenkins-publish-android.sh' } -- 2.45.1 From 869017c9b5852b3d7b68d6c7bb9305a933762f8a Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 17:04:01 +0100 Subject: [PATCH 28/41] fix --- tools/jenkins-publish-android.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/jenkins-publish-android.sh b/tools/jenkins-publish-android.sh index eeeacfe..c66fcb7 100755 --- a/tools/jenkins-publish-android.sh +++ b/tools/jenkins-publish-android.sh @@ -20,7 +20,6 @@ npm install ./node_modules/.bin/tsc npm install -g --save googleapis -GOOGLE_APPLICATION_CREDENTIALS=/var/run/secrets/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 \ || exit 1 -- 2.45.1 From 55e4040bc6ef994e73bcbd65279c73b58b5b6078 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 17:19:20 +0100 Subject: [PATCH 29/41] Fix --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index bb8f982..8d3512b 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -85,7 +85,7 @@ pipeline { sshagent(["${params.GIT_CREDENTIAL_ID}"]) { nodejs(nodeJSInstallationName: "${params.NODEJS_INSTALLATION}") { withCredentials([ - string(credentialsId: params.ANDROID_API_KEY_CREDENTIAL, variable: 'GOOGLE_APPLICATION_CREDENTIALS') + file(credentialsId: params.ANDROID_API_KEY_CREDENTIAL, variable: 'GOOGLE_APPLICATION_CREDENTIALS') ]) { sh './tools/jenkins-publish-android.sh' } -- 2.45.1 From 4b637d76e886bd13c7d18cf891fd062091fffc6c Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 17:36:13 +0100 Subject: [PATCH 30/41] fix --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index cf83e4c..372ae52 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+63 +version: 1.0.0+64 environment: sdk: ">=2.12.0 <3.0.0" -- 2.45.1 From 8c67951494d756aa041d8f89b5844d016f2771b7 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 17:53:02 +0100 Subject: [PATCH 31/41] fix repo uri --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 90ca4aa..d90833a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -24,7 +24,7 @@ pipeline { string(name: 'ANDROID_UPLOAD_TRACK', defaultValue: 'alpha', description: 'Upload track') 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/embedded_webview.git', + 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') -- 2.45.1 From b134c69db799b216d9af57f2f29b8aa7a0bd0ec6 Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 28 Nov 2021 18:02:08 +0100 Subject: [PATCH 32/41] BUmp build number --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 372ae52..62315b0 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+64 +version: 1.0.0+65 environment: sdk: ">=2.12.0 <3.0.0" -- 2.45.1 From 160b2bb51fb32dda2f04488da7d791fcd1b2d0af Mon Sep 17 00:00:00 2001 From: Jenkins release Date: Sun, 28 Nov 2021 18:06:23 +0100 Subject: [PATCH 33/41] Bump to build Update pubspec for version 1.0.0+66 65 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 62315b0..b3baa36 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+65 +version: 1.0.0+66 environment: sdk: ">=2.12.0 <3.0.0" -- 2.45.1 From ea85f7838af5efb7ef547b57e49d66ab6cc44a98 Mon Sep 17 00:00:00 2001 From: cghislai Date: Wed, 19 Jan 2022 19:11:31 +0100 Subject: [PATCH 34/41] Winbooks Connect migration --- Jenkinsfile | 2 - images/winbooks_connect.png | Bin 0 -> 13570 bytes lib/main.dart | 8 +-- lib/webview_widget.dart | 47 ---------------- lib/winbooks_migration_widget.dart | 83 +++++++++++++++++++++++++++++ pubspec.lock | 26 ++++++--- pubspec.yaml | 5 +- 7 files changed, 110 insertions(+), 61 deletions(-) create mode 100644 images/winbooks_connect.png delete mode 100644 lib/webview_widget.dart create mode 100644 lib/winbooks_migration_widget.dart diff --git a/Jenkinsfile b/Jenkinsfile index d90833a..1dbc985 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -10,7 +10,6 @@ pipeline { 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: 'ANDROID_SIGNING_KEYSTORE_CREDENTIAL', defaultValue: 'jenkins-gestemps-android-service-secret-keystore') @@ -39,7 +38,6 @@ pipeline { 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 diff --git a/images/winbooks_connect.png b/images/winbooks_connect.png new file mode 100644 index 0000000000000000000000000000000000000000..e280904b72e9b4d582848ac1b6349ca3e259af4f GIT binary patch literal 13570 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 IM6N<$g6#4&aR2}S literal 0 HcmV?d00001 diff --git a/lib/main.dart b/lib/main.dart index d087092..f666b70 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,11 +1,11 @@ -import 'package:comptaplan_app/webview_widget.dart'; +import 'package:comptaplan_app/winbooks_migration_widget.dart'; import 'package:flutter/material.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 color = String.fromEnvironment("APP_COLOR"); - runApp(const MyApp(title, uri, color)); + runApp(const MyApp(title, playStoreUri, color)); } class MyApp extends StatelessWidget { @@ -19,7 +19,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { MaterialColor materialColor = _getMaterialColor(_color); - return MaterialApp(title: _title, theme: ThemeData(primarySwatch: materialColor), home: WebViewWidget(_uri)); + return MaterialApp(title: _title, theme: ThemeData(primarySwatch: materialColor), home: WinbooksMigrationWidget(_title, _uri)); } MaterialColor _getMaterialColor(String colorString) { diff --git a/lib/webview_widget.dart b/lib/webview_widget.dart deleted file mode 100644 index a16e0c1..0000000 --- a/lib/webview_widget.dart +++ /dev/null @@ -1,47 +0,0 @@ -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..0dafbfb --- /dev/null +++ b/lib/winbooks_migration_widget.dart @@ -0,0 +1,83 @@ +import 'dart:io'; + +import 'package:android_intent_plus/android_intent.dart'; +import 'package:flutter/material.dart'; + +class WinbooksMigrationWidget extends StatefulWidget { + final String _playStoreUrl; + final String _title; + + const WinbooksMigrationWidget(this._title, this._playStoreUrl, {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 Text('Télécharger WinBooks Connect') + ]), + 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), + ), + ]) + ], + )); + } + + Future _onWinbooksConnectPress() async { + if (Platform.isAndroid) { + AndroidIntent intent = AndroidIntent( + action: 'action_view', + data: widget._playStoreUrl, + package: 'com.android.vending', + ); + return intent.launch(); + } + } +} diff --git a/pubspec.lock b/pubspec.lock index f1e5d5e..102305b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,13 +1,20 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + android_intent_plus: + dependency: "direct main" + description: + name: android_intent_plus + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.8.1" + version: "2.8.2" boolean_selector: dependency: transitive description: @@ -21,7 +28,7 @@ packages: name: characters url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.2.0" charcode: dependency: transitive description: @@ -94,7 +101,7 @@ packages: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.10" + version: "0.12.11" meta: dependency: transitive description: @@ -109,6 +116,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" sky_engine: dependency: transitive description: flutter @@ -155,7 +169,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.2" + version: "0.4.3" typed_data: dependency: transitive description: @@ -169,7 +183,7 @@ packages: name: vector_math url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "2.1.1" sdks: - dart: ">=2.12.0 <3.0.0" + dart: ">=2.14.0 <3.0.0" flutter: ">=1.22.0" diff --git a/pubspec.yaml b/pubspec.yaml index 62315b0..1abf7f2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,6 +36,7 @@ dependencies: cupertino_icons: ^1.0.2 #webview_flutter: ^2.3.1 flutter_webview_pro: ^1.0.0 + android_intent_plus: ^3.0.2 dev_dependencies: flutter_test: @@ -60,8 +61,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 -- 2.45.1 From 402753569d4a1a4b88f7787eebf1cb3af7282460 Mon Sep 17 00:00:00 2001 From: cghislai Date: Wed, 19 Jan 2022 20:08:35 +0100 Subject: [PATCH 35/41] Jenkinsfile: skip using stash/unstash --- Jenkinsfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 1dbc985..1874d3f 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -57,7 +57,6 @@ pipeline { sh './tools/set-package.sh "$APP_PACKAGE_ID"' sh './tools/set-title.sh "$APP_TITLE"' sh './tools/jenkins-build-android.sh' - stash(name: 'outputs', includes: 'build/app/outputs/**') } } } @@ -79,7 +78,6 @@ pipeline { 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}") { withCredentials([ -- 2.45.1 From 912f527bdd9d68634052ec4b7da2c033868ea9b2 Mon Sep 17 00:00:00 2001 From: Jenkins release Date: Wed, 19 Jan 2022 20:15:30 +0100 Subject: [PATCH 36/41] Bump to build Update pubspec for version 1.0.0+67 66 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index 5d1f536..ff10bb1 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+66 +version: 1.0.0+67 environment: sdk: ">=2.12.0 <3.0.0" -- 2.45.1 From 37118b7991f845968e993744391ffe548404c622 Mon Sep 17 00:00:00 2001 From: cghislai Date: Wed, 19 Jan 2022 22:05:50 +0100 Subject: [PATCH 37/41] Allow to use webview & open ios app store link on ios --- Jenkinsfile | 2 + lib/main.dart | 14 ++++-- lib/webview_widget.dart | 47 ++++++++++++++++++ lib/winbooks_migration_widget.dart | 31 ++++++++++-- pubspec.lock | 77 +++++++++++++++++++++++++++++- pubspec.yaml | 1 + test/widget_test.dart | 30 ------------ 7 files changed, 165 insertions(+), 37 deletions(-) create mode 100644 lib/webview_widget.dart delete mode 100644 test/widget_test.dart diff --git a/Jenkinsfile b/Jenkinsfile index 1874d3f..2ae4da0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -10,6 +10,7 @@ pipeline { 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: 'ANDROID_SIGNING_KEYSTORE_CREDENTIAL', defaultValue: 'jenkins-gestemps-android-service-secret-keystore') @@ -38,6 +39,7 @@ pipeline { 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 diff --git a/lib/main.dart b/lib/main.dart index f666b70..ee8a969 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,25 +1,33 @@ import 'package:comptaplan_app/winbooks_migration_widget.dart'; +import 'package:comptaplan_app/webview_widget.dart'; import 'package:flutter/material.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, playStoreUri, 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 = _getMaterialColor(_color); - return MaterialApp(title: _title, theme: ThemeData(primarySwatch: materialColor), home: WinbooksMigrationWidget(_title, _uri)); + 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 index 0dafbfb..7c9db6e 100644 --- a/lib/winbooks_migration_widget.dart +++ b/lib/winbooks_migration_widget.dart @@ -2,12 +2,14 @@ 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, {Key? key}) : super(key: key); + const WinbooksMigrationWidget(this._title, this._playStoreUrl, this._appStoreUrl, {Key? key}) : super(key: key); @override WinbooksMigrationWidgetState createState() => WinbooksMigrationWidgetState(); @@ -50,7 +52,7 @@ class WinbooksMigrationWidgetState extends State { child: Row(children: [ Image.asset('images/winbooks_connect.png', bundle: assetBundle, width: 50.0, height: 50.0), const SizedBox(width: 10), - const Text('Télécharger WinBooks Connect') + const Flexible(child: Text('Télécharger WinBooks Connect', textAlign: TextAlign.left, softWrap: true)) ]), onPressed: () async { return _onWinbooksConnectPress(); @@ -65,6 +67,23 @@ class WinbooksMigrationWidgetState extends State { 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), + ), ]) ], )); @@ -77,7 +96,13 @@ class WinbooksMigrationWidgetState extends State { data: widget._playStoreUrl, package: 'com.android.vending', ); - return intent.launch(); + 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 102305b..58342f5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -81,6 +81,11 @@ packages: 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: @@ -88,6 +93,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.3" lints: dependency: transitive description: @@ -123,6 +135,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" sky_engine: dependency: transitive description: flutter @@ -177,6 +196,62 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.18" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.14" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.14" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" vector_math: dependency: transitive description: @@ -186,4 +261,4 @@ packages: version: "2.1.1" sdks: dart: ">=2.14.0 <3.0.0" - flutter: ">=1.22.0" + flutter: ">=2.5.0" diff --git a/pubspec.yaml b/pubspec.yaml index ff10bb1..b3e5078 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: #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: diff --git a/test/widget_test.dart b/test/widget_test.dart deleted file mode 100644 index 6fb8836..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('test', 'test', 'blue')); - - // 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); - }); -} -- 2.45.1 From 35ba1d40913c57dd34942c36c509e676695fea0b Mon Sep 17 00:00:00 2001 From: Jenkins release Date: Wed, 19 Jan 2022 22:16:13 +0100 Subject: [PATCH 38/41] Bump to build Update pubspec for version 1.0.0+68 67 --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index b3e5078..75fbf00 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+67 +version: 1.0.0+68 environment: sdk: ">=2.12.0 <3.0.0" -- 2.45.1 From 67a71e2aa0f758d3c46540a019845341c8c17c75 Mon Sep 17 00:00:00 2001 From: cghislai Date: Wed, 19 Jan 2022 22:18:57 +0100 Subject: [PATCH 39/41] jenkinsfile & script: Fix passing upload track correctly --- Jenkinsfile | 2 +- tools/jenkins-publish-android.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 2ae4da0..6ae1d33 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -21,7 +21,7 @@ pipeline { 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') + 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', diff --git a/tools/jenkins-publish-android.sh b/tools/jenkins-publish-android.sh index c66fcb7..e93b068 100755 --- a/tools/jenkins-publish-android.sh +++ b/tools/jenkins-publish-android.sh @@ -1,7 +1,7 @@ #!/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:-}" @@ -21,7 +21,7 @@ npm install npm install -g --save googleapis 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 -- 2.45.1 From 4f0fc97ad1807998acd8623c3d78a9bfa82c584d Mon Sep 17 00:00:00 2001 From: renovate Date: Sat, 11 Feb 2023 01:13:14 +0000 Subject: [PATCH 40/41] Lock file maintenance --- pubspec.lock | 180 ++++++++------- tools/publish-android-js/package-lock.json | 254 +++++++++++---------- 2 files changed, 234 insertions(+), 200 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 58342f5..0e3d65c 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,65 +5,66 @@ packages: dependency: "direct main" description: name: android_intent_plus - url: "https://pub.dartlang.org" + sha256: "54810cb33945c2c10742cd746ea994822c115e9dbe189919bc63cb436e45a6af" + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.1.6" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.10.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: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted - version: "1.2.0" - charcode: - dependency: transitive - description: - name: charcode - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" + version: "1.2.1" 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: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.17.0" 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 @@ -73,7 +74,8 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + url: "https://pub.dev" source: hosted version: "1.0.4" flutter_test: @@ -90,58 +92,74 @@ packages: dependency: "direct main" description: name: flutter_webview_pro - url: "https://pub.dartlang.org" + sha256: "59bce97b1c1bc732060484cc5fd0caab545a3e328f9d948108b35df3ab6eb31b" + url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.3" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" source: hosted - version: "0.6.3" + version: "0.6.5" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + url: "https://pub.dev" source: hosted version: "1.0.1" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.13" + 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: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.8.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.8.2" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + 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.1.2" + version: "2.1.3" sky_engine: dependency: transitive description: flutter @@ -151,114 +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: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.3" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.0" + version: "0.4.16" url_launcher: dependency: "direct main" description: name: url_launcher - url: "https://pub.dartlang.org" + sha256: e8f2efc804810c0f2f5b485f49e7942179f56eabcfe81dce3387fec4bb55876b + url: "https://pub.dev" source: hosted - version: "6.0.18" + version: "6.1.9" url_launcher_android: dependency: transitive description: name: url_launcher_android - url: "https://pub.dartlang.org" + sha256: "3e2f6dfd2c7d9cd123296cab8ef66cfc2c1a13f5845f42c7a0f365690a8a7dd1" + url: "https://pub.dev" source: hosted - version: "6.0.14" + version: "6.0.23" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - url: "https://pub.dartlang.org" + sha256: "0a5af0aefdd8cf820dd739886efb1637f1f24489900204f50984634c07a54815" + url: "https://pub.dev" source: hosted - version: "6.0.14" + version: "6.1.0" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - url: "https://pub.dartlang.org" + sha256: "318c42cba924e18180c029be69caf0a1a710191b9ec49bb42b5998fdcccee3cc" + url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "3.0.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - url: "https://pub.dartlang.org" + sha256: "41988b55570df53b3dd2a7fc90c76756a963de6a8c5f8e113330cb35992e2094" + url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "3.0.2" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - url: "https://pub.dartlang.org" + sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6" + url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.1.1" url_launcher_web: dependency: transitive description: name: url_launcher_web - url: "https://pub.dartlang.org" + sha256: "44d79408ce9f07052095ef1f9a693c258d6373dc3944249374e30eff7219ccb0" + url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.0.14" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - url: "https://pub.dartlang.org" + sha256: b6217370f8eb1fd85c8890c539f5a639a01ab209a36db82c921ebeacefc7a615 + url: "https://pub.dev" source: hosted - version: "2.0.2" + 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.1" + version: "2.1.4" sdks: - dart: ">=2.14.0 <3.0.0" - flutter: ">=2.5.0" + dart: ">=2.18.0 <3.0.0" + flutter: ">=3.3.0" 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" -- 2.45.1 From 2a9300254b41fb900991647b86836b8b85c953d0 Mon Sep 17 00:00:00 2001 From: renovate Date: Tue, 6 Jun 2023 01:18:55 +0000 Subject: [PATCH 41/41] Update dependency gradle to v6.9.4 --- android/gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index bc6a58a..60a8635 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.4-all.zip -- 2.45.1