From 7caad393c28a08f4f3052d942b7e6534d4bd563b Mon Sep 17 00:00:00 2001 From: niuhuan Date: Mon, 8 Nov 2021 13:38:27 +0800 Subject: [PATCH] clean cache by type --- go/main/controller/pikapi.go | 26 +++++++++++++ lib/basic/Method.dart | 10 +++++ lib/screens/CleanScreen.dart | 75 +++++++++++++++++++++++------------- 3 files changed, 85 insertions(+), 26 deletions(-) diff --git a/go/main/controller/pikapi.go b/go/main/controller/pikapi.go index 4e937f6..ae9ec0c 100644 --- a/go/main/controller/pikapi.go +++ b/go/main/controller/pikapi.go @@ -388,6 +388,28 @@ func setDownloadRunning(status bool) { downloadRunning = status } +func cleanNetworkCache() error { + err := network_cache.RemoveAll() + if err != nil { + return err + } + notifyExport("清理结束") + return nil +} + +func cleanImageCache() error { + notifyExport("清理图片缓存") + err := comic_center.RemoveAllRemoteImage() + if err != nil { + return err + } + notifyExport("清理图片文件") + os.RemoveAll(remoteDir) + utils.Mkdir(remoteDir) + notifyExport("清理结束") + return nil +} + func clean() error { var err error notifyExport("清理网络缓存") @@ -571,6 +593,10 @@ func FlatInvoke(method string, params string) (string, error) { case "deleteViewLog": comic_center.DeleteViewLog(params) return "", nil + case "cleanNetworkCache": + return "", cleanNetworkCache() + case "cleanImageCache": + return "", cleanImageCache() case "clean": return "", clean() case "autoClean": diff --git a/lib/basic/Method.dart b/lib/basic/Method.dart index d891d0b..24bc9ee 100644 --- a/lib/basic/Method.dart +++ b/lib/basic/Method.dart @@ -360,6 +360,16 @@ class Method { return GameInfo.fromJson(json.decode(data)); } + /// 清理网络缓存 + Future cleanNetworkCache() { + return _flatInvoke("cleanNetworkCache", ""); + } + + /// 清理图片缓存 + Future cleanImageCache() { + return _flatInvoke("cleanImageCache", ""); + } + /// 清理缓存 Future clean() { return _flatInvoke("clean", ""); diff --git a/lib/screens/CleanScreen.dart b/lib/screens/CleanScreen.dart index bc9543a..a4c4699 100644 --- a/lib/screens/CleanScreen.dart +++ b/lib/screens/CleanScreen.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:pikapi/basic/Channels.dart'; import 'package:pikapi/basic/Method.dart'; +import 'package:pikapi/screens/components/FitButton.dart'; import 'components/ContentLoading.dart'; // 清理 @@ -47,37 +48,59 @@ class _CleanScreenState extends State { ), body: ListView( children: [ - MaterialButton( - onPressed: () async { - try { - setState(() { - _cleaning = true; - }); - await method.clean(); - setState(() { - _cleanResult = "清理成功"; - }); - } catch (e) { - setState(() { - _cleanResult = "清理失败 $e"; - }); - } finally { - setState(() { - _cleaning = false; - }); - } - }, - child: Container( - padding: EdgeInsets.all(20), - child: Text('清理'), - ), - ), Container( padding: EdgeInsets.all(8), child: _cleanResult != "" ? Text(_cleanResult) : Container(), - ) + ), + Container( + height: 50, + child: FitButton( + text: '清理网络缓存', + onPressed: () { + processCleanAction(method.cleanNetworkCache); + }, + ), + ), + Container( + height: 50, + child: FitButton( + text: '清理图片缓存', + onPressed: () { + processCleanAction(method.cleanImageCache); + }, + ), + ), + Container( + height: 50, + child: FitButton( + text: '清理全部缓存', + onPressed: () { + processCleanAction(method.clean); + }, + ), + ), ], ), ); } + + Future processCleanAction(Future Function() action) async { + try { + setState(() { + _cleaning = true; + }); + await action(); + setState(() { + _cleanResult = "清理成功"; + }); + } catch (e) { + setState(() { + _cleanResult = "清理失败 $e"; + }); + } finally { + setState(() { + _cleaning = false; + }); + } + } }