Skip to content

Commit 0a59a32

Browse files
committed
10.0.2
1 parent 2046cb1 commit 0a59a32

File tree

5 files changed

+56
-25
lines changed

5 files changed

+56
-25
lines changed

common/lib/src/util/build.dart

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -134,17 +134,13 @@ Future<void> downloadArchiveBuild(FortniteBuildDownloadOptions options) async {
134134
}
135135

136136
Future<void> _startAriaServer() async {
137-
final running = await _isAriaRunning();
138-
if(running) {
139-
await killProcessByPort(_ariaPort);
140-
}
141-
137+
await stopDownloadServer();
142138
final aria2c = File("${assetsDirectory.path}\\build\\aria2c.exe");
143139
if(!aria2c.existsSync()) {
144140
throw "Missing aria2c.exe";
145141
}
146142

147-
await startProcess(
143+
final process = await startProcess(
148144
executable: aria2c,
149145
args: [
150146
"--max-connection-per-server=${Platform.numberOfProcessors}",
@@ -153,10 +149,14 @@ Future<void> _startAriaServer() async {
153149
"--rpc-listen-all=true",
154150
"--rpc-allow-origin-all",
155151
"--rpc-secret=$_ariaSecret",
156-
"--rpc-listen-port=$_ariaPort"
152+
"--rpc-listen-port=$_ariaPort",
153+
"--file-allocation=none"
157154
],
158-
window: false
155+
window: false
159156
);
157+
process.stdOutput.listen((message) => log("[ARIA] Message: $message"));
158+
process.stdError.listen((error) => log("[ARIA] Error: $error"));
159+
process.exitCode.then((exitCode) => log("[ARIA] Exit code: $exitCode"));
160160
for(var i = 0; i < _ariaMaxSpawnTime.inSeconds; i++) {
161161
if(await _isAriaRunning()) {
162162
return;
@@ -177,8 +177,8 @@ Future<bool> _isAriaRunning() async {
177177
"token:${_ariaSecret}"
178178
]
179179
};
180-
await http.post(_ariaEndpoint, body: jsonEncode(statusRequest));
181-
return true;
180+
final response = await http.post(_ariaEndpoint, body: jsonEncode(statusRequest));
181+
return response.statusCode == 200;
182182
}catch(_) {
183183
return false;
184184
}
@@ -227,11 +227,16 @@ Future<void> _stopAriaDownload(String downloadId) async {
227227
]
228228
};
229229
await http.post(_ariaEndpoint, body: jsonEncode(addDownloadRequest));
230+
stopDownloadServer();
230231
}catch(error) {
231232
throw "Stop failed (${error})";
232233
}
233234
}
234235

236+
Future<void> stopDownloadServer() async {
237+
await killProcessByPort(_ariaPort);
238+
}
239+
235240

236241
Future<void> _extractArchive(Completer<dynamic> stopped, String extension, File tempFile, FortniteBuildDownloadOptions options) async {
237242
Process? process;

gui/lib/l10n/reboot_en.arb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,6 @@
216216
"downloadedVersion": "The download was completed successfully!",
217217
"download": "Download",
218218
"downloading": "Downloading...",
219-
"allocatingSpace": "Allocating disk space...",
220219
"startingDownload": "Starting download...",
221220
"extracting": "Extracting...",
222221
"buildProgress": "{progress}%",

gui/lib/src/messenger/implementation/version.dart

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,12 @@ class _AddVersionDialogState extends State<AddVersionDialog> {
244244
),
245245
),
246246

247-
if(_progress.value != null && !_isAllocatingDiskSpace)
247+
if(_progress.value != null)
248248
const SizedBox(
249249
height: 8.0,
250250
),
251251

252-
if(_progress.value != null && !_isAllocatingDiskSpace)
252+
if(_progress.value != null)
253253
Row(
254254
mainAxisAlignment: MainAxisAlignment.spaceBetween,
255255
children: [
@@ -272,7 +272,7 @@ class _AddVersionDialogState extends State<AddVersionDialog> {
272272

273273
SizedBox(
274274
width: double.infinity,
275-
child: ProgressBar(value: _isAllocatingDiskSpace ? null : _progress.value?.toDouble())
275+
child: ProgressBar(value: _progress.value?.toDouble())
276276
),
277277

278278
const SizedBox(
@@ -291,15 +291,9 @@ class _AddVersionDialogState extends State<AddVersionDialog> {
291291
return translations.startingDownload;
292292
}
293293

294-
if (_speed.value == 0) {
295-
return translations.allocatingSpace;
296-
}
297-
298294
return translations.downloading;
299295
}
300296

301-
bool get _isAllocatingDiskSpace => _status.value == _DownloadStatus.downloading && _speed.value == 0;
302-
303297
Widget _buildFormBody(List<FortniteBuild> builds) {
304298
return Column(
305299
mainAxisSize: MainAxisSize.min,

gui/lib/src/page/implementation/home_page.dart

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import 'package:get/get.dart';
1010
import 'package:reboot_common/common.dart';
1111
import 'package:reboot_launcher/src/controller/backend_controller.dart';
1212
import 'package:reboot_launcher/src/controller/dll_controller.dart';
13+
import 'package:reboot_launcher/src/controller/game_controller.dart';
1314
import 'package:reboot_launcher/src/controller/hosting_controller.dart';
1415
import 'package:reboot_launcher/src/controller/settings_controller.dart';
1516
import 'package:reboot_launcher/src/messenger/abstract/dialog.dart';
@@ -43,6 +44,7 @@ class HomePage extends StatefulWidget {
4344

4445
class _HomePageState extends State<HomePage> with WindowListener, AutomaticKeepAliveClientMixin {
4546
final BackendController _backendController = Get.find<BackendController>();
47+
final GameController _gameController = Get.find<GameController>();
4648
final HostingController _hostingController = Get.find<HostingController>();
4749
final SettingsController _settingsController = Get.find<SettingsController>();
4850
final DllController _dllController = Get.find<DllController>();
@@ -160,14 +162,45 @@ class _HomePageState extends State<HomePage> with WindowListener, AutomaticKeepA
160162

161163
@override
162164
void onWindowClose() async {
165+
try {
166+
await windowManager.hide();
167+
}catch(error) {
168+
log("[WINDOW] Cannot hide window: $error");
169+
}
170+
163171
try {
164172
await _hostingController.discardServer();
165173
}catch(error) {
166-
log("[HOSTING] Cannot discard server: $error");
167-
}finally {
168-
// Force closing because the backend might be running, but we want the process to exit
169-
exit(0);
174+
log("[HOSTING] Cannot discard server on exit: $error");
175+
}
176+
177+
try {
178+
if(_backendController.started.value) {
179+
await _backendController.toggleInteractive();
180+
}
181+
}catch(error) {
182+
log("[BACKEND] Cannot stop backend on exit: $error");
183+
}
184+
185+
try {
186+
_gameController.instance.value?.kill();
187+
}catch(error) {
188+
log("[GAME] Cannot stop game on exit: $error");
189+
}
190+
191+
try {
192+
_hostingController.instance.value?.kill();
193+
}catch(error) {
194+
log("[HOST] Cannot stop host on exit: $error");
170195
}
196+
197+
try {
198+
await stopDownloadServer();
199+
}catch(error) {
200+
log("[ARIA] Cannot stop aria server on exit: $error");
201+
}
202+
203+
exit(0);
171204
}
172205

173206
@override

gui/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: reboot_launcher
22
description: Graphical User Interface for Project Reboot
3-
version: "10.0.1"
3+
version: "10.0.2"
44

55
publish_to: 'none'
66

0 commit comments

Comments
 (0)