2024-06-19 13:13:31 +08:00
|
|
|
// ignore_for_file: invalid_annotation_target
|
|
|
|
|
|
2024-04-30 23:38:49 +08:00
|
|
|
import 'package:fl_clash/enum/enum.dart';
|
2024-06-19 13:13:31 +08:00
|
|
|
import 'package:freezed_annotation/freezed_annotation.dart';
|
2024-04-30 23:38:49 +08:00
|
|
|
|
|
|
|
|
part 'generated/log.g.dart';
|
|
|
|
|
|
2024-06-19 13:13:31 +08:00
|
|
|
part 'generated/log.freezed.dart';
|
|
|
|
|
|
2024-04-30 23:38:49 +08:00
|
|
|
@JsonSerializable()
|
|
|
|
|
class Log {
|
|
|
|
|
@JsonKey(name: "LogLevel")
|
|
|
|
|
LogLevel logLevel;
|
|
|
|
|
@JsonKey(name: "Payload")
|
|
|
|
|
String? payload;
|
|
|
|
|
DateTime _dateTime;
|
|
|
|
|
|
|
|
|
|
Log({
|
|
|
|
|
required this.logLevel,
|
|
|
|
|
this.payload,
|
|
|
|
|
}) : _dateTime = DateTime.now();
|
|
|
|
|
|
|
|
|
|
DateTime get dateTime => _dateTime;
|
|
|
|
|
|
|
|
|
|
factory Log.fromJson(Map<String, dynamic> json) {
|
|
|
|
|
return _$LogFromJson(json);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Map<String, dynamic> toJson() {
|
|
|
|
|
return _$LogToJson(this);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
String toString() {
|
|
|
|
|
return 'Log{logLevel: $logLevel, payload: $payload, dateTime: $dateTime}';
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-06-19 13:13:31 +08:00
|
|
|
|
|
|
|
|
@freezed
|
|
|
|
|
class LogsAndKeywords with _$LogsAndKeywords {
|
|
|
|
|
const factory LogsAndKeywords({
|
|
|
|
|
@Default([]) List<Log> logs,
|
|
|
|
|
@Default([]) List<String> keywords,
|
|
|
|
|
}) = _LogsAndKeywords;
|
|
|
|
|
|
|
|
|
|
factory LogsAndKeywords.fromJson(Map<String, Object?> json) =>
|
|
|
|
|
_$LogsAndKeywordsFromJson(json);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extension LogsAndKeywordsExt on LogsAndKeywords {
|
|
|
|
|
List<Log> get filteredLogs => logs
|
|
|
|
|
.where(
|
|
|
|
|
(log) => {log.logLevel.name}.containsAll(keywords),
|
|
|
|
|
)
|
|
|
|
|
.toList();
|
|
|
|
|
}
|