From ebf20e24e417a9a562897f6ccc238db89eee1991 Mon Sep 17 00:00:00 2001 From: canewsin Date: Sun, 25 Oct 2020 10:47:20 +0530 Subject: [PATCH] v 0.7.5 - beta 1 - Run ZeroNet on Seperate Service. - Bug Fixed for UI lag on initial setup of App Settings. - Packages Upgrade to latest versions. - Added Third Party Purchase Manager. - InApp Purchases Fix. - Bug Fixes and UX changes. --- README.md | 78 +++++++- android/app/build.gradle | 5 +- .../kotlin/in/canews/zeronet/MainActivity.kt | 14 +- .../kotlin/in/canews/zeronet/MyApplication.kt | 22 ++- .../ic_bg_service_small.xml | 13 ++ .../res/drawable-hdpi/ic_bg_service_small.png | Bin 0 -> 2094 bytes .../res/drawable-mdpi/ic_bg_service_small.png | Bin 0 -> 1295 bytes .../drawable-xhdpi/ic_bg_service_small.png | Bin 0 -> 3309 bytes .../drawable-xxhdpi/ic_bg_service_small.png | Bin 0 -> 4592 bytes android/app/src/main/res/drawable/logo.png | Bin 38737 -> 37942 bytes android/version.properties | 4 +- assets/logo.png | Bin 38737 -> 37942 bytes lib/core/site/site.dart | 5 +- lib/imports.dart | 5 +- lib/main.dart | 30 ++- lib/mobx/purchasesstore.dart | 63 +++++++ lib/mobx/purchasesstore.g.dart | 123 ++++++++++++ lib/mobx/uistore.dart | 18 -- lib/mobx/uistore.g.dart | 54 ------ lib/models/enums.dart | 3 +- lib/models/models.dart | 4 + lib/others/common.dart | 80 ++++++-- lib/others/constants.dart | 6 +- lib/others/donation_const.dart | 108 +++++++++-- lib/others/native.dart | 67 ------- lib/others/utils.dart | 10 +- lib/others/zeronet_utils.dart | 177 +++++++++++++++--- lib/widgets/about_page.dart | 135 +++++++++---- lib/widgets/home_page.dart | 85 ++++++--- lib/widgets/settings_page.dart | 13 +- pubspec.yaml | 43 +++-- 31 files changed, 835 insertions(+), 330 deletions(-) create mode 100644 android/app/src/main/res/drawable-anydpi-v24/ic_bg_service_small.xml create mode 100644 android/app/src/main/res/drawable-hdpi/ic_bg_service_small.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_bg_service_small.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_bg_service_small.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_bg_service_small.png create mode 100644 lib/mobx/purchasesstore.dart create mode 100644 lib/mobx/purchasesstore.g.dart diff --git a/README.md b/README.md index 6141790..0826bf2 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,74 @@ -# zeronet +# ZeroNet Mobile +[![Codemagic build status](https://api.codemagic.io/apps/5f755f0647fecf7a4f25751a/5f75609747fecf958ea171b0/status_badge.svg)](https://codemagic.io/apps/5f755f0647fecf7a4f25751a/5f75609747fecf958ea171b0/latest_build) -A new Flutter project. +ZeroNet Mobile is an Android Client for [ZeroNet](https://zeronet.io), a platform for decentralized websites using Bitcoin crypto and the BitTorrent network. you can learn more about ZeroNet at https://zeronet.io/. -## Getting Started +[Download from Google Play](https://play.google.com/store/apps/details?id=in.canews.zeronet) -This project is a starting point for a Flutter application. +## Installation -A few resources to get you started if this is your first Flutter project: +### From Google PlayStore : +#### Android (arm, arm64, x86) + - minimum Android version supported 16 (JellyBean). + - Google Play Store Link https://play.google.com/store/apps/details?id=in.canews.zeronet -- [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook) +#### Compiling Source : -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. +You need Flutter Framework to compile this App from Source. + +#### Installing Flutter : https://flutter.dev/docs/get-started/install + +``` +git clone https://github.com/canewsin/zeronet_mobile.git +cd zeronet_mobile +flutter packages get +``` + +After that create a file named `key.properties` in `android` directory +and fill the below details, which are in capital letters, with your details. +``` +storeFile=ANDROID_KEY_STORE_FILE_PATH +storePassword=KEY_STORE_PASSWORD +keyAlias=KEY_ALIAS +keyPassword=KEY_PASSWORD +``` + +in root folder + +to build apk +``` +flutter build apk --no-shrink +``` + +to build appbundle +``` +flutter build appbundle --no-shrink +``` + +to run the app in Android Device / Emulator + +``` +flutter run +``` + +## Donate +BTC(Preferred) : + +`35NgjpB3pzkdHkAPrNh2EMERGxnXgwCb6G` + +ETH : + +`0xa81a32dcce8e5bcb9792daa19ae7f964699ee536` + +UPI(Indian Users) : + +`pramukesh@upi` + +Liberapay : + +`https://liberapay.com/canews.in/donate` + +## Contribute +If you want to support project's further development, you can contribute your time or money, If you want to contribute money you can send bitcoin or other supported crypto currencies to above addresses or buy in-app purchases, if want to contribute translations or code. diff --git a/android/app/build.gradle b/android/app/build.gradle index d9cbadf..9b141eb 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -94,10 +94,13 @@ flutter { dependencies { def billing_version = "3.0.0" - implementation 'com.android.billingclient:billing:$billing_version' + implementation "com.android.billingclient:billing:$billing_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.google.android.gms:play-services-base:17.2.0' + + //Duplicate Classes Issue https://stackoverflow.com/a/60492942 + implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava' debugImplementation 'com.jeppeman.locallydynamic:locallydynamic-debug:0.3' releaseImplementation 'com.jeppeman.locallydynamic:locallydynamic:0.3' diff --git a/android/app/src/main/kotlin/in/canews/zeronet/MainActivity.kt b/android/app/src/main/kotlin/in/canews/zeronet/MainActivity.kt index 5f20227..7e39d83 100644 --- a/android/app/src/main/kotlin/in/canews/zeronet/MainActivity.kt +++ b/android/app/src/main/kotlin/in/canews/zeronet/MainActivity.kt @@ -56,9 +56,13 @@ class MainActivity : FlutterActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - if(intent.getStringExtra("LAUNCH_SHORTCUT_URL") != null){ + if(intent.getStringExtra("LAUNCH_SHORTCUT_URL") != null) { mLaunchShortcutUrl = intent.getStringExtra("LAUNCH_SHORTCUT_URL") } + } + + override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { + GeneratedPluginRegistrant.registerWith(flutterEngine) MethodChannel(flutterEngine?.dartExecutor, CHANNEL).setMethodCallHandler { call, result -> when (call.method) { "addToHomeScreen" -> addShortcutToHomeScreen(context, result, @@ -95,10 +99,6 @@ class MainActivity : FlutterActivity() { "uninstallModules" -> uninstallModules() } } - } - - override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) { - GeneratedPluginRegistrant.registerWith(flutterEngine) EventChannel(flutterEngine.dartExecutor, EVENT_CHANNEL).setStreamHandler( object : StreamHandler { lateinit var events: EventChannel.EventSink @@ -234,7 +234,9 @@ class MainActivity : FlutterActivity() { } private fun resultSuccess(msg : Any) { - result.success(msg).runCatching{}.onFailure { + result.runCatching { + success(msg) + }.onFailure { if (it is IllegalStateException) { Log.e("MainActivity>resultSuc>", it.message) } diff --git a/android/app/src/main/kotlin/in/canews/zeronet/MyApplication.kt b/android/app/src/main/kotlin/in/canews/zeronet/MyApplication.kt index 632749a..df26915 100644 --- a/android/app/src/main/kotlin/in/canews/zeronet/MyApplication.kt +++ b/android/app/src/main/kotlin/in/canews/zeronet/MyApplication.kt @@ -1,14 +1,32 @@ package `in`.canews.zeronet +import android.app.Activity import android.content.Context -import io.flutter.app.FlutterApplication import com.google.android.play.core.splitcompat.SplitCompat import com.google.android.play.core.splitcompat.SplitCompatApplication +import io.flutter.FlutterInjector -internal class MyApplication : SplitCompatApplication(){ +internal class MyApplication : SplitCompatApplication() { + + override fun onCreate() { + super.onCreate() + FlutterInjector.instance().flutterLoader().startInitialization(this) + } + + private var mCurrentActivity: Activity? = null + + fun getCurrentActivity(): Activity? { + return mCurrentActivity + } + + fun setCurrentActivity(mCurrentActivity: Activity?) { + this.mCurrentActivity = mCurrentActivity + } + override fun attachBaseContext(base: Context?) { super.attachBaseContext(base) SplitCompat.install(base!!) } + } diff --git a/android/app/src/main/res/drawable-anydpi-v24/ic_bg_service_small.xml b/android/app/src/main/res/drawable-anydpi-v24/ic_bg_service_small.xml new file mode 100644 index 0000000..44fceaa --- /dev/null +++ b/android/app/src/main/res/drawable-anydpi-v24/ic_bg_service_small.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/android/app/src/main/res/drawable-hdpi/ic_bg_service_small.png b/android/app/src/main/res/drawable-hdpi/ic_bg_service_small.png new file mode 100644 index 0000000000000000000000000000000000000000..26d7f7e038e8b4f3548a55758e04d8800322b3d7 GIT binary patch literal 2094 zcmV+}2+{Y6P)e{fV+6~{m4zTJg15E3X5u`u+PC_gN=3gh5(XzM7&!BN`G zXlW$7VQO{SYHbyoO<)JIsg#y>V62Lh4Gll4WX2!Rjz5@UElQ_K2JN74kTR8YoK+a^Mj7G16ncS9^>_tn&AFV7 zML7T%8=$O9X=U+3(K;N`LE65T%*a>LOLV-O=MKj(6XktsvurpZJ#4N2p}ZFc zTm&dxtJ?+q@DH^tVG9xPlpoY*<0-QlODR5ojz`$cKs7Fh(MZQ{i z(GO^8m5v%!#z{Z_kOzF^s#FM!DwMXZX%X9UY9Ji-G9> zlq%c1lutIa$gaMG1Z&k|z20#+Xbr3K%Vb986}>Zj5h1QHSp?G$%mRedD*R1gdKiSi z2YS>-3fdKZZQ!tRaq|wfM)$(s#;4lk>>xlZ7wa4+ z!pqXfBl3AZy8Jn5FC5lbqg7(q=6_fe5$}j9XAv{iJ}#s)@P2K5Mjk1gk*d;Iw2a*X zvwV)ij%2fZb`Yrx57KdM7DK}St^6a~%PpxbaOR;hmx_~awwg3r`;unsX+v6=8oZU6G}A>PxYtR zqdM6ln~S(On7FX2MsIYCKdWrT`BXq~3I=SPU5{JKqaCg4Y5VD}gEfqz{A#A{QQXLB zukx;luqSZHPp{{3#t0(|=isrluEh@LV(m2Ka9z1rZ*d%U+W}hG)K6N0yfU-g>G-M3 z`JXxJycuOo(&c=l*Bsw}Avfb&V(_^a{w8qV!((msEXh=xWCsT1qJSQ}Q-@8cWVH$p zg&Sg+%z2j&m&Ep^OS}m;I9giXEB{=l+B+s9BNuh%D;FAvS1$s_2KR#NF?V^3ymqnd z3<8uwO*D?3=8eGzc~3cKgtBn;|zcnbmo^rbwz9TR*K+utOxG}Xs&J9WGR6?(d344Kx zpzM?Tx>;@Y@uSsRS`p)kAYpT`tzysmx>Enra*p3s#_=dt{ z#^Y1Tjk2@wJQdfeF~c8&;hXp1j{0V?(#Bu?DNEI8dCYJOVYqFG`!Y;uqxj~~7}p1k zVSUgFavDtZi;R!LSn)c$7`?hpI>S+DjO!XBJQB2(J;{vB83d>)uJsuDG_bO^F4XP| zn^#opCt^`{7m+n&DLilkkezkS;;YAjtEpDs1twYX7v9q!p>$j~iQ(QpJpPE-ibq5Y zlYx(;d_aXt2$W|C-emoK4UAcyPNTk zx5ScJ1MU03JV%GUo}tW*wN@T?w+>oX!O30Fx7Ngm~p!dPGokd5US{mo6%6Gq#V(9H;o0%BXi z@6W`cR`}L32#|e{s@2g^kA))4z$!zJ4wSvQ9)4phE}hWtir|;3dVC|{oe1FM+>;dV7t`sY>`tEyEJt66E2!K(t>GKz@{J^&WvO0}ZNjV&pL< zJ`|Mk6$2FL;}u3ohNSHgInT_;w#w;C1yb05SsV%*TUDd;jp1XSa-=iQwkHSlrAr0& YFExBSQq5N0zW@LL07*qoM6N<$f{1khv;Y7A literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-mdpi/ic_bg_service_small.png b/android/app/src/main/res/drawable-mdpi/ic_bg_service_small.png new file mode 100644 index 0000000000000000000000000000000000000000..de25feef4cbcb49120e0af85fc7e02908d2e5f47 GIT binary patch literal 1295 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 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_bg_service_small.png b/android/app/src/main/res/drawable-xxhdpi/ic_bg_service_small.png new file mode 100644 index 0000000000000000000000000000000000000000..b8228bbdfa837a3bad9d303178bd55aefc22cd34 GIT binary patch literal 4592 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 aK>uImnlQ4ydR5H;0000}Q{KeRD0TS% zegtX+P00QCr>7A0d>kAH@I;u}Tzm?G1b7bz-sao=->B96aFb$z_1O+H| zwc0WT{v2ALx7ye2DP{sK1^a0{{}9yMw*p$yT>Gb4BlWPHSGXFQ3@?K=f?(vORCw=;RbV>S^3k0oNcV2bllB|m7Lk_&-m z3XiN6EB1!coQr&C}>v4OL*IYu6r zIO<6QlZE?2z5^z8VT#{FUx;8^k@avX#u4+0Y^_qDRmSD#1u52$T9Q78~TbP7lx(+ zo08I8&uk;VYI+1wWs>lv0yY>ZQGO@P3BG$1d?o9_56yGN!h*UzGLKqs7=51qXl>?U z3W5Vz06rGd3I!Zc>vIyePZ^O};Gp~r1W~Im(S=7d{heb;tFR%E_NqU~CKPouy<>|B5Uhef-5bYMngSuf4UHWZ)^dDy*1G}1D z0=TK-pdmMBNHp}-bQ^y7p&;?DVVx(bF#TcrgSEqxrsE*ecU2#sgct+6l!(*qbqVxV zC4WoN?T;4fCuFzW+)@XD>gDG4o6GJ$Mjq<|V+H|ZhK=iUKLN(%k*abtrL1C-0GrtcXUv18iJfQ7rNda6>0x zF#T9{>L(!{uwNF-pdOr6V`l=+wbj0A%S%%)#Y){LA$~AmYJ~Qu1<(=bF^44-jTc?$ z10gt?6<4}+-IH#L0CqMLU=R4^X4SxV*uDLc z?f+aPAZ-L)2Bsdo2v04_phz%jE4NIg+*A1uz@97%l{;knF>FHH8<})v)l>xn3ji$dq8qQ2kMl+_T#lG z#aSlwfvw?C;q6@ONjlVK&WzmlywYlyg^cFR%y;ZynIxPT3(K$&kprU@Fjo3x<-%q9 z<1j7^r$ZwNP=r&Mmmc1mGxa2@BET0CbF5;k<^Jvb$O2iz8B?NPFgkrJ3; zs6K>&6xb2Z^PRMDh?0YF&;JD8Jsg14Ej;R@^{P$^?n7%?u!kt#?;73h@79|1@m`lo z#9xKwGz1;!k76`+3Eabtg_T)|Sb>{;DJpNy%!TV<6CRt6bl>KbL=ZE9;x1f#btwjZ zKeONf?*N;{`VFoyNDubh{#9YKu%A9uGQFVO(VK`@Jak^e3R6gHKzM@ae&HaB!XKeQ zkTx=2QnY6AfihP7R5rBUGh81DP}ZNO9MtS?*Q#KH6P%CR=zp>Q&gL7ziNzBiH7 zh9lmZm?S+RcM=E*itffb6iE^m2^9$r&Bx)a8@&&)f_;_zPeKBK8$BhI-m8ROGrg7c z$D#=`u}POhz;#OK9R= zA{7*#LO$NFwRe#d-!}AEuT^{jt-}`>dRj*!ncD=ZA zck3|OFD;S5{DlNo=yUB>E3n8iAbKK!wbG&k0Ga7pG~|L-*@ zL5-5dO5^K-Ar5m65OvkYYX>N)LTJ-ebUmCMu&8Y!TbV7A$LIb?EcP6^66}-oEIRKw zt6ouNQ|t=a*L7M)(x!ZbQfUL3A-oihIWJFtaBKrRYf?J+CxLU#Y=N4D*u+2N*+tKW zaswIH6?x+BO-Hh2AD!shNN`#M)nv%WL~vw0eXLBHzI9Cc0sXR2=>x-<6{+leTxi4G z=tzKVdfHkKfrpi}2-UoAKT2#j9Y{zn`B<;3pzrT5<}ZKBP(nh_?oSyPW$mjc{Gm7o z6+=)LY@~Zj5`JqQZIA0=^00ZWS&r~$hUIYop3w~lnDpKOYz_63bfE#}Z^Mx_R4f%D z{CTRBzZRQbKk9frwjrwMVV*8xSKnltkGW`1IXcRJsVAzAG6ojoVHOqnOI%uN_e=7NG{2|)E1~lD>3Ik~ zV_pwL>045ytLuAp1V#t$@zdl5FCKS_9=3uL;wV=_`;x$oV^x<*T^4H`;AUKE$s_Oc z;A0zP3CC|QW-XY^x+-w^*qH| zGp?~O-ttoIJ5P2+XKC+j+DA+MWDs7xjgMlu2?vV;Hv;P}p0TN;;P=KzCrkP62l(S9 z|Dar%;FeufG`l!zag%JLrS1YFKBw>OEcVD~(K02zRah^Xu&-b3h8;W�+awW&Jo} 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 literal 38737 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 diff --git a/android/version.properties b/android/version.properties index e805d00..b4d055a 100644 --- a/android/version.properties +++ b/android/version.properties @@ -1,2 +1,2 @@ -flutter.versionName=0.7.3 -flutter.versionCode=4125 +flutter.versionName=v 0.7.5 - beta 1 +flutter.versionCode=4149 diff --git a/assets/logo.png b/assets/logo.png index f11cd469d867da1f6cb304c5f688871c39b7a530..17f6179efd27d8c36343128ac204414e05bf4332 100644 GIT binary patch literal 37942 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�+awW&Jo} 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 literal 38737 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 diff --git a/lib/core/site/site.dart b/lib/core/site/site.dart index c5c5f86..2880ba2 100644 --- a/lib/core/site/site.dart +++ b/lib/core/site/site.dart @@ -69,9 +69,8 @@ class Site { downloaded = jsonStr['downloaded']?.toInt(); modified = jsonStr['modified']?.toInt(); optionalDownloaded = jsonStr['optional_downloaded']; - optionalHelp = jsonStr['optional_help'] != null - ? json.decode(jsonStr['optional_help']) - : null; + optionalHelp = + jsonStr['optional_help'] != null ? jsonStr['optional_help'] : null; own = jsonStr['own']; peers = jsonStr['peers']; permissions = jsonStr['permissions'].cast(); diff --git a/lib/imports.dart b/lib/imports.dart index 513579c..b9e90d2 100644 --- a/lib/imports.dart +++ b/lib/imports.dart @@ -9,13 +9,14 @@ export 'package:flutter/gestures.dart'; export 'package:flutter/material.dart'; export 'package:flutter/services.dart'; +export 'package:clipboard/clipboard.dart'; export 'package:crypto/crypto.dart'; export 'package:device_info/device_info.dart'; export 'package:equatable/equatable.dart'; export 'package:file_picker/file_picker.dart'; export 'package:flutter_absolute_path/flutter_absolute_path.dart'; +export 'package:flutter_background_service/flutter_background_service.dart'; export 'package:flutter_downloader/flutter_downloader.dart'; -export 'package:flutter_local_notifications/flutter_local_notifications.dart'; export 'package:flutter_mobx/flutter_mobx.dart'; export 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; export 'package:google_fonts/google_fonts.dart'; @@ -39,8 +40,10 @@ export 'models/enums.dart'; export 'models/models.dart'; export 'mobx/uistore.dart'; export 'mobx/varstore.dart'; +export 'mobx/purchasesstore.dart'; export 'others/common.dart'; export 'others/constants.dart'; +export 'others/donation_const.dart'; export 'others/extensions.dart'; export 'others/native.dart'; export 'others/utils.dart'; diff --git a/lib/main.dart b/lib/main.dart index 2b069f5..70be84c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -3,8 +3,12 @@ import 'imports.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await init(); - //TODO: Check For Google Play Store Install. - InAppPurchaseConnection.enablePendingPurchases(); + if (kEnableInAppPurchases) { + InAppPurchaseConnection.enablePendingPurchases(); + final Stream purchaseUpdates = + InAppPurchaseConnection.instance.purchaseUpdatedStream; + purchaseUpdates.listen((purchases) => listenToPurchaseUpdated(purchases)); + } launchUrl = await launchZiteUrl(); runApp(MyApp()); } @@ -31,12 +35,18 @@ class MyApp extends StatelessWidget { body: Observer( builder: (context) { if (varStore.zeroNetInstalled) { + scaffoldState = Scaffold.of(context); if (firstTime) { SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values); uiStore.updateCurrentAppRoute(AppRoute.Settings); - makeExecHelper(); + if (!isExecPermitted) + makeExecHelper().then( + (value) => isExecPermitted = value, + ); + firstTime = false; } - if (uiStore.zeroNetStatus == ZeroNetStatus.NOT_RUNNING) { + if (uiStore.zeroNetStatus == ZeroNetStatus.NOT_RUNNING && + !manuallyStoppedZeroNet) { checkInitStatus(); } if (launchUrl.isNotEmpty) { @@ -54,13 +64,15 @@ class MyApp extends StatelessWidget { switch (uiStore.currentAppRoute) { case AppRoute.AboutPage: return WillPopScope( - onWillPop: () { - uiStore.updateCurrentAppRoute(AppRoute.Home); - return Future.value(false); - }, - child: AboutPage()); + onWillPop: () { + uiStore.updateCurrentAppRoute(AppRoute.Home); + return Future.value(false); + }, + child: AboutPage(), + ); break; case AppRoute.Home: + getInAppPurchases(); return HomePage(); break; case AppRoute.Settings: diff --git a/lib/mobx/purchasesstore.dart b/lib/mobx/purchasesstore.dart new file mode 100644 index 0000000..fd88626 --- /dev/null +++ b/lib/mobx/purchasesstore.dart @@ -0,0 +1,63 @@ +import 'package:mobx/mobx.dart'; +import 'package:purchases_flutter/purchases_flutter.dart' as purchases_flutter; + +// Include generated file +part 'purchasesstore.g.dart'; + +// This is the class used by rest of your codebase +final purchasesStore = PurchasesStore(); + +class PurchasesStore = _PurchasesStore with _$PurchasesStore; + +// The store-class +abstract class _PurchasesStore with Store { + @observable + ObservableList oneTimePurchases = + ObservableList(); + + @observable + ObservableList subscriptions = + ObservableList(); + + @action + void addOneTimePuchases(List details) { + for (var item in details) { + bool exists = oneTimePurchases + .any((element) => element.identifier == item.identifier); + if (!exists) { + oneTimePurchases.add(item); + } + } + } + + @action + void addSubscriptions(List details) { + for (var item in details) { + bool exists = + subscriptions.any((element) => element.identifier == item.identifier); + if (!exists) { + subscriptions.add(item); + } + } + } + + @observable + ObservableList purchases = ObservableList(); + + @action + void addPurchases(String purchaseIds) { + if (!purchases.contains(purchaseIds)) { + purchases.add(purchaseIds); + } + } + + @observable + ObservableList consumedPurchases = ObservableList(); + + @action + void addConsumedPurchases(String purchaseIds) { + if (!consumedPurchases.contains(purchaseIds)) { + consumedPurchases.add(purchaseIds); + } + } +} diff --git a/lib/mobx/purchasesstore.g.dart b/lib/mobx/purchasesstore.g.dart new file mode 100644 index 0000000..2de7de3 --- /dev/null +++ b/lib/mobx/purchasesstore.g.dart @@ -0,0 +1,123 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'purchasesstore.dart'; + +// ************************************************************************** +// StoreGenerator +// ************************************************************************** + +// ignore_for_file: non_constant_identifier_names, unnecessary_lambdas, prefer_expression_function_bodies, lines_longer_than_80_chars, avoid_as, avoid_annotating_with_dynamic + +mixin _$PurchasesStore on _PurchasesStore, Store { + final _$oneTimePurchasesAtom = Atom(name: '_PurchasesStore.oneTimePurchases'); + + @override + ObservableList get oneTimePurchases { + _$oneTimePurchasesAtom.context.enforceReadPolicy(_$oneTimePurchasesAtom); + _$oneTimePurchasesAtom.reportObserved(); + return super.oneTimePurchases; + } + + @override + set oneTimePurchases(ObservableList value) { + _$oneTimePurchasesAtom.context.conditionallyRunInAction(() { + super.oneTimePurchases = value; + _$oneTimePurchasesAtom.reportChanged(); + }, _$oneTimePurchasesAtom, name: '${_$oneTimePurchasesAtom.name}_set'); + } + + final _$subscriptionsAtom = Atom(name: '_PurchasesStore.subscriptions'); + + @override + ObservableList get subscriptions { + _$subscriptionsAtom.context.enforceReadPolicy(_$subscriptionsAtom); + _$subscriptionsAtom.reportObserved(); + return super.subscriptions; + } + + @override + set subscriptions(ObservableList value) { + _$subscriptionsAtom.context.conditionallyRunInAction(() { + super.subscriptions = value; + _$subscriptionsAtom.reportChanged(); + }, _$subscriptionsAtom, name: '${_$subscriptionsAtom.name}_set'); + } + + final _$purchasesAtom = Atom(name: '_PurchasesStore.purchases'); + + @override + ObservableList get purchases { + _$purchasesAtom.context.enforceReadPolicy(_$purchasesAtom); + _$purchasesAtom.reportObserved(); + return super.purchases; + } + + @override + set purchases(ObservableList value) { + _$purchasesAtom.context.conditionallyRunInAction(() { + super.purchases = value; + _$purchasesAtom.reportChanged(); + }, _$purchasesAtom, name: '${_$purchasesAtom.name}_set'); + } + + final _$consumedPurchasesAtom = + Atom(name: '_PurchasesStore.consumedPurchases'); + + @override + ObservableList get consumedPurchases { + _$consumedPurchasesAtom.context.enforceReadPolicy(_$consumedPurchasesAtom); + _$consumedPurchasesAtom.reportObserved(); + return super.consumedPurchases; + } + + @override + set consumedPurchases(ObservableList value) { + _$consumedPurchasesAtom.context.conditionallyRunInAction(() { + super.consumedPurchases = value; + _$consumedPurchasesAtom.reportChanged(); + }, _$consumedPurchasesAtom, name: '${_$consumedPurchasesAtom.name}_set'); + } + + final _$_PurchasesStoreActionController = + ActionController(name: '_PurchasesStore'); + + @override + void addOneTimePuchases(List details) { + final _$actionInfo = _$_PurchasesStoreActionController.startAction(); + try { + return super.addOneTimePuchases(details); + } finally { + _$_PurchasesStoreActionController.endAction(_$actionInfo); + } + } + + @override + void addSubscriptions(List details) { + final _$actionInfo = _$_PurchasesStoreActionController.startAction(); + try { + return super.addSubscriptions(details); + } finally { + _$_PurchasesStoreActionController.endAction(_$actionInfo); + } + } + + @override + void addPurchases(String purchaseIds) { + final _$actionInfo = _$_PurchasesStoreActionController.startAction(); + try { + return super.addPurchases(purchaseIds); + } finally { + _$_PurchasesStoreActionController.endAction(_$actionInfo); + } + } + + @override + void addConsumedPurchases(String purchaseIds) { + final _$actionInfo = _$_PurchasesStoreActionController.startAction(); + try { + return super.addConsumedPurchases(purchaseIds); + } finally { + _$_PurchasesStoreActionController.endAction(_$actionInfo); + } + } +} diff --git a/lib/mobx/uistore.dart b/lib/mobx/uistore.dart index 326b25a..235a850 100644 --- a/lib/mobx/uistore.dart +++ b/lib/mobx/uistore.dart @@ -20,24 +20,6 @@ abstract class _UiStore with Store { @action void updateInAppUpdateAvailable(AppUpdate available) => appUpdate = available; - @observable - ObservableList oneTimePurchases = - ObservableList(); - - @observable - ObservableList subscriptions = - ObservableList(); - - @action - void addOneTimePuchases(List details) { - oneTimePurchases.addAll(details); - } - - @action - void addSubscriptions(List details) { - subscriptions.addAll(details); - } - @observable bool showSnackReply = false; diff --git a/lib/mobx/uistore.g.dart b/lib/mobx/uistore.g.dart index d9d3fc3..0f00961 100644 --- a/lib/mobx/uistore.g.dart +++ b/lib/mobx/uistore.g.dart @@ -26,40 +26,6 @@ mixin _$UiStore on _UiStore, Store { }, _$appUpdateAtom, name: '${_$appUpdateAtom.name}_set'); } - final _$oneTimePurchasesAtom = Atom(name: '_UiStore.oneTimePurchases'); - - @override - ObservableList get oneTimePurchases { - _$oneTimePurchasesAtom.context.enforceReadPolicy(_$oneTimePurchasesAtom); - _$oneTimePurchasesAtom.reportObserved(); - return super.oneTimePurchases; - } - - @override - set oneTimePurchases(ObservableList value) { - _$oneTimePurchasesAtom.context.conditionallyRunInAction(() { - super.oneTimePurchases = value; - _$oneTimePurchasesAtom.reportChanged(); - }, _$oneTimePurchasesAtom, name: '${_$oneTimePurchasesAtom.name}_set'); - } - - final _$subscriptionsAtom = Atom(name: '_UiStore.subscriptions'); - - @override - ObservableList get subscriptions { - _$subscriptionsAtom.context.enforceReadPolicy(_$subscriptionsAtom); - _$subscriptionsAtom.reportObserved(); - return super.subscriptions; - } - - @override - set subscriptions(ObservableList value) { - _$subscriptionsAtom.context.conditionallyRunInAction(() { - super.subscriptions = value; - _$subscriptionsAtom.reportChanged(); - }, _$subscriptionsAtom, name: '${_$subscriptionsAtom.name}_set'); - } - final _$showSnackReplyAtom = Atom(name: '_UiStore.showSnackReply'); @override @@ -174,26 +140,6 @@ mixin _$UiStore on _UiStore, Store { } } - @override - void addOneTimePuchases(List details) { - final _$actionInfo = _$_UiStoreActionController.startAction(); - try { - return super.addOneTimePuchases(details); - } finally { - _$_UiStoreActionController.endAction(_$actionInfo); - } - } - - @override - void addSubscriptions(List details) { - final _$actionInfo = _$_UiStoreActionController.startAction(); - try { - return super.addSubscriptions(details); - } finally { - _$_UiStoreActionController.endAction(_$actionInfo); - } - } - @override void updateShowSnackReply(bool show) { final _$actionInfo = _$_UiStoreActionController.startAction(); diff --git a/lib/models/enums.dart b/lib/models/enums.dart index 99eddec..0fa300c 100644 --- a/lib/models/enums.dart +++ b/lib/models/enums.dart @@ -52,11 +52,12 @@ extension ZeroNetStatusExt on ZeroNetStatus { void onAction() { switch (this) { case ZeroNetStatus.NOT_RUNNING: - runZeroNet(); + service.sendData({'cmd': 'runZeroNet'}); break; case ZeroNetStatus.RUNNING: case ZeroNetStatus.RUNNING_WITH_TOR: shutDownZeronet(); + manuallyStoppedZeroNet = true; break; case ZeroNetStatus.ERROR: uiStore.updateCurrentAppRoute(AppRoute.LogPage); diff --git a/lib/models/models.dart b/lib/models/models.dart index 12f6bb6..e506fa7 100644 --- a/lib/models/models.dart +++ b/lib/models/models.dart @@ -47,6 +47,8 @@ class ToggleSetting extends Setting { ); } + String toString() => json.encode(this.toMap()); + void onChanged(bool value) async { var map = varStore.settings; var key = this.name; @@ -103,6 +105,8 @@ class MapSetting extends Setting { map: map['map'], ); } + + String toString() => json.encode(this.toMap()); } class UnzipParams { diff --git a/lib/others/common.dart b/lib/others/common.dart index a08118d..2e3bf0c 100644 --- a/lib/others/common.dart +++ b/lib/others/common.dart @@ -1,3 +1,5 @@ +import 'package:purchases_flutter/purchases_flutter.dart'; + import '../imports.dart'; Directory appPrivDir; @@ -10,6 +12,12 @@ bool isDownloadExec = false; bool canLaunchUrl = false; bool firstTime = false; bool kIsPlayStoreInstall = false; +bool kEnableInAppPurchases = !kDebugMode && kIsPlayStoreInstall; +bool manuallyStoppedZeroNet = false; +bool zeroNetStartedFromBoot = true; +bool isExecPermitted = false; +bool debugZeroNetCode = false; +bool vibrateonZeroNetStart = false; int downloadStatus = 0; Map downloadsMap = {}; Map downloadStatusMap = {}; @@ -29,10 +37,10 @@ String browserUrl = 'https://google.com'; Map sitesAvailable = {}; List usersAvailable = []; String zeroBrowserTheme = 'light'; -// Color zeroBrowserPrimaryColor; -// Color zeroBrowserAccentColor; +String snackMessage = ''; -FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin; +ScaffoldState scaffoldState; +FlutterBackgroundService service; String downloadLink(String item) => releases + 'Android_Module_Binaries/$item.zip'; @@ -63,9 +71,24 @@ init() async { appPrivDir = await getExternalStorageDirectory(); loadSettings(); isZeroNetInstalledm = await isZeroNetInstalled(); - if (isZeroNetInstalledm) varStore.isZeroNetInstalled(isZeroNetInstalledm); - initNotifications(); + if (isZeroNetInstalledm) { + varStore.isZeroNetInstalled(isZeroNetInstalledm); + checkForAppUpdates(); + bool autoStart = + (varStore.settings[autoStartZeroNetonBoot] as ToggleSetting).value; + FlutterBackgroundService.initialize( + runBgIsolate, + autoStart: autoStart, + ).then((value) { + if (value) { + service = FlutterBackgroundService(); + service.onDataReceived.listen(onBgServiceDataReceived); + if (zeroNetNativeDir.isNotEmpty) saveDataFile(); + } + }); + } if (!tempDir.existsSync()) tempDir.createSync(recursive: true); + Purchases.setup("ShCpAJsKdJrAAQawcMQSswqTyPWFMwXb"); } Map defSettings = { @@ -125,21 +148,28 @@ Map defSettings = { }; Future pickUserJsonFile() async { - File file = await FilePicker.getFile( - type: FileType.CUSTOM, - fileExtension: 'json', - ); + FilePickerResult result = await pickFile(fileExts: ['json']); + if (result == null) return null; + File file = File(result.files.single.path); return file; } Future pickPluginZipFile() async { - File file = await FilePicker.getFile( - type: FileType.CUSTOM, - fileExtension: 'zip', - ); + FilePickerResult result = await pickFile(fileExts: ['zip']); + if (result == null) return null; + File file = File(result.files.single.path); return file; } +Future pickFile({List fileExts}) async { + FilePickerResult result = await FilePicker.platform.pickFiles( + type: FileType.any, + allowedExtensions: fileExts, + ); + + return result; +} + Future backUpUserJsonFile(BuildContext context) async { if (getZeroNetUsersFilePath().isNotEmpty) { String result = await saveUserJsonFile(getZeroNetUsersFilePath()); @@ -160,6 +190,21 @@ void zeronetNotInit(BuildContext context) => showDialogC( "before using this option", ); +saveDataFile() { + Map dataMap = { + 'zeroNetNativeDir': zeroNetNativeDir, + }; + File f = File(dataDir + '/data.json'); + f.writeAsStringSync(json.encode(dataMap)); +} + +loadDataFile() { + File f = File(dataDir + '/data.json'); + Map m = json.decode(f.readAsStringSync()); + print(m); + zeroNetNativeDir = m['zeroNetNativeDir']; +} + loadSettings() { File f = File(dataDir + '/settings.json'); List settings; @@ -246,24 +291,19 @@ printToConsole(Object object) { object.contains(zeronetAlreadyRunningError)) { runZeroNetWs(); uiStore.setZeroNetStatus(ZeroNetStatus.RUNNING); - bool vibrate = - (varStore.settings[vibrateOnZeroNetStart] as ToggleSetting).value; - showZeroNetRunningNotification(enableVibration: vibrate); + service.sendData({'notification': 'ZeroNetStatus.RUNNING'}); } if (object.contains('ConnServer Closed port') || object.contains('All server stopped')) { zeroNetUrl = ''; uiStore.setZeroNetStatus(ZeroNetStatus.NOT_RUNNING); - flutterLocalNotificationsPlugin.cancelAll(); } log = log + object + '\n'; } else { if (object.contains(zeronetAlreadyRunningError)) { runZeroNetWs(); uiStore.setZeroNetStatus(ZeroNetStatus.RUNNING); - bool vibrate = - (varStore.settings[vibrateOnZeroNetStart] as ToggleSetting).value; - showZeroNetRunningNotification(enableVibration: vibrate); + service.sendData({'notification': 'ZeroNetStatus.RUNNING'}); } log = log + '\n'; } diff --git a/lib/others/constants.dart b/lib/others/constants.dart index 18408b8..e676dfe 100644 --- a/lib/others/constants.dart +++ b/lib/others/constants.dart @@ -301,7 +301,7 @@ extension MapOptionExt on MapOptions { if (file.existsSync()) file.deleteSync(); Navigator.pop(context); ZeroNet.instance.shutDown(); - runZeroNet(); + service.sendData({'cmd': 'runZeroNet'}); } username = ''; uiStore.updateCurrentAppRoute(AppRoute.Settings); @@ -358,7 +358,7 @@ extension MapOptionExt on MapOptions { } catch (e) { printOut(e); } - runZeroNet(); + service.sendData({'cmd': 'runZeroNet'}); Navigator.pop(context); } }, @@ -407,7 +407,7 @@ extension MapOptionExt on MapOptions { actionOk: FlatButton( onPressed: () { ZeroNet.instance.shutDown(); - runZeroNet(); + service.sendData({'cmd': 'runZeroNet'}); Navigator.pop(context); }, child: Text('Restart'), diff --git a/lib/others/donation_const.dart b/lib/others/donation_const.dart index 5e8c5a1..7e7a349 100644 --- a/lib/others/donation_const.dart +++ b/lib/others/donation_const.dart @@ -1,9 +1,12 @@ +import 'package:purchases_flutter/purchases_flutter.dart'; + import '../imports.dart'; const Map donationsAddressMap = { "BTC(Preferred)": "35NgjpB3pzkdHkAPrNh2EMERGxnXgwCb6G", "ETH": "0xa81a32dcce8e5bcb9792daa19ae7f964699ee536", - "UPI(Indian Users)": "pramukesh@upi" + "UPI(Indian Users)": "pramukesh@upi", + "Liberapay": "https://liberapay.com/canews.in/donate", }; const Set kGooglePlayPurchaseOneTimeIds = { @@ -18,20 +21,99 @@ const Set kGooglePlayPurchaseSubscriptionIds = { 'zeronet_sub_15.00' }; -Future> getGooglePlaySubscriptions() async { - final ProductDetailsResponse response = await InAppPurchaseConnection.instance - .queryProductDetails(kGooglePlayPurchaseSubscriptionIds); - if (response.notFoundIDs.isNotEmpty) { - print(response.notFoundIDs); +Future getInAppPurchases() async { + Offerings offerings = await Purchases.getOfferings(); + if (offerings.current != null) { + var onetimePurchases = (offerings.current.availablePackages.where( + (element) => element.identifier.contains('zeronet_one'), + )).toList(); + purchasesStore.addOneTimePuchases(onetimePurchases); + + var subscriptions = (offerings.current.availablePackages.where( + (element) => element.identifier.contains('zeronet_sub'), + )).toList(); + purchasesStore.addSubscriptions(subscriptions); } - return response.productDetails; } -Future> getGooglePlayOneTimePurchases() async { - final ProductDetailsResponse response = await InAppPurchaseConnection.instance - .queryProductDetails(kGooglePlayPurchaseOneTimeIds); - if (response.notFoundIDs.isNotEmpty) { - print(response.notFoundIDs); +Future isProUser() async { + try { + final userName = getZeroIdUserName(); + PurchaserInfo purchaserInfo; + if (userName.isNotEmpty) purchaserInfo = await Purchases.identify(userName); + purchaserInfo = await Purchases.getPurchaserInfo(); + if (purchaserInfo.entitlements.active.length > 0) return true; + } on PlatformException catch (e) { + // Error fetching purchaser info } - return response.productDetails; + return false; +} + +void purchasePackage(Package package) async { + try { + PurchaserInfo purchaserInfo; + final userName = getZeroIdUserName(); + if (userName.isNotEmpty) purchaserInfo = await Purchases.identify(userName); + purchaserInfo = await Purchases.purchasePackage(package); + + var isPro = await isProUser(); + if (isPro) { + // Unlock that great "pro" content + } + print(purchaserInfo); + } on PlatformException catch (e) { + var errorCode = PurchasesErrorHelper.getErrorCode(e); + if (errorCode != PurchasesErrorCode.purchaseCancelledError) { + // showError(e); + } + } +} + +void listenToPurchaseUpdated(List purchaseDetailsList) { + purchaseDetailsList.forEach((PurchaseDetails purchaseDetails) async { + if (purchaseDetails.status == PurchaseStatus.pending) { + // showPendingUI(); + } else { + if (purchaseDetails.status == PurchaseStatus.error) { + scaffoldState.showSnackBar( + SnackBar( + content: Text( + //!TODO Improve Error Messages sp that user can understand easily. + 'PurchaseStatus.error :: ${purchaseDetails.error.message}', + ), + ), + ); + } else if (purchaseDetails.status == PurchaseStatus.purchased) { + bool valid = await _verifyPurchase(purchaseDetails); + if (valid) { + deliverProduct(purchaseDetails); + } else { + // _handleInvalidPurchase(purchaseDetails); + return; + } + } + + if (purchaseDetails.productID != null && + purchaseDetails.productID.contains('zeronet_one')) { + await InAppPurchaseConnection.instance.consumePurchase(purchaseDetails); + purchasesStore.addConsumedPurchases(purchaseDetails.purchaseID); + } + if (purchaseDetails.pendingCompletePurchase) { + await InAppPurchaseConnection.instance + .completePurchase(purchaseDetails); + } + } + }); +} + +_verifyPurchase(PurchaseDetails purchaseDetails) { + print(purchaseDetails.verificationData.localVerificationData); + return Future.value(true); +} + +void deliverProduct(PurchaseDetails purchaseDetails) async { + // IMPORTANT!! Always verify a purchase purchase details before delivering the product. + if (purchaseDetails.productID.contains('zeronet_one')) { + purchasesStore.addPurchases(purchaseDetails.purchaseID); + } else {} } diff --git a/lib/others/native.dart b/lib/others/native.dart index 1fa25e7..58a8477 100644 --- a/lib/others/native.dart +++ b/lib/others/native.dart @@ -122,70 +122,3 @@ getArch() async { arch = 'x86_64'; else if (archL.contains('x86')) arch = 'x86'; } - -initNotifications() { - flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); - final initializationSettingsAndroid = - AndroidInitializationSettings('app_icon'); - final initializationSettingsIOS = IOSInitializationSettings(); - final initializationSettings = InitializationSettings( - initializationSettingsAndroid, initializationSettingsIOS); - // final categories = [ - // NotificationCategory( - // notificationCategory, - // [ - // NotificationAction("Stop", "ACTION_CLOSE"), - // NotificationAction("Exit App", "ACTION_CLOSEAPP"), - // ], - // ), - // ]; - flutterLocalNotificationsPlugin.initialize( - initializationSettings, - onSelectNotification: onSelectNotification, - // onSelectNotificationAction: onSelectNotificationAction, - // categories: categories, - ); -} - -Future onSelectNotification(String payload) async { - if (payload != null) { - printOut('notification payload: ' + payload); - } -} - -// Future onSelectNotificationAction(NotificationActionData data) async { -// printOut('notification action data: $data'); -// if (data.actionIdentifier == "ACTION_CLOSE") { -// shutDownZeronet(); -// } else { -// shutDownZeronet(); -// exit(0); -// } -// } - -Future showZeroNetRunningNotification({ - bool enableVibration = true, -}) async { - var androidDetails = AndroidNotificationDetails( - zeroNetNotiId, - zeroNetChannelName, - zeroNetChannelDes, - ongoing: true, - playSound: false, - autoCancel: false, - enableVibration: enableVibration, - ); - var iosDetails = IOSNotificationDetails(); - var details = NotificationDetails( - androidDetails, - iosDetails, - ); - await flutterLocalNotificationsPlugin.show( - 0, - 'ZeroNet Mobile is Running', - 'Click on Stop, to Stop ZeroNet or Click Here to Open App', - details, - // categoryIdentifier: notificationCategory, - // payload: 'zeronet', - ); -} diff --git a/lib/others/utils.dart b/lib/others/utils.dart index a952c82..b41b936 100644 --- a/lib/others/utils.dart +++ b/lib/others/utils.dart @@ -137,7 +137,7 @@ bindUnZipIsolate() { var nooffiles = files(arch).length; if (percentUnZip == nooffiles * 100) { printOut('Installation Completed', isNative: true); - makeExecHelper(); + makeExecHelper().then((value) => isExecPermitted = value); uninstallModules(); check(); } @@ -340,7 +340,13 @@ Future makeExecHelper() async { for (var item in soDirs) { var dir = Directory(dataDir + '/$item'); if (dir.existsSync()) { - var list = dir.listSync(); + var list = dir.listSync().where((element) { + if (element is File) { + if (element.path.contains('so')) return true; + return false; + } + return false; + }); for (var item in list) { if (item is File) { printOut(item.path); diff --git a/lib/others/zeronet_utils.dart b/lib/others/zeronet_utils.dart index 76083e2..7feea0c 100644 --- a/lib/others/zeronet_utils.dart +++ b/lib/others/zeronet_utils.dart @@ -4,7 +4,6 @@ Future checkInitStatus() async { loadSitesFromFileSystem(); loadUsersFromFileSystem(); setZeroBrowserThemeValues(); - checkForAppUpdates(); try { String url = defZeroNetUrl + Utils.initialSites['ZeroNetMobile']['url']; String key = await ZeroNet.instance.getWrapperKey(url); @@ -15,14 +14,15 @@ Future checkInitStatus() async { zeroNetIPwithPort(defZeroNetUrl), Utils.urlZeroNetMob, ); - showZeroNetRunningNotification(enableVibration: false); + service.sendData({'notification': 'ZeroNetStatus.RUNNING'}); testUrl(); } catch (e) { if (launchUrl.isNotEmpty || - !firstTime && - (varStore.settings[autoStartZeroNet] as ToggleSetting).value) { + ((varStore.settings[autoStartZeroNet] as ToggleSetting).value && + !firstTime) && + !manuallyStoppedZeroNet) { //TODO: Remember this! - runZeroNet(); + // service.sendData({'cmd': 'runZeroNet'}); } if (e is OSError) { if (e.errorCode == 111) { @@ -37,11 +37,18 @@ checkForAppUpdates() async { DateTime time = DateTime.now(); var updateTimeEpoch = int.parse(await getAppLastUpdateTime()); var updateTime = DateTime.fromMillisecondsSinceEpoch(updateTimeEpoch); - //TODO: Update this checking to days instead of seconds after testing completed; - if (time.difference(updateTime).inSeconds > 3 && !kDebugMode) { - AppUpdateInfo info = await InAppUpdate.checkForUpdate(); - if (info.updateAvailable && info.flexibleUpdateAllowed) - uiStore.updateInAppUpdateAvailable(AppUpdate.AVAILABLE); + int updateDays; + if (appVersion.contains('internal')) { + updateDays = time.difference(updateTime).inSeconds; + } else { + updateDays = time.difference(updateTime).inDays; + } + if (updateDays > 3 && !kDebugMode) { + if (kIsPlayStoreInstall) { + AppUpdateInfo info = await InAppUpdate.checkForUpdate(); + if (info.updateAvailable && info.flexibleUpdateAllowed) + uiStore.updateInAppUpdateAvailable(AppUpdate.AVAILABLE); + } } } @@ -63,18 +70,19 @@ setZeroBrowserThemeValues() { } runTorEngine() { + service = FlutterBackgroundService(); final tor = zeroNetNativeDir + '/libtor.so'; if (File(tor).existsSync()) { - printToConsole('Running Tor Engine..'); + service.sendData({'console': 'Running Tor Engine..'}); Process.start('$tor', [], environment: { "LD_LIBRARY_PATH": "$libDir:$libDir64:/system/lib64", }).then((proc) { zero = proc; zero.stderr.listen((onData) { - // printToConsole(utf8.decode(onData)); + // service.sendData({'console': utf8.decode(onData)}); }); zero.stdout.listen((onData) { - // printToConsole(utf8.decode(onData)); + // service.sendData({'console': utf8.decode(onData)}); }); }).catchError((e) { if (e is ProcessException) { @@ -83,26 +91,27 @@ runTorEngine() { }); } else { //TODO: Improve Error Trace here - printToConsole('Tor Binary Not Found'); + service.sendData({'console': 'Tor Binary Not Found'}); uiStore.setZeroNetStatus(ZeroNetStatus.RUNNING); } } runZeroNet() { - if (uiStore.zeroNetStatus == ZeroNetStatus.NOT_RUNNING) { + if (uiStore.zeroNetStatus == ZeroNetStatus.NOT_RUNNING || + uiStore.zeroNetStatus == ZeroNetStatus.ERROR) { uiStore.setZeroNetStatus(ZeroNetStatus.INITIALISING); + service.sendData({'ZeroNetStatus': 'INITIALISING'}); runTorEngine(); log = ''; - printToConsole(logRunning); - printToConsole(startZeroNetLog + '\n'); + service.sendData({'console': logRunning}); + service.sendData({'console': startZeroNetLog + '\n'}); var python = zeroNetNativeDir + '/libpython3.8.so'; var openssl = zeroNetNativeDir + '/libopenssl.so'; if (File(python).existsSync()) { - var debug = (varStore.settings[debugZeroNet] as ToggleSetting).value; Process.start('$python', [ zeronet, - if (debug) '--debug', + if (debugZeroNetCode) '--debug', "--start_dir", zeroNetDir, "--openssl_bin_file", @@ -114,25 +123,29 @@ runZeroNet() { }).then((proc) { zero = proc; zero.stderr.listen((onData) { - printToConsole(utf8.decode(onData)); + service.sendData({'console': utf8.decode(onData)}); }); zero.stdout.listen((onData) { - printToConsole(utf8.decode(onData)); + service.sendData({'console': utf8.decode(onData)}); }); }).catchError((e) { if (e is ProcessException) { printOut(e.toString()); } uiStore.setZeroNetStatus(ZeroNetStatus.ERROR); + service.sendData({'ZeroNetStatus': 'ERROR'}); + service.sendData({'console': e.toString()}); }); } else { //TODO: Improve Error Trace here - printToConsole('Python Binary Not Found'); + service.sendData({'console': 'Python Binary Not Found'}); uiStore.setZeroNetStatus(ZeroNetStatus.ERROR); + service.sendData({'ZeroNetStatus': 'ERROR'}); + service.sendData({'console': 'zeroNetNativeDir : $zeroNetNativeDir'}); var contents = Directory(zeroNetNativeDir).listSync(recursive: true); for (var item in contents) { - printToConsole(item.name()); - printToConsole(item.path); + service.sendData({'console': item.name()}); + service.sendData({'console': item.path}); } } } else { @@ -140,6 +153,103 @@ runZeroNet() { } } +void runBgIsolate() { + WidgetsFlutterBinding.ensureInitialized(); + service = FlutterBackgroundService(); + service.onDataReceived.listen(onBgServiceDataReceivedForIsolate); + service.sendData({'status': 'Started Background Service Successfully'}); + Timer(Duration(milliseconds: 500), () { + if (zeroNetStartedFromBoot) { + setBgServiceRunningNotification(); + if (zeroNetNativeDir.isEmpty || zeroNetNativeDir == null) { + loadSettings(); + loadDataFile(); + debugZeroNetCode = + (varStore.settings[debugZeroNet] as ToggleSetting).value; + vibrateonZeroNetStart = + (varStore.settings[vibrateOnZeroNetStart] as ToggleSetting).value; + runZeroNet(); + setZeroNetRunningNotification(); + } + } + }); +} + +void onBgServiceDataReceivedForIsolate(Map data) { + if (data.keys.first == 'cmd') { + switch (data.values.first) { + case 'runZeroNet': + runZeroNet(); + break; + case 'shutDownZeronet': + //TODO: iMPLEMENT THIS. + break; + default: + } + } else if (data.keys.first == 'init') { + Map initMap = data['init']; + zeroNetNativeDir = initMap['zeroNetNativeDir']; + debugZeroNetCode = initMap['debugZeroNetCode']; + zeroNetStartedFromBoot = initMap['zeroNetStartedFromBoot']; + vibrateonZeroNetStart = initMap['vibrateOnZeroNetStart']; + setBgServiceRunningNotification(); + } else if (data.keys.first == 'notification') { + if (data.values.first == 'ZeroNetStatus.RUNNING') { + setZeroNetRunningNotification(); + } else if (data.values.first == 'BgService.RUNNING') { + setBgServiceRunningNotification(); + } + } +} + +setZeroNetRunningNotification() { + service.setNotificationInfo( + title: "ZeroNet Mobile is Running", + content: "Click Here on this Notification to open app", + ); +} + +setBgServiceRunningNotification() { + service.setNotificationInfo( + title: "ZeroNet Mobile is Not Running", + content: "Open ZeroNet Mobile App and click start to run ZeroNet", + ); +} + +void onBgServiceDataReceived(Map data) { + if (data.keys.first == 'status') { + service.sendData({'notification': 'BgService.RUNNING'}); + service.sendData({ + 'init': { + 'zeroNetNativeDir': zeroNetNativeDir, + 'zeroNetStartedFromBoot': false, + 'debugZeroNetCode': + (varStore.settings[debugZeroNet] as ToggleSetting).value, + 'vibrateOnZeroNetStart': + (varStore.settings[vibrateOnZeroNetStart] as ToggleSetting).value, + } + }); + if (zeroNetNativeDir.isEmpty || zeroNetNativeDir == null) { + printToConsole('zeroNetNativeDir is Empty'); + } else if ((varStore.settings[autoStartZeroNet] as ToggleSetting).value == + true) { + service.sendData({'cmd': 'runZeroNet'}); + } + } else if (data.keys.first == 'ZeroNetStatus') { + switch (data.values.first) { + case 'INITIALISING': + uiStore.setZeroNetStatus(ZeroNetStatus.INITIALISING); + break; + case 'ERROR': + uiStore.setZeroNetStatus(ZeroNetStatus.ERROR); + break; + default: + } + } else if (data.keys.first == 'console') { + printToConsole(data.values.first); + } +} + shutDownZeronet() { if (uiStore.zeroNetStatus == ZeroNetStatus.RUNNING) { if (ZeroNet.isInitialised) @@ -152,9 +262,9 @@ shutDownZeronet() { printOut(e); } } + service.sendData({'cmd': 'shutDownZeronet'}); zeroNetUrl = ''; uiStore.setZeroNetStatus(ZeroNetStatus.NOT_RUNNING); - flutterLocalNotificationsPlugin.cancelAll(); } } @@ -179,7 +289,7 @@ runZeroNetWs() { restartZeroNet() { ZeroNet.instance.shutDown(); - runZeroNet(); + service.sendData({'cmd': 'runZeroNet'}); } writeZeroNetConf(String str) { @@ -263,3 +373,18 @@ bool isZiteExitsLocally(String address) { String path = getZeroNetDataDir().path + '/$address'; return Directory(path).existsSync(); } + +bool isLocalZitesExists() { + String path = getZeroNetDataDir().path; + Directory dir = Directory(path); + + List paths; + if (dir.existsSync()) + paths = dir + .listSync() + .where((element) => (element is Directory) ? true : false) + .toList(); + else + return false; + return paths.isNotEmpty; +} diff --git a/lib/widgets/about_page.dart b/lib/widgets/about_page.dart index fdea6d5..0b24db0 100644 --- a/lib/widgets/about_page.dart +++ b/lib/widgets/about_page.dart @@ -1,8 +1,6 @@ import 'dart:ui'; -import 'package:clipboard/clipboard.dart'; -import 'package:flutter/gestures.dart'; -import 'package:zeronet/others/donation_const.dart'; +import 'package:purchases_flutter/purchases_flutter.dart'; import '../imports.dart'; @@ -107,7 +105,7 @@ class AboutPage extends StatelessWidget { ), ), Padding( - padding: const EdgeInsets.all(4.0), + padding: const EdgeInsets.all(8.0), ), ], ), @@ -195,7 +193,7 @@ class DonationWidget extends StatelessWidget { Padding( padding: const EdgeInsets.all(8.0), ), - GooglePlayInAppPurchases(), + if (kEnableInAppPurchases) GooglePlayInAppPurchases(), Padding( padding: const EdgeInsets.all(8.0), ), @@ -323,10 +321,6 @@ class DeveloperWidget extends StatelessWidget { class GooglePlayInAppPurchases extends StatelessWidget { @override Widget build(BuildContext context) { - getGooglePlayOneTimePurchases() - .then((value) => uiStore.addOneTimePuchases(value)); - getGooglePlaySubscriptions() - .then((value) => uiStore.addSubscriptions(value)); return Container( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -349,41 +343,102 @@ class GooglePlayInAppPurchases extends StatelessWidget { ), ), Observer(builder: (ctx) { - List oneTimePurchases = uiStore.oneTimePurchases; - if (oneTimePurchases.length > 0) { - List children = []; - for (var item in oneTimePurchases) { - var i = oneTimePurchases.indexOf(item); - Color c = Color(0xFF); - String label = ''; - switch (i) { - case 0: - label = 'Tip'; - c = Color(0xFF06CAB6); - break; - case 1: - label = 'Coffee'; - c = Color(0xFF0696CA); - break; - case 2: - label = 'Lunch'; - c = Color(0xFFCA067B); - break; - default: + List mChildren = []; + Map> googlePurchasesTypes = { + 'One Time': purchasesStore.oneTimePurchases, + 'Monthly Subscriptions': purchasesStore.subscriptions, + }; + for (var item in googlePurchasesTypes.keys) { + List purchases = googlePurchasesTypes[item]; + purchases + ..sort((item1, item2) { + int item1I1 = item1.identifier.lastIndexOf('_') + 1; + int item1I2 = item1.identifier.lastIndexOf('.'); + String item1PriceStr = + item1.identifier.substring(item1I1, item1I2); + int item1Price = int.parse(item1PriceStr); + int item2I1 = item2.identifier.lastIndexOf('_') + 1; + int item2I2 = item2.identifier.lastIndexOf('.'); + String item2PriceStr = + item2.identifier.substring(item2I1, item2I2); + int item2Price = int.parse(item2PriceStr); + return item1Price < item2Price ? -1 : 1; + }); + if (purchases.length > 0) { + List children = []; + for (var package in purchases) { + var i = purchases.indexOf(package); + Color c = Color(0xFF); + String label = ''; + switch (i) { + case 0: + label = 'Tip'; + c = Color(0xFF06CAB6); + break; + case 1: + label = 'Coffee'; + c = Color(0xFF0696CA); + break; + case 2: + label = 'Lunch'; + c = Color(0xFFCA067B); + break; + default: + } + children.add( + RaisedButton( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.0), + ), + child: Padding( + padding: const EdgeInsets.only( + left: 16.0, + right: 16.0, + top: 8.0, + bottom: 8.0, + ), + child: Text( + "$label(${package.product.priceString})", + style: GoogleFonts.roboto( + fontSize: 16.0, + fontWeight: FontWeight.w500, + color: Colors.white, + ), + ), + ), + color: c, + onPressed: () => purchasePackage(package), + ), + ); } - children.add( - RaisedButton( - child: Text("$label(${item.price})"), - color: c, - onPressed: () {}, + mChildren.add( + Column( + children: [ + Padding(padding: const EdgeInsets.all(8.0)), + Text( + item, + style: GoogleFonts.roboto( + fontSize: 16.0, + fontWeight: FontWeight.w500, + ), + ), + Padding(padding: const EdgeInsets.all(8.0)), + Center( + child: Wrap( + spacing: 25.0, + runSpacing: 10.0, + alignment: WrapAlignment.spaceEvenly, + children: children, + ), + ) + ], ), ); } - return Wrap( - children: [], - ); - } else - return Container(); + } + return Column( + children: mChildren, + ); }) ], ), diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index 1917e30..5e96d96 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -239,7 +239,16 @@ class PopularZeroNetSites extends StatelessWidget { @override Widget build(BuildContext context) { List zeroSites = []; - for (var key in Utils.initialSites.keys) { + List siteKeys = Utils.initialSites.keys.toList(); + if (isLocalZitesExists()) { + siteKeys.sort((item1, item2) { + bool isZite1Exists = isZiteExitsLocally( + Utils.initialSites[item1]['btcAddress'], + ); + return isZite1Exists ? 0 : 1; + }); + } + for (var key in siteKeys) { var name = key; zeroSites.add( SiteDetailCard(name: name), @@ -379,10 +388,21 @@ class SiteDetailCard extends StatelessWidget { size: 36, color: Color(isZiteExists ? 0xFF6EB69E : 0xDF6EB69E), ), - onTap: () { - browserUrl = zeroNetUrl + Utils.initialSites[name]['url']; - uiStore.updateCurrentAppRoute(AppRoute.ZeroBrowser); - }, + onTap: uiStore.zeroNetStatus == ZeroNetStatus.NOT_RUNNING + ? () { + Scaffold.of(context).showSnackBar( + SnackBar( + content: Text( + 'Please Start ZeroNet First to Browse this Zite', + ), + ), + ); + } + : () { + browserUrl = + zeroNetUrl + Utils.initialSites[name]['url']; + uiStore.updateCurrentAppRoute(AppRoute.ZeroBrowser); + }, ), ], ) @@ -444,26 +464,37 @@ class SiteDetailsSheet extends StatelessWidget { Utils.initialSites[name]['url'], ), ), - RaisedButton( - color: Color(0xFF009764), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0)), - onPressed: () { - browserUrl = - zeroNetUrl + Utils.initialSites[name]['url']; - uiStore.currentBottomSheetController?.close(); - uiStore.updateCurrentAppRoute(AppRoute.ZeroBrowser); - }, - child: Text( - isZiteExists ? 'OPEN' : 'DOWNLOAD', - maxLines: 1, - style: GoogleFonts.roboto( - fontSize: 18.0, - fontWeight: FontWeight.w500, - color: Colors.white, + Observer(builder: (context) { + return RaisedButton( + color: Color(0xFF009764), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0)), + onPressed: uiStore.zeroNetStatus == + ZeroNetStatus.NOT_RUNNING + ? () { + snackMessage = + 'Please Start ZeroNet First to Browse this Zite'; + uiStore.updateShowSnackReply(true); + } + : () { + browserUrl = zeroNetUrl + + Utils.initialSites[name]['url']; + uiStore.currentBottomSheetController?.close(); + uiStore.updateCurrentAppRoute( + AppRoute.ZeroBrowser, + ); + }, + child: Text( + isZiteExists ? 'OPEN' : 'DOWNLOAD', + maxLines: 1, + style: GoogleFonts.roboto( + fontSize: 18.0, + fontWeight: FontWeight.w500, + color: Colors.white, + ), ), - ), - ), + ); + }), ], ) ], @@ -485,7 +516,8 @@ class SiteDetailsSheet extends StatelessWidget { RaisedButton( color: Color(0xFF008297), shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0)), + borderRadius: BorderRadius.circular(10.0), + ), onPressed: () async { File logoFile = File(getZeroNetDataDir().path + "/${Utils.initialSites[name]['btcAddress']}/img/logo.png"); @@ -501,6 +533,7 @@ class SiteDetailsSheet extends StatelessWidget { logoPath, ); if (added) { + snackMessage = '$name shortcut added to HomeScreen'; uiStore.updateShowSnackReply(true); } }, @@ -603,7 +636,7 @@ class SiteDetailsSheet extends StatelessWidget { padding: const EdgeInsets.all(8.0), child: Center( child: Text( - '$name shortcut added to HomeScreen', + snackMessage, style: TextStyle(color: Colors.white), ), ), diff --git a/lib/widgets/settings_page.dart b/lib/widgets/settings_page.dart index 0a06650..a0aa544 100644 --- a/lib/widgets/settings_page.dart +++ b/lib/widgets/settings_page.dart @@ -153,11 +153,11 @@ class SettingsCard extends StatelessWidget { if (setting is ToggleSetting) Observer( builder: (context) { + bool enabled = (varStore.settings[setting.name] + as ToggleSetting) + .value; return Switch( - value: (varStore.settings[ - (setting as ToggleSetting).name] - as ToggleSetting) - .value, + value: enabled, activeColor: Color(0xFF5380FF), onChanged: (setting as ToggleSetting).onChanged, ); @@ -261,8 +261,9 @@ class SettingsCard extends StatelessWidget { if (file.existsSync()) { file.renameSync(getZeroNetDataDir().path + '/users.json'); // _reload(); - ZeroNet.instance.shutDown(); - runZeroNet(); + if (uiStore.zeroNetStatus == ZeroNetStatus.RUNNING) + ZeroNet.instance.shutDown(); + service.sendData({'cmd': 'runZeroNet'}); Navigator.pop(context); } }, diff --git a/pubspec.yaml b/pubspec.yaml index dafe730..64ac2ff 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -12,38 +12,41 @@ dependencies: archive: 2.0.13 crypto: 2.1.5 clipboard: 0.1.2+8 - device_info: 0.4.2+1 - file_picker: 1.4.3+2 + device_info: 0.4.2+9 + file_picker: 2.0.9+1 flutter_absolute_path: # path: ../flutter_absolute_path git: - url : https://github.com/canewsin/flutter_absolute_path.git - flutter_downloader: 1.4.1 + url: https://github.com/canewsin/flutter_absolute_path.git + ref: android-v2 + flutter_downloader: 1.5.1 flutter_mobx: 0.3.3+3 - http: 0.12.0+3 + http: 0.12.2 mobx: 0.3.3+1 - google_fonts: 1.1.0 - in_app_purchase: 0.3.4+8 - in_app_review: 0.2.0+4 - in_app_update: #1.1.11 - git: - url : https://github.com/canewsin/flutter_in_app_update.git + google_fonts: 1.1.1 + in_app_purchase: 0.3.4+15 + in_app_review: 0.2.1+1 + in_app_update: 1.1.13 + # git: + # url: https://github.com/canewsin/flutter_in_app_update.git outline_material_icons: 0.1.1 equatable: 1.2.5 - time_ago_provider: 2.0.5 + time_ago_provider: 2.3.1 package_info: 0.4.3 - path_provider: 1.6.5 - random_string: 2.0.1 - share: 0.6.3+6 - url_launcher: 5.5.1 + path_provider: 1.6.21 + purchases_flutter: 1.4.0 + random_string: 2.1.0 + share: 0.6.5+3 + url_launcher: 5.7.6 + flutter_background_service: #0.0.1+16 + # path: ../flutter_background_service + git: + url: https://github.com/canewsin/flutter_background_service + ref: auto-start-pref flutter_webview_plugin: #0.3.11 git: url: https://github.com/canewsin/flutter_webview_plugin ref: fullscreen-support - flutter_local_notifications: 1.4.4+4 - # git: - # url: https://github.com/canewsin/flutter_local_notifications - # ref: actions web_socket_channel: 1.1.0 zeronet_ws: # path: ../zeronet_ws