mangayomi/lib/services/cloudflare/cookie.dart
kodjomoustapha 64b1f91dce Refactor
2024-01-06 12:52:18 +01:00

49 lines
1.4 KiB
Dart

import 'package:mangayomi/main.dart';
import 'package:mangayomi/models/settings.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'
as flutter_inappwebview;
class CookieState {
String? idSource;
CookieState({required String idSource});
String get() {
final cookiesList = isar.settings.getSync(227)!.cookiesList ?? [];
return cookiesList
.firstWhere(
(element) => element.idSource == idSource,
orElse: () => Cookie(cookie: ""),
)
.cookie!;
}
void set(String newCookie, String ua) {
final settings = isar.settings.getSync(227);
List<Cookie>? cookieList = [];
for (var cookie in settings!.cookiesList ?? []) {
if (cookie.idSource != idSource) {
cookieList.add(cookie);
}
}
cookieList.add(Cookie()
..idSource = idSource
..cookie = newCookie);
isar.writeTxnSync(() => isar.settings.putSync(settings
..cookiesList = cookieList
..userAgent = ua));
}
}
Future<void> addCookie(String sourceId, String url, String ua) async {
flutter_inappwebview.CookieManager cookieManager =
flutter_inappwebview.CookieManager.instance();
final cookie = (await cookieManager.getCookie(
url: Uri.parse(url), name: "cf_clearance"));
if (cookie != null) {
final newCookie = "${cookie.name}=${cookie.value}";
CookieState(idSource: sourceId).set(newCookie, ua);
}
}