Skip to content

Commit fc45a69

Browse files
committed
feat: cookie manager
1 parent cef29c9 commit fc45a69

22 files changed

+347
-100
lines changed

assets/i18n/en.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,13 @@
145145
"title": "Extension Info"
146146
},
147147

148+
"cookie-clean": {
149+
"title": "Cookie Clean",
150+
"subtitle": "You may need to log in again after the cleanup",
151+
"success": "Clean success",
152+
"clean": "Clean"
153+
},
154+
148155
"tmdb": {
149156
"backdrops": "Backdrops",
150157
"status": "Status",

assets/i18n/zh.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,13 @@
151151
"title": "扩展详情"
152152
},
153153

154+
"cookie-clean": {
155+
"title": "清除 Cookie",
156+
"subtitle": "清理后可能需要重新登录",
157+
"success": "清除成功",
158+
"clean": "清除"
159+
},
160+
154161
"tmdb": {
155162
"backdrops": "剧照",
156163
"status": "状态",

lib/main.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import 'dart:convert';
22
import 'dart:io';
33
import 'package:desktop_multi_window/desktop_multi_window.dart';
4+
import 'package:desktop_webview_window/desktop_webview_window.dart';
45
import 'package:fluent_ui/fluent_ui.dart' as fluent;
56
import 'package:flutter/material.dart';
67
import 'package:flutter/services.dart';
8+
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
79
import 'package:get/get.dart';
810
import 'package:media_kit/media_kit.dart';
911
import 'package:miru_app/pages/extension_log/view.dart';
@@ -19,6 +21,10 @@ import 'package:window_manager/window_manager.dart';
1921
void main(List<String> args) async {
2022
WidgetsFlutterBinding.ensureInitialized();
2123

24+
if (runWebViewTitleBarWidget(args)) {
25+
return;
26+
}
27+
2228
// 多窗口
2329
if (args.firstOrNull == 'multi_window') {
2430
final windowId = int.parse(args[1]);
@@ -62,6 +68,7 @@ void main(List<String> args) async {
6268
statusBarIconBrightness: Brightness.dark,
6369
);
6470
SystemChrome.setSystemUIOverlayStyle(style);
71+
await AndroidInAppWebViewController.setWebContentsDebuggingEnabled(true);
6572
}
6673
runApp(const MainApp());
6774
}

lib/models/extension_setting.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ enum ExtensionSettingType {
1515
class ExtensionSetting {
1616
Id id = Isar.autoIncrement;
1717

18-
@Index(composite: [CompositeIndex('key')], unique: true)
18+
@Index(name: 'package&key', composite: [CompositeIndex('key')], unique: true)
1919
late String package;
2020
// 标题
2121
late String title;

lib/models/extension_setting.g.dart

Lines changed: 25 additions & 25 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/models/history.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ part 'history.g.dart';
66
@collection
77
class History {
88
Id id = Isar.autoIncrement;
9-
@Index(composite: [CompositeIndex('url')])
9+
@Index(name: 'package&url', composite: [CompositeIndex('url')])
1010
late String package;
1111
late String url;
1212
// 截图,保存封面地址

lib/models/history.g.dart

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/pages/detail/controller.dart

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import 'dart:convert';
22

3+
import 'package:desktop_webview_window/desktop_webview_window.dart';
34
import 'package:fluent_ui/fluent_ui.dart' as fluent;
45
import 'package:flutter/material.dart';
56
import 'package:flutter_i18n/flutter_i18n.dart';
67
import 'package:get/get.dart';
78
import 'package:miru_app/api/tmdb.dart';
89
import 'package:miru_app/models/index.dart';
910
import 'package:miru_app/pages/home/controller.dart';
11+
import 'package:miru_app/pages/main/controller.dart';
1012
import 'package:miru_app/pages/watch/view.dart';
1113
import 'package:miru_app/router/router.dart';
1214
import 'package:miru_app/utils/database.dart';
@@ -61,6 +63,28 @@ class DetailPageController extends GetxController {
6163
@override
6264
void onInit() {
6365
onRefresh();
66+
Get.find<MainController>().setAcitons([
67+
fluent.IconButton(
68+
icon: const Icon(fluent.FluentIcons.pop_expand),
69+
onPressed: () async {
70+
final webview = await WebviewWindow.create(
71+
configuration: CreateConfiguration(
72+
title: detail!.title,
73+
));
74+
webview
75+
..addOnUrlRequestCallback((url) async {
76+
if (Uri.parse(url).host != Uri.parse(extension!.webSite).host) {
77+
return;
78+
}
79+
final cookies = await webview.evaluateJavaScript(
80+
'document.cookie',
81+
);
82+
runtime.value?.setCookie(cookies!.split("\"")[1]);
83+
})
84+
..launch(extension!.webSite + url);
85+
},
86+
)
87+
]);
6488
super.onInit();
6589
}
6690

@@ -247,6 +271,7 @@ class DetailPageController extends GetxController {
247271
@override
248272
void onClose() {
249273
scrollController.dispose();
274+
Get.find<MainController>().setAcitons([]);
250275
super.onClose();
251276
}
252277
}

0 commit comments

Comments
 (0)