Skip to content
This repository has been archived by the owner on Dec 31, 2024. It is now read-only.

Commit

Permalink
♻️ Refactoring code.
Browse files Browse the repository at this point in the history
  • Loading branch information
uiYzzi committed Feb 18, 2024
1 parent 0bf669e commit 5bec2be
Show file tree
Hide file tree
Showing 8 changed files with 47 additions and 64 deletions.
12 changes: 4 additions & 8 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ import 'package:flutter_single_instance/flutter_single_instance.dart';
import 'package:yolx/common/const.dart';
import 'package:yolx/common/global.dart';
import 'package:yolx/generated/l10n.dart';
import 'package:yolx/model/downloading_list_model.dart';
import 'package:yolx/model/stopped_list_model.dart';
import 'package:yolx/model/waiting_list_model.dart';
import 'package:yolx/model/download_list_model.dart';
import 'package:yolx/screens/downloading.dart';
import 'package:yolx/screens/waiting.dart';
import 'package:yolx/screens/stopped.dart';
Expand Down Expand Up @@ -88,9 +86,7 @@ void main() async {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => DownloadingListModel()),
ChangeNotifierProvider(create: (context) => WaitingListModel()),
ChangeNotifierProvider(create: (context) => StoppedListModel()),
ChangeNotifierProvider(create: (context) => DownloadListModel()),
],
child: const MyApp(),
),
Expand Down Expand Up @@ -240,7 +236,7 @@ class _MyHomePageState extends State<MyHomePage>
void initState() {
windowManager.addListener(this);
trayManager.addListener(this);
Provider.of<StoppedListModel>(context, listen: false)
Provider.of<DownloadListModel>(context, listen: false)
.loadHistoryListFromJson();
super.initState();
}
Expand Down Expand Up @@ -368,7 +364,7 @@ class _MyHomePageState extends State<MyHomePage>
child: Text(S.of(context).yes),
onPressed: () async {
Navigator.pop(context);
Provider.of<StoppedListModel>(context, listen: false)
Provider.of<DownloadListModel>(context, listen: false)
.saveHistoryListToJson();
if (Global.rememberWindowSize) {
await windowManager.getSize().then((size) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,17 @@ import 'package:yolx/model/download_item.dart';
import 'package:yolx/utils/file_utils.dart';
import 'package:yolx/utils/log.dart';

class StoppedListModel extends ChangeNotifier {
List<DownloadItem> _downloadList = [];
class DownloadListModel extends ChangeNotifier {
List<DownloadItem> _downloadingList = [];
List<DownloadItem> _waitingList = [];
List<DownloadItem> _stoppedList = [];
List<DownloadItem> _historyList = [];

List<DownloadItem> get downloadList {
List<DownloadItem> combinedList = List<DownloadItem>.from(_downloadList);
List<String> downloadGids = _downloadList.map((item) => item.gid).toList();
List<DownloadItem> get downloadingList => _downloadingList;
List<DownloadItem> get waitingList => _waitingList;
List<DownloadItem> get stoppedList {
List<DownloadItem> combinedList = List<DownloadItem>.from(_stoppedList);
List<String> downloadGids = _stoppedList.map((item) => item.gid).toList();
List<DownloadItem> uniqueHistoryItems =
_historyList.where((item) => !downloadGids.contains(item.gid)).toList();
combinedList.addAll(uniqueHistoryItems);
Expand Down Expand Up @@ -54,7 +58,7 @@ class StoppedListModel extends ChangeNotifier {

void updateHistoryList() {
var completedItems =
_downloadList.where((item) => item.status == "complete").toList();
_stoppedList.where((item) => item.status == "complete").toList();
for (var item in completedItems) {
item.status = "history";
}
Expand All @@ -64,13 +68,23 @@ class StoppedListModel extends ChangeNotifier {
0, completedItems.where((item) => !historyIds.contains(item.gid)));
}

void updateDownloadList(List<DownloadItem> newList) {
if (_downloadList.length != newList.length) {
_downloadList = newList;
void updateStoppedList(List<DownloadItem> newList) {
if (_stoppedList.length != newList.length) {
_stoppedList = newList;
saveHistoryListToJson();
} else {
_downloadList = newList;
_stoppedList = newList;
}
notifyListeners();
}

void updateDownloadingList(List<DownloadItem> newList) {
_downloadingList = newList;
notifyListeners();
}

void updateWaitingList(List<DownloadItem> newList) {
_waitingList = newList;
notifyListeners();
}
}
13 changes: 0 additions & 13 deletions lib/model/downloading_list_model.dart

This file was deleted.

13 changes: 0 additions & 13 deletions lib/model/waiting_list_model.dart

This file was deleted.

17 changes: 8 additions & 9 deletions lib/screens/downloading.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@ import 'package:provider/provider.dart';
import 'package:yolx/common/global.dart';
import 'package:yolx/generated/l10n.dart';
import 'package:yolx/model/download_item.dart';
import 'package:yolx/model/downloading_list_model.dart';
import 'package:yolx/model/stopped_list_model.dart';
import 'package:yolx/model/download_list_model.dart';
import 'package:yolx/utils/common_utils.dart';
import 'package:yolx/widgets/download_file_card.dart';
import 'dart:async';
Expand Down Expand Up @@ -45,20 +44,20 @@ class _DownloadingPageState extends State<DownloadingPage> with PageMixin {
if (mounted) {
var downloadListModel =
// ignore: use_build_context_synchronously
Provider.of<DownloadingListModel>(context, listen: false);
Provider.of<DownloadListModel>(context, listen: false);
List<DownloadItem> downloadList = parseDownloadList(res);
if (downloadList.length == downloadListModel.downloadList.length) {
downloadListModel.updateDownloadList(parseDownloadList(res));
if (downloadList.length == downloadListModel.downloadingList.length) {
downloadListModel.updateDownloadingList(parseDownloadList(res));
} else {
downloadListModel.updateDownloadList(parseDownloadList(res));
downloadListModel.updateDownloadingList(parseDownloadList(res));
var stoppedRes = await Aria2Http.tellStopped(Global.rpcUrl);
if (stoppedRes == null) {
return;
}
var stoppedListModel =
// ignore: use_build_context_synchronously
Provider.of<StoppedListModel>(context, listen: false);
stoppedListModel.updateDownloadList(parseDownloadList(stoppedRes));
Provider.of<DownloadListModel>(context, listen: false);
stoppedListModel.updateStoppedList(parseDownloadList(stoppedRes));
}
}
}
Expand All @@ -81,7 +80,7 @@ class _DownloadingPageState extends State<DownloadingPage> with PageMixin {
@override
Widget build(BuildContext context) {
assert(debugCheckHasFluentTheme(context));
var downloadList = Provider.of<DownloadingListModel>(context).downloadList;
var downloadList = Provider.of<DownloadListModel>(context).downloadingList;
return Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
Expand Down
10 changes: 5 additions & 5 deletions lib/screens/stopped.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:fluent_ui/fluent_ui.dart';
import 'package:provider/provider.dart';
import 'package:yolx/common/global.dart';
import 'package:yolx/generated/l10n.dart';
import 'package:yolx/model/stopped_list_model.dart';
import 'package:yolx/model/download_list_model.dart';
import 'package:yolx/utils/common_utils.dart';
import 'package:yolx/widgets/download_file_card.dart';
import 'dart:async';
Expand Down Expand Up @@ -34,8 +34,8 @@ class _StoppedPageState extends State<StoppedPage> with PageMixin {
if (mounted) {
var downloadListModel =
// ignore: use_build_context_synchronously
Provider.of<StoppedListModel>(context, listen: false);
downloadListModel.updateDownloadList(parseDownloadList(res));
Provider.of<DownloadListModel>(context, listen: false);
downloadListModel.updateStoppedList(parseDownloadList(res));
}
}

Expand All @@ -57,8 +57,8 @@ class _StoppedPageState extends State<StoppedPage> with PageMixin {
@override
Widget build(BuildContext context) {
assert(debugCheckHasFluentTheme(context));
var downloadListModel = Provider.of<StoppedListModel>(context);
var downloadList = downloadListModel.downloadList;
var downloadListModel = Provider.of<DownloadListModel>(context);
var downloadList = downloadListModel.stoppedList;
return Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
Expand Down
8 changes: 4 additions & 4 deletions lib/screens/waiting.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:fluent_ui/fluent_ui.dart';
import 'package:provider/provider.dart';
import 'package:yolx/common/global.dart';
import 'package:yolx/generated/l10n.dart';
import 'package:yolx/model/waiting_list_model.dart';
import 'package:yolx/model/download_list_model.dart';
import 'package:yolx/utils/common_utils.dart';
import 'package:yolx/widgets/download_file_card.dart';
import 'dart:async';
Expand Down Expand Up @@ -34,8 +34,8 @@ class _WaitingPageState extends State<WaitingPage> with PageMixin {
if (mounted) {
var downloadListModel =
// ignore: use_build_context_synchronously
Provider.of<WaitingListModel>(context, listen: false);
downloadListModel.updateDownloadList(parseDownloadList(res));
Provider.of<DownloadListModel>(context, listen: false);
downloadListModel.updateWaitingList(parseDownloadList(res));
}
}

Expand All @@ -57,7 +57,7 @@ class _WaitingPageState extends State<WaitingPage> with PageMixin {
@override
Widget build(BuildContext context) {
assert(debugCheckHasFluentTheme(context));
var downloadList = Provider.of<WaitingListModel>(context).downloadList;
var downloadList = Provider.of<DownloadListModel>(context).waitingList;
return Padding(
padding: const EdgeInsets.all(24.0),
child: Column(
Expand Down
4 changes: 2 additions & 2 deletions lib/widgets/download_file_card.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:url_launcher/url_launcher.dart';
import 'package:yolx/common/global.dart';
import 'package:yolx/generated/l10n.dart';
import 'package:yolx/model/download_item.dart';
import 'package:yolx/model/stopped_list_model.dart';
import 'package:yolx/model/download_list_model.dart';
import 'package:yolx/utils/common_utils.dart';
import 'package:path/path.dart' as path;
// ignore: library_prefixes
Expand Down Expand Up @@ -53,7 +53,7 @@ class DownloadFileCard extends StatelessWidget {
downloadFile.status == "active") {
await Aria2Http.forceRemove(Global.rpcUrl, downloadFile.gid);
} else if (downloadFile.status == "history") {
Provider.of<StoppedListModel>(context, listen: false)
Provider.of<DownloadListModel>(context, listen: false)
.removeFromHistoryList(downloadFile.gid);
} else {
await Aria2Http.removeDownloadResult(
Expand Down

0 comments on commit 5bec2be

Please sign in to comment.