mirror of
https://github.com/Auties00/Reboot-Launcher.git
synced 2026-01-13 11:12:23 +01:00
finished migration
This commit is contained in:
@@ -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(() {
|
||||||
|
|||||||
@@ -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
|
||||||
|
);
|
||||||
|
}
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user