feat: Add a button to delete all cookies #174

This commit is contained in:
kodjomoustapha 2024-05-09 18:06:46 +01:00
parent cddf7af7de
commit cbd4519d08
3 changed files with 42 additions and 0 deletions

View file

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:isar/isar.dart';
import 'package:mangayomi/eval/dart/model/m_bridge.dart';
import 'package:mangayomi/eval/dart/model/source_preference.dart';
import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/source.dart';
@ -9,6 +10,7 @@ import 'package:mangayomi/modules/browse/extension/providers/extension_preferenc
import 'package:mangayomi/modules/browse/extension/widgets/source_preference_widget.dart';
import 'package:mangayomi/providers/l10n_providers.dart';
import 'package:mangayomi/services/get_source_preference.dart';
import 'package:mangayomi/services/http/m_client.dart';
import 'package:mangayomi/sources/source_test.dart';
import 'package:mangayomi/utils/cached_network.dart';
import 'package:mangayomi/utils/extensions/build_context_extensions.dart';
@ -170,6 +172,32 @@ class _ExtensionDetailState extends ConsumerState<ExtensionDetail> {
)),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: SizedBox(
width: context.width(1),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
padding: const EdgeInsets.all(0),
backgroundColor: Colors.transparent,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5)),
elevation: 0,
shadowColor: Colors.transparent),
onPressed: () async {
MClient.deleteAllCookies(source.baseUrl ?? "");
botToast("Cookies deleted!");
},
child: const Padding(
padding: EdgeInsets.symmetric(horizontal: 10),
child: Text(
"Delete all cookies",
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.bold),
),
)),
),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: SizedBox(

View file

@ -201,6 +201,7 @@ class _MangaWebViewState extends ConsumerState<MangaWebView> {
url: Uri.parse(_url));
} else if (value == 3) {
CookieManager.instance().deleteAllCookies();
MClient.deleteAllCookies(_url);
}
}),
],

View file

@ -95,6 +95,19 @@ class MClient {
isar.writeTxnSync(() => isar.settings.putSync(settings!..userAgent = ua));
}
}
static void deleteAllCookies(String url) {
final cookiesList = isar.settings.getSync(227)!.cookiesList ?? [];
List<MCookie>? cookieList = [];
for (var cookie in cookiesList) {
if (!(cookie.host == Uri.parse(url).host ||
Uri.parse(url).host.contains(cookie.host!))) {
cookieList.add(cookie);
}
}
isar.writeTxnSync(() => isar.settings
.putSync(isar.settings.getSync(227)!..cookiesList = cookieList));
}
}
class MCookieManager extends InterceptorContract {