114 lines
3.2 KiB
Dart
114 lines
3.2 KiB
Dart
import 'package:dio/dio.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:libacflutter/Constants.dart';
|
|
import 'package:ota_update/ota_update.dart';
|
|
import 'package:pokedex/Consts.dart';
|
|
import 'package:pokedex/Session.dart';
|
|
|
|
class UpdateCheck extends StatefulWidget {
|
|
const UpdateCheck({super.key});
|
|
|
|
@override
|
|
State<StatefulWidget> createState() {
|
|
return _UPDCheck();
|
|
}
|
|
}
|
|
|
|
class _UPDCheck extends State<UpdateCheck> {
|
|
Future<void> checkUpdate() async {
|
|
Dio dio = Dio();
|
|
// retrieve the latest version info file.
|
|
var reply = await dio.get(
|
|
"https://git.zontreck.com/zontreck/PokeDex/raw/branch/main/LATEST_VERSION",
|
|
);
|
|
String replyStr = reply.data as String;
|
|
replyStr = replyStr.trim();
|
|
|
|
// Check if version mismatch!
|
|
if (replyStr != Constants.VERSION) {
|
|
SessionData.isUpdateAvailable = true;
|
|
} else {
|
|
SessionData.isUpdateAvailable = false;
|
|
}
|
|
}
|
|
|
|
@override
|
|
void initState() {
|
|
// Check for updates
|
|
checkUpdate();
|
|
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
void didChangeDependencies() {
|
|
SessionData.callbacks.updateCheckPage = () async {
|
|
setState(() {});
|
|
};
|
|
|
|
super.didChangeDependencies();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
SessionData.callbacks.updateCheckPage = null;
|
|
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text("PokeDex - Update Checker"),
|
|
backgroundColor: LibACFlutterConstants.TITLEBAR_COLOR,
|
|
),
|
|
body: Padding(
|
|
padding: EdgeInsetsGeometry.all(8),
|
|
child: SingleChildScrollView(
|
|
child: Column(
|
|
children: [
|
|
ListTile(
|
|
title: Text("Check for updates..."),
|
|
subtitle: Text("Checks for an update immediately."),
|
|
leading: Icon(Icons.update_outlined),
|
|
onTap: () async {
|
|
await checkUpdate();
|
|
setState(() {});
|
|
},
|
|
),
|
|
|
|
if (SessionData.isUpdateAvailable)
|
|
ListTile(
|
|
title: Text("Install Update"),
|
|
subtitle: Text("Download and install the available update"),
|
|
leading: Icon(Icons.system_update),
|
|
onTap: () async {
|
|
// Do the update!
|
|
|
|
SessionData.isUpdateAvailable = false;
|
|
setState(() {});
|
|
|
|
OtaUpdate updater = OtaUpdate();
|
|
updater.execute(
|
|
"https://ci.zontreck.com/job/Projects/job/Dart/job/PokeDex/job/main/lastSuccessfulBuild/artifact/pokedex.apk",
|
|
destinationFilename: "pokedex.apk",
|
|
);
|
|
},
|
|
),
|
|
if (!SessionData.isUpdateAvailable)
|
|
ListTile(
|
|
title: Text("No Available Update"),
|
|
subtitle: Text(
|
|
"There is not a update available at this time.",
|
|
),
|
|
leading: Icon(Icons.disabled_by_default),
|
|
tileColor: LibACFlutterConstants.TITLEBAR_COLOR,
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|