support bang additional triggers

This commit is contained in:
Fabian Freund
2025-09-30 10:59:39 +02:00
parent d278145c5b
commit 7c4662a7be
13 changed files with 1188 additions and 104 deletions
@@ -79,6 +79,10 @@ class Bang with FastEquatable implements Insertable<Bang> {
@JsonKey(name: 'fmt')
final Set<BangFormat>? format;
///Additional triggers that invoke this bang
@JsonKey(name: 'ts')
final Set<String>? additionalTriggers;
String formatQuery(String input) {
return (format == null ||
format!.contains(BangFormat.urlEncodePlaceholder) == true)
@@ -121,6 +125,7 @@ class Bang with FastEquatable implements Insertable<Bang> {
this.category,
this.subCategory,
this.format,
this.additionalTriggers,
});
factory Bang.fromJson(Map<String, dynamic> json) => _$BangFromJson(json);
@@ -137,6 +142,7 @@ class Bang with FastEquatable implements Insertable<Bang> {
category,
subCategory,
format,
additionalTriggers,
];
@override
@@ -150,6 +156,7 @@ class Bang with FastEquatable implements Insertable<Bang> {
category: Value.absentIfNull(category),
subCategory: Value.absentIfNull(subCategory),
format: Value.absentIfNull(format),
additionalTriggers: Value.absentIfNull(additionalTriggers),
).toColumns(nullToAbsent);
}
}
@@ -23,6 +23,8 @@ abstract class _$BangCWProxy {
Bang format(Set<BangFormat>? format);
Bang additionalTriggers(Set<String>? additionalTriggers);
/// Creates a new instance with the provided field values.
/// Passing `null` to a nullable field nullifies it, while `null` for a non-nullable field is ignored. To update a single field use `Bang(...).copyWith.fieldName(value)`.
///
@@ -39,6 +41,7 @@ abstract class _$BangCWProxy {
String? category,
String? subCategory,
Set<BangFormat>? format,
Set<String>? additionalTriggers,
});
}
@@ -73,6 +76,10 @@ class _$BangCWProxyImpl implements _$BangCWProxy {
@override
Bang format(Set<BangFormat>? format) => call(format: format);
@override
Bang additionalTriggers(Set<String>? additionalTriggers) =>
call(additionalTriggers: additionalTriggers);
@override
/// Creates a new instance with the provided field values.
/// Passing `null` to a nullable field nullifies it, while `null` for a non-nullable field is ignored. To update a single field use `Bang(...).copyWith.fieldName(value)`.
@@ -90,6 +97,7 @@ class _$BangCWProxyImpl implements _$BangCWProxy {
Object? category = const $CopyWithPlaceholder(),
Object? subCategory = const $CopyWithPlaceholder(),
Object? format = const $CopyWithPlaceholder(),
Object? additionalTriggers = const $CopyWithPlaceholder(),
}) {
return Bang(
websiteName:
@@ -126,6 +134,10 @@ class _$BangCWProxyImpl implements _$BangCWProxy {
? _value.format
// ignore: cast_nullable_to_non_nullable
: format as Set<BangFormat>?,
additionalTriggers: additionalTriggers == const $CopyWithPlaceholder()
? _value.additionalTriggers
// ignore: cast_nullable_to_non_nullable
: additionalTriggers as Set<String>?,
);
}
}
@@ -151,6 +163,9 @@ Bang _$BangFromJson(Map<String, dynamic> json) => Bang(
format: (json['fmt'] as List<dynamic>?)
?.map((e) => $enumDecode(_$BangFormatEnumMap, e))
.toSet(),
additionalTriggers: (json['ts'] as List<dynamic>?)
?.map((e) => e as String)
.toSet(),
);
Map<String, dynamic> _$BangToJson(Bang instance) => <String, dynamic>{
@@ -161,6 +176,7 @@ Map<String, dynamic> _$BangToJson(Bang instance) => <String, dynamic>{
'c': instance.category,
'sc': instance.subCategory,
'fmt': instance.format?.map((e) => _$BangFormatEnumMap[e]!).toList(),
'ts': instance.additionalTriggers?.toList(),
};
const _$BangFormatEnumMap = {
@@ -44,6 +44,7 @@ class BangData extends Bang {
super.category,
super.subCategory,
super.format,
super.additionalTriggers,
int? frequency,
this.lastUsed,
this.icon,
@@ -58,6 +59,7 @@ class BangData extends Bang {
super.category,
super.subCategory,
super.format,
super.additionalTriggers,
int? frequency,
this.lastUsed,
this.icon,
@@ -21,6 +21,8 @@ abstract class _$BangDataCWProxy {
BangData format(Set<BangFormat>? format);
BangData additionalTriggers(Set<String>? additionalTriggers);
BangData frequency(int? frequency);
BangData lastUsed(DateTime? lastUsed);
@@ -42,6 +44,7 @@ abstract class _$BangDataCWProxy {
String? category,
String? subCategory,
Set<BangFormat>? format,
Set<String>? additionalTriggers,
int? frequency,
DateTime? lastUsed,
BrowserIcon? icon,
@@ -76,6 +79,10 @@ class _$BangDataCWProxyImpl implements _$BangDataCWProxy {
@override
BangData format(Set<BangFormat>? format) => call(format: format);
@override
BangData additionalTriggers(Set<String>? additionalTriggers) =>
call(additionalTriggers: additionalTriggers);
@override
BangData frequency(int? frequency) => call(frequency: frequency);
@@ -101,6 +108,7 @@ class _$BangDataCWProxyImpl implements _$BangDataCWProxy {
Object? category = const $CopyWithPlaceholder(),
Object? subCategory = const $CopyWithPlaceholder(),
Object? format = const $CopyWithPlaceholder(),
Object? additionalTriggers = const $CopyWithPlaceholder(),
Object? frequency = const $CopyWithPlaceholder(),
Object? lastUsed = const $CopyWithPlaceholder(),
Object? icon = const $CopyWithPlaceholder(),
@@ -136,6 +144,10 @@ class _$BangDataCWProxyImpl implements _$BangDataCWProxy {
? _value.format
// ignore: cast_nullable_to_non_nullable
: format as Set<BangFormat>?,
additionalTriggers: additionalTriggers == const $CopyWithPlaceholder()
? _value.additionalTriggers
// ignore: cast_nullable_to_non_nullable
: additionalTriggers as Set<String>?,
frequency: frequency == const $CopyWithPlaceholder()
? _value.frequency
// ignore: cast_nullable_to_non_nullable