Skip to content

Commit 36930eb

Browse files
committed
feat: check update after opening app
1 parent b488b90 commit 36930eb

File tree

4 files changed

+33
-9
lines changed

4 files changed

+33
-9
lines changed

lib/home.dart

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,17 @@ import 'package:git_touch/screens/login.dart';
1919
import 'package:git_touch/screens/gh_notification.dart';
2020
import 'package:git_touch/screens/gh_user.dart';
2121
import 'package:git_touch/utils/utils.dart';
22+
import 'package:launch_review/launch_review.dart';
23+
import 'package:package_info/package_info.dart';
2224
import 'package:provider/provider.dart';
2325
import 'package:git_touch/screens/gh_news.dart';
2426
import 'package:git_touch/screens/gh_search.dart';
2527
import 'package:git_touch/screens/gh_trending.dart';
2628
import 'package:git_touch/screens/ge_search.dart';
29+
import 'package:github/github.dart';
2730
import 'package:flutter_gen/gen_l10n/S.dart';
31+
import 'package:pub_semver/pub_semver.dart';
32+
import 'package:universal_io/io.dart';
2833

2934
class Home extends StatefulWidget {
3035
@override
@@ -39,6 +44,32 @@ class _HomeState extends State<Home> {
3944
final GlobalKey<NavigatorState> tab4 = GlobalKey<NavigatorState>();
4045
final GlobalKey<NavigatorState> tab5 = GlobalKey<NavigatorState>();
4146

47+
@override
48+
initState() {
49+
super.initState();
50+
Future.delayed(Duration(seconds: 5), () async {
51+
final latest = await GitHub()
52+
.repositories
53+
.getLatestRelease(RepositorySlug.full('git-touch/git-touch'));
54+
final current =
55+
await PackageInfo.fromPlatform().then((value) => value.version);
56+
if (Version.parse(latest.tagName!.substring(1))
57+
.compareTo(Version.parse(current)) ==
58+
1) {
59+
final res = await context.read<ThemeModel>().showConfirm(context,
60+
Text('New version released. Would you like to download it?'));
61+
if (res == true) {
62+
if (Platform.isIOS) {
63+
// go to app store
64+
LaunchReview.launch(writeReview: false);
65+
} else {
66+
context.read<ThemeModel>().push(context, latest.htmlUrl!);
67+
}
68+
}
69+
}
70+
});
71+
}
72+
4273
_buildScreen(int index) {
4374
// print(Localizations.localeOf(context).toString());
4475
// return GlProjectScreen(32221);

lib/screens/login.dart

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,6 @@ class _LoginScreenState extends State<LoginScreen> {
2727
final _usernameController = TextEditingController();
2828
final _passwordController = TextEditingController();
2929

30-
// @override
31-
// initState() {
32-
// super.initState();
33-
// _tokenController.addListener(() {
34-
// print(_tokenController.text);
35-
// });
36-
// }
37-
3830
Widget _buildAccountItem(int index) {
3931
final theme = Provider.of<ThemeModel>(context);
4032
final auth = Provider.of<AuthModel>(context);

pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,7 @@ packages:
687687
source: hosted
688688
version: "5.0.0"
689689
pub_semver:
690-
dependency: transitive
690+
dependency: "direct main"
691691
description:
692692
name: pub_semver
693693
url: "https://pub.dartlang.org"

pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ dependencies:
5151
url_launcher: ^6.0.3
5252
webview_flutter: ^2.0.4
5353
sentry_flutter: ^5.1.0
54+
pub_semver: ^2.0.0
5455

5556
dev_dependencies:
5657
flutter_test:

0 commit comments

Comments
 (0)