finished migration

This commit is contained in:
Alessandro Autiero
2022-09-07 00:25:24 +02:00
parent 04f24f691f
commit df4bd5772f
3 changed files with 38 additions and 8 deletions

View File

@@ -2,6 +2,7 @@ import 'package:bitsdojo_window/bitsdojo_window.dart';
import 'package:fluent_ui/fluent_ui.dart'; import 'package:fluent_ui/fluent_ui.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart'; import 'package:get_storage/get_storage.dart';
import 'package:reboot_launcher/src/controller/build_controller.dart';
import 'package:reboot_launcher/src/controller/game_controller.dart'; import 'package:reboot_launcher/src/controller/game_controller.dart';
import 'package:reboot_launcher/src/controller/server_controller.dart'; import 'package:reboot_launcher/src/controller/server_controller.dart';
import 'package:reboot_launcher/src/controller/warning_controller.dart'; import 'package:reboot_launcher/src/controller/warning_controller.dart';
@@ -12,8 +13,10 @@ void main() async {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
await GetStorage.init("game"); await GetStorage.init("game");
await GetStorage.init("server"); await GetStorage.init("server");
await GetStorage.init("update");
Get.put(GameController()); Get.put(GameController());
Get.put(ServerController()); Get.put(ServerController());
Get.put(BuildController());
Get.put(WarningController()); Get.put(WarningController());
SystemTheme.accentColor.load(); SystemTheme.accentColor.load();
doWhenWindowReady(() { doWhenWindowReady(() {

View File

@@ -4,6 +4,8 @@ import 'package:reboot_launcher/src/page/launcher_page.dart';
import 'package:reboot_launcher/src/page/server_page.dart'; import 'package:reboot_launcher/src/page/server_page.dart';
import 'package:reboot_launcher/src/widget/window_buttons.dart'; import 'package:reboot_launcher/src/widget/window_buttons.dart';
import '../util/reboot.dart';
class HomePage extends StatefulWidget { class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key); const HomePage({Key? key}) : super(key: key);
@@ -13,8 +15,15 @@ class HomePage extends StatefulWidget {
class _HomePageState extends State<HomePage> { class _HomePageState extends State<HomePage> {
final List<Widget> _children = [LauncherPage(), ServerPage(), const InfoPage()]; final List<Widget> _children = [LauncherPage(), ServerPage(), const InfoPage()];
late final Future _future;
int _index = 0; int _index = 0;
@override
void initState() {
_future = downloadRebootDll();
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return NavigationView( return NavigationView(
@@ -29,9 +38,25 @@ class _HomePageState extends State<HomePage> {
_createPane("Info", FluentIcons.info), _createPane("Info", FluentIcons.info),
], ],
trailing: const WindowTitleBar()), trailing: const WindowTitleBar()),
content: NavigationBody( content: FutureBuilder(
index: _index, future: _future,
children: _children builder: (context, snapshot) {
if (snapshot.hasError) {
return Center(
child: Text(
"An error occurred while loading the launcher: ${snapshot.error}",
textAlign: TextAlign.center));
}
if (!snapshot.hasData) {
return const Center(child: ProgressRing());
}
return NavigationBody(
index: _index,
children: _children
);
}
) )
); );
} }

View File

@@ -1,6 +1,7 @@
import 'dart:io'; import 'dart:io';
import 'package:archive/archive_io.dart'; import 'package:archive/archive_io.dart';
import 'package:get_storage/get_storage.dart';
import 'package:reboot_launcher/src/util/binary.dart'; import 'package:reboot_launcher/src/util/binary.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
@@ -8,16 +9,17 @@ import 'package:shared_preferences/shared_preferences.dart';
const _rebootUrl = const _rebootUrl =
"https://nightly.link/UWUFN/Universal-Walking-Simulator/workflows/msbuild/master/Release.zip"; "https://nightly.link/UWUFN/Universal-Walking-Simulator/workflows/msbuild/master/Release.zip";
final GetStorage _storage = GetStorage("update");
Future<DateTime?> _getLastUpdate(SharedPreferences preferences) async { Future<DateTime?> _getLastUpdate() async {
var timeInMillis = preferences.getInt("last_update"); int? timeInMillis = _storage.read("last_update");
return timeInMillis != null ? DateTime.fromMillisecondsSinceEpoch(timeInMillis) : null; return timeInMillis != null ? DateTime.fromMillisecondsSinceEpoch(timeInMillis) : null;
} }
Future<File> downloadRebootDll(SharedPreferences preferences) async { Future<File> downloadRebootDll() async {
var now = DateTime.now(); var now = DateTime.now();
var oldRebootDll = await loadBinary("reboot.dll", true); var oldRebootDll = await loadBinary("reboot.dll", true);
var lastUpdate = await _getLastUpdate(preferences); var lastUpdate = await _getLastUpdate();
var exists = await oldRebootDll.exists(); var exists = await oldRebootDll.exists();
if(lastUpdate != null && now.difference(lastUpdate).inHours <= 24 && exists){ if(lastUpdate != null && now.difference(lastUpdate).inHours <= 24 && exists){
return oldRebootDll; return oldRebootDll;
@@ -34,7 +36,7 @@ Future<File> downloadRebootDll(SharedPreferences preferences) async {
throw Exception("Missing reboot dll"); throw Exception("Missing reboot dll");
} }
preferences.setInt("last_update", now.millisecondsSinceEpoch); _storage.write("last_update", now.millisecondsSinceEpoch);
if (exists && sha1.convert(await oldRebootDll.readAsBytes()) == sha1.convert(await rebootDll.readAsBytes())) { if (exists && sha1.convert(await oldRebootDll.readAsBytes()) == sha1.convert(await rebootDll.readAsBytes())) {
rebootDll.delete(); rebootDll.delete();
return oldRebootDll; return oldRebootDll;