adguard-home-manager/lib/models/filtering.dart

90 lines
2.7 KiB
Dart
Raw Normal View History

2022-10-07 20:48:05 +02:00
import 'dart:convert';
2023-04-06 18:27:57 +02:00
import 'package:adguard_home_manager/constants/enums.dart';
2022-10-07 20:48:05 +02:00
FilteringData filteringFromJson(String str) => FilteringData.fromJson(json.decode(str));
String filteringToJson(FilteringData data) => json.encode(data.toJson());
class Filtering {
2023-04-06 18:27:57 +02:00
LoadStatus loadStatus = LoadStatus.loading;
2022-10-07 20:48:05 +02:00
FilteringData? data;
Filtering({
required this.loadStatus,
this.data
});
}
class FilteringData {
final List<Filter> filters;
final List<Filter> whitelistFilters;
2022-10-07 21:49:50 +02:00
List<String> userRules;
2022-10-10 15:57:47 +02:00
List<String> blockedServices;
2022-10-10 14:57:42 +02:00
int interval;
bool enabled;
2022-10-07 20:48:05 +02:00
FilteringData({
required this.filters,
required this.whitelistFilters,
required this.userRules,
2022-10-10 15:57:47 +02:00
required this.blockedServices,
2022-10-07 20:48:05 +02:00
required this.interval,
required this.enabled,
});
factory FilteringData.fromJson(Map<String, dynamic> json) => FilteringData(
2022-10-08 00:31:44 +02:00
filters: json["filters"] != null ? List<Filter>.from(json["filters"].map((x) => Filter.fromJson(x))) : [],
whitelistFilters: json["whitelist_filters"] != null ? List<Filter>.from(json["whitelist_filters"].map((x) => Filter.fromJson(x))) : [],
2022-10-10 02:47:50 +02:00
userRules: json["user_rules"] != null ? List<String>.from(json["user_rules"].map((x) => x)).where((i) => i != '').toList() : [],
2022-10-10 15:57:47 +02:00
blockedServices: json["blocked_services"] != null ? List<String>.from(json["blocked_services"].map((x) => x)).where((i) => i != '').toList() : [],
2022-10-07 20:48:05 +02:00
interval: json["interval"],
enabled: json["enabled"],
);
Map<String, dynamic> toJson() => {
"filters": List<dynamic>.from(filters.map((x) => x.toJson())),
"whitelist_filters": List<dynamic>.from(whitelistFilters.map((x) => x.toJson())),
"user_rules": List<dynamic>.from(userRules.map((x) => x)),
2022-10-10 15:57:47 +02:00
"blocked_services": List<dynamic>.from(blockedServices.map((x) => x)),
2022-10-07 20:48:05 +02:00
"interval": interval,
"enabled": enabled,
};
}
class Filter {
final String url;
final String name;
final DateTime? lastUpdated;
final int id;
final int rulesCount;
final bool enabled;
Filter({
required this.url,
required this.name,
required this.lastUpdated,
required this.id,
required this.rulesCount,
required this.enabled,
});
factory Filter.fromJson(Map<String, dynamic> json) => Filter(
url: json["url"],
name: json["name"],
2022-10-18 01:27:52 +02:00
lastUpdated: json["last_updated"] != null && json["last_updated"] != '' ? DateTime.parse(json["last_updated"]) : null,
2022-10-07 20:48:05 +02:00
id: json["id"],
rulesCount: json["rules_count"],
enabled: json["enabled"],
);
Map<String, dynamic> toJson() => {
"url": url,
"name": name,
2022-10-17 01:16:12 +02:00
"last_updated": lastUpdated != null ? lastUpdated!.toIso8601String() : null,
2022-10-07 20:48:05 +02:00
"id": id,
"rules_count": rulesCount,
"enabled": enabled,
};
}