increase min sdk and apply new formatter

This commit is contained in:
Fabian Freund
2025-02-18 15:37:03 +01:00
parent f7885fc829
commit a1ee8bef35
266 changed files with 11329 additions and 10058 deletions
@@ -42,7 +42,8 @@ class BottomSheetExtend extends _$BottomSheetExtend {
await _extentStreamController.close();
});
return _extentStreamController.stream
.sampleTime(const Duration(milliseconds: 50));
return _extentStreamController.stream.sampleTime(
const Duration(milliseconds: 50),
);
}
}
@@ -13,14 +13,15 @@ String _$bottomSheetControllerHash() =>
@ProviderFor(BottomSheetController)
final bottomSheetControllerProvider =
AutoDisposeNotifierProvider<BottomSheetController, Sheet?>.internal(
BottomSheetController.new,
name: r'bottomSheetControllerProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$bottomSheetControllerHash,
dependencies: null,
allTransitiveDependencies: null,
);
BottomSheetController.new,
name: r'bottomSheetControllerProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$bottomSheetControllerHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$BottomSheetController = AutoDisposeNotifier<Sheet?>;
String _$bottomSheetExtendHash() => r'7e11b9047c15bdeb4dfcb488a8573daadb64e25c';
@@ -29,14 +30,15 @@ String _$bottomSheetExtendHash() => r'7e11b9047c15bdeb4dfcb488a8573daadb64e25c';
@ProviderFor(BottomSheetExtend)
final bottomSheetExtendProvider =
StreamNotifierProvider<BottomSheetExtend, double>.internal(
BottomSheetExtend.new,
name: r'bottomSheetExtendProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$bottomSheetExtendHash,
dependencies: null,
allTransitiveDependencies: null,
);
BottomSheetExtend.new,
name: r'bottomSheetExtendProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$bottomSheetExtendHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$BottomSheetExtend = StreamNotifier<double>;
// ignore_for_file: type=lint
@@ -13,14 +13,15 @@ String _$overlayDialogControllerHash() =>
@ProviderFor(OverlayDialogController)
final overlayDialogControllerProvider =
AutoDisposeNotifierProvider<OverlayDialogController, Widget?>.internal(
OverlayDialogController.new,
name: r'overlayDialogControllerProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$overlayDialogControllerHash,
dependencies: null,
allTransitiveDependencies: null,
);
OverlayDialogController.new,
name: r'overlayDialogControllerProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$overlayDialogControllerHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$OverlayDialogController = AutoDisposeNotifier<Widget?>;
// ignore_for_file: type=lint
@@ -18,8 +18,9 @@ class BrowserIcon with FastEquatable {
required Color? dominantColor,
required IconSource source,
}) async {
final image =
await tryDecodeImage(bytes).then((image) => image!.toEquatable());
final image = await tryDecodeImage(
bytes,
).then((image) => image!.toEquatable());
return BrowserIcon(
image: image,
@@ -38,9 +39,5 @@ class BrowserIcon with FastEquatable {
bool get cacheHash => true;
@override
List<Object?> get hashParameters => [
image,
dominantColor,
source,
];
List<Object?> get hashParameters => [image, dominantColor, source];
}
@@ -12,17 +12,17 @@ class FindResultState with FastEquatable {
});
factory FindResultState.$default() => FindResultState(
activeMatchOrdinal: -1,
numberOfMatches: 0,
isDoneCounting: false,
);
activeMatchOrdinal: -1,
numberOfMatches: 0,
isDoneCounting: false,
);
@override
List<Object?> get hashParameters => [
activeMatchOrdinal,
numberOfMatches,
isDoneCounting,
];
activeMatchOrdinal,
numberOfMatches,
isDoneCounting,
];
@override
bool get cacheHash => true;
@@ -28,16 +28,20 @@ class HistoryState with FastEquatable {
});
factory HistoryState.$default() => HistoryState(
items: const [],
currentIndex: 0,
canGoBack: false,
canGoForward: false,
);
items: const [],
currentIndex: 0,
canGoBack: false,
canGoForward: false,
);
@override
bool get cacheHash => true;
@override
List<Object?> get hashParameters =>
[items, currentIndex, canGoBack, canGoForward];
List<Object?> get hashParameters => [
items,
currentIndex,
canGoBack,
canGoForward,
];
}
@@ -5,15 +5,10 @@ class ReaderableState with FastEquatable {
final bool active;
ReaderableState({
required this.readerable,
required this.active,
});
ReaderableState({required this.readerable, required this.active});
factory ReaderableState.$default() => ReaderableState(
readerable: false,
active: false,
);
factory ReaderableState.$default() =>
ReaderableState(readerable: false, active: false);
@override
bool get cacheHash => true;
@@ -11,11 +11,8 @@ class SecurityState with FastEquatable {
required this.issuer,
});
factory SecurityState.$default() => SecurityState(
secure: false,
host: "",
issuer: "",
);
factory SecurityState.$default() =>
SecurityState(secure: false, host: "", issuer: "");
@override
bool get cacheHash => true;
@@ -26,12 +26,12 @@ class TabState extends WebPageInfo with FastEquatable {
@override
BrowserIcon? get favicon => icon.mapNotNull(
(icon) => BrowserIcon(
image: icon,
dominantColor: null,
source: IconSource.memory,
),
);
(icon) => BrowserIcon(
image: icon,
dominantColor: null,
source: IconSource.memory,
),
);
final EquatableImage? thumbnail;
@@ -64,40 +64,40 @@ class TabState extends WebPageInfo with FastEquatable {
}) : super(title: title);
factory TabState.$default(String tabId) => TabState(
id: tabId,
contextId: null,
url: Uri.parse('about:blank'),
title: "",
icon: null,
thumbnail: null,
progress: 0,
isPrivate: false,
isFullScreen: false,
isLoading: false,
securityInfoState: SecurityState.$default(),
historyState: HistoryState.$default(),
readerableState: ReaderableState.$default(),
findResultState: FindResultState.$default(),
);
id: tabId,
contextId: null,
url: Uri.parse('about:blank'),
title: "",
icon: null,
thumbnail: null,
progress: 0,
isPrivate: false,
isFullScreen: false,
isLoading: false,
securityInfoState: SecurityState.$default(),
historyState: HistoryState.$default(),
readerableState: ReaderableState.$default(),
findResultState: FindResultState.$default(),
);
@override
bool get cacheHash => true;
@override
List<Object?> get hashParameters => [
id,
contextId,
url,
title,
icon,
thumbnail,
progress,
isPrivate,
isFullScreen,
isLoading,
securityInfoState,
historyState,
readerableState,
findResultState,
];
id,
contextId,
url,
title,
icon,
thumbnail,
progress,
isPrivate,
isFullScreen,
isLoading,
securityInfoState,
historyState,
readerableState,
findResultState,
];
}
@@ -106,7 +106,6 @@ class _$TabStateCWProxyImpl implements _$TabStateCWProxy {
this(findResultState: findResultState);
@override
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `TabState(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
///
/// Usage
@@ -130,58 +129,71 @@ class _$TabStateCWProxyImpl implements _$TabStateCWProxy {
}) {
return TabState(
id: _value.id,
contextId: contextId == const $CopyWithPlaceholder()
? _value.contextId
// ignore: cast_nullable_to_non_nullable
: contextId as String?,
url: url == const $CopyWithPlaceholder()
? _value.url
// ignore: cast_nullable_to_non_nullable
: url as Uri,
title: title == const $CopyWithPlaceholder()
? _value.title
// ignore: cast_nullable_to_non_nullable
: title as String,
icon: icon == const $CopyWithPlaceholder()
? _value.icon
// ignore: cast_nullable_to_non_nullable
: icon as EquatableImage?,
thumbnail: thumbnail == const $CopyWithPlaceholder()
? _value.thumbnail
// ignore: cast_nullable_to_non_nullable
: thumbnail as EquatableImage?,
progress: progress == const $CopyWithPlaceholder()
? _value.progress
// ignore: cast_nullable_to_non_nullable
: progress as int,
isPrivate: isPrivate == const $CopyWithPlaceholder()
? _value.isPrivate
// ignore: cast_nullable_to_non_nullable
: isPrivate as bool,
isFullScreen: isFullScreen == const $CopyWithPlaceholder()
? _value.isFullScreen
// ignore: cast_nullable_to_non_nullable
: isFullScreen as bool,
isLoading: isLoading == const $CopyWithPlaceholder()
? _value.isLoading
// ignore: cast_nullable_to_non_nullable
: isLoading as bool,
securityInfoState: securityInfoState == const $CopyWithPlaceholder()
? _value.securityInfoState
// ignore: cast_nullable_to_non_nullable
: securityInfoState as SecurityState,
historyState: historyState == const $CopyWithPlaceholder()
? _value.historyState
// ignore: cast_nullable_to_non_nullable
: historyState as HistoryState,
readerableState: readerableState == const $CopyWithPlaceholder()
? _value.readerableState
// ignore: cast_nullable_to_non_nullable
: readerableState as ReaderableState,
findResultState: findResultState == const $CopyWithPlaceholder()
? _value.findResultState
// ignore: cast_nullable_to_non_nullable
: findResultState as FindResultState,
contextId:
contextId == const $CopyWithPlaceholder()
? _value.contextId
// ignore: cast_nullable_to_non_nullable
: contextId as String?,
url:
url == const $CopyWithPlaceholder()
? _value.url
// ignore: cast_nullable_to_non_nullable
: url as Uri,
title:
title == const $CopyWithPlaceholder()
? _value.title
// ignore: cast_nullable_to_non_nullable
: title as String,
icon:
icon == const $CopyWithPlaceholder()
? _value.icon
// ignore: cast_nullable_to_non_nullable
: icon as EquatableImage?,
thumbnail:
thumbnail == const $CopyWithPlaceholder()
? _value.thumbnail
// ignore: cast_nullable_to_non_nullable
: thumbnail as EquatableImage?,
progress:
progress == const $CopyWithPlaceholder()
? _value.progress
// ignore: cast_nullable_to_non_nullable
: progress as int,
isPrivate:
isPrivate == const $CopyWithPlaceholder()
? _value.isPrivate
// ignore: cast_nullable_to_non_nullable
: isPrivate as bool,
isFullScreen:
isFullScreen == const $CopyWithPlaceholder()
? _value.isFullScreen
// ignore: cast_nullable_to_non_nullable
: isFullScreen as bool,
isLoading:
isLoading == const $CopyWithPlaceholder()
? _value.isLoading
// ignore: cast_nullable_to_non_nullable
: isLoading as bool,
securityInfoState:
securityInfoState == const $CopyWithPlaceholder()
? _value.securityInfoState
// ignore: cast_nullable_to_non_nullable
: securityInfoState as SecurityState,
historyState:
historyState == const $CopyWithPlaceholder()
? _value.historyState
// ignore: cast_nullable_to_non_nullable
: historyState as HistoryState,
readerableState:
readerableState == const $CopyWithPlaceholder()
? _value.readerableState
// ignore: cast_nullable_to_non_nullable
: readerableState as ReaderableState,
findResultState:
findResultState == const $CopyWithPlaceholder()
? _value.findResultState
// ignore: cast_nullable_to_non_nullable
: findResultState as FindResultState,
);
}
}
@@ -33,12 +33,12 @@ class WebExtensionState with FastEquatable {
@override
List<Object?> get hashParameters => [
extensionId,
title,
enabled,
badgeText,
badgeTextColor,
badgeBackgroundColor,
icon,
];
extensionId,
title,
enabled,
badgeText,
badgeTextColor,
badgeBackgroundColor,
icon,
];
}
@@ -69,7 +69,6 @@ class _$WebExtensionStateCWProxyImpl implements _$WebExtensionStateCWProxy {
WebExtensionState icon(EquatableImage? icon) => this(icon: icon);
@override
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `WebExtensionState(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
///
/// Usage
@@ -86,34 +85,41 @@ class _$WebExtensionStateCWProxyImpl implements _$WebExtensionStateCWProxy {
Object? icon = const $CopyWithPlaceholder(),
}) {
return WebExtensionState(
extensionId: extensionId == const $CopyWithPlaceholder()
? _value.extensionId
// ignore: cast_nullable_to_non_nullable
: extensionId as String,
enabled: enabled == const $CopyWithPlaceholder()
? _value.enabled
// ignore: cast_nullable_to_non_nullable
: enabled as bool,
title: title == const $CopyWithPlaceholder()
? _value.title
// ignore: cast_nullable_to_non_nullable
: title as String?,
badgeText: badgeText == const $CopyWithPlaceholder()
? _value.badgeText
// ignore: cast_nullable_to_non_nullable
: badgeText as String?,
badgeTextColor: badgeTextColor == const $CopyWithPlaceholder()
? _value.badgeTextColor
// ignore: cast_nullable_to_non_nullable
: badgeTextColor as Color?,
badgeBackgroundColor: badgeBackgroundColor == const $CopyWithPlaceholder()
? _value.badgeBackgroundColor
// ignore: cast_nullable_to_non_nullable
: badgeBackgroundColor as Color?,
icon: icon == const $CopyWithPlaceholder()
? _value.icon
// ignore: cast_nullable_to_non_nullable
: icon as EquatableImage?,
extensionId:
extensionId == const $CopyWithPlaceholder()
? _value.extensionId
// ignore: cast_nullable_to_non_nullable
: extensionId as String,
enabled:
enabled == const $CopyWithPlaceholder()
? _value.enabled
// ignore: cast_nullable_to_non_nullable
: enabled as bool,
title:
title == const $CopyWithPlaceholder()
? _value.title
// ignore: cast_nullable_to_non_nullable
: title as String?,
badgeText:
badgeText == const $CopyWithPlaceholder()
? _value.badgeText
// ignore: cast_nullable_to_non_nullable
: badgeText as String?,
badgeTextColor:
badgeTextColor == const $CopyWithPlaceholder()
? _value.badgeTextColor
// ignore: cast_nullable_to_non_nullable
: badgeTextColor as Color?,
badgeBackgroundColor:
badgeBackgroundColor == const $CopyWithPlaceholder()
? _value.badgeBackgroundColor
// ignore: cast_nullable_to_non_nullable
: badgeBackgroundColor as Color?,
icon:
icon == const $CopyWithPlaceholder()
? _value.icon
// ignore: cast_nullable_to_non_nullable
: icon as EquatableImage?,
);
}
}
@@ -13,16 +13,15 @@ import 'package:url_launcher/url_launcher.dart';
part 'providers.g.dart';
@Riverpod(keepAlive: true)
GeckoSelectionActionService selectionActionService(
Ref ref,
) {
GeckoSelectionActionService selectionActionService(Ref ref) {
final service = GeckoSelectionActionService.setUp();
unawaited(
service.setActions([
SearchAction((text) async {
final defaultSearchBang =
await ref.read(defaultSearchBangDataProvider.future);
final defaultSearchBang = await ref.read(
defaultSearchBangDataProvider.future,
);
if (defaultSearchBang != null) {
await ref
@@ -33,14 +32,14 @@ GeckoSelectionActionService selectionActionService(
}
}),
PrivateSearchAction((text) async {
final defaultSearchBang =
await ref.read(defaultSearchBangDataProvider.future);
final defaultSearchBang = await ref.read(
defaultSearchBangDataProvider.future,
);
if (defaultSearchBang != null) {
await ref.read(tabRepositoryProvider.notifier).addTab(
url: defaultSearchBang.getUrl(text),
private: true,
);
await ref
.read(tabRepositoryProvider.notifier)
.addTab(url: defaultSearchBang.getUrl(text), private: true);
} else {
logger.e('No default search bang found');
}
@@ -132,12 +131,13 @@ class EngineReadyState extends _$EngineReadyState {
eventService.engineReadyStateEvents
.firstWhere((value) => value == true)
.timeout(
const Duration(seconds: 5),
onTimeout: () {
logger.w('Waiting for engine ready state timed out');
return true;
},
).whenComplete(() => state = true),
const Duration(seconds: 5),
onTimeout: () {
logger.w('Waiting for engine ready state timed out');
return true;
},
)
.whenComplete(() => state = true),
);
}
@@ -13,14 +13,15 @@ String _$selectionActionServiceHash() =>
@ProviderFor(selectionActionService)
final selectionActionServiceProvider =
Provider<GeckoSelectionActionService>.internal(
selectionActionService,
name: r'selectionActionServiceProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$selectionActionServiceHash,
dependencies: null,
allTransitiveDependencies: null,
);
selectionActionService,
name: r'selectionActionServiceProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$selectionActionServiceHash,
dependencies: null,
allTransitiveDependencies: null,
);
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
@@ -64,9 +65,10 @@ String _$tabContentServiceHash() => r'd9a991add907ecc138c62790883e59d8e9aa9266';
final tabContentServiceProvider = Provider<GeckoTabContentService>.internal(
tabContentService,
name: r'tabContentServiceProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$tabContentServiceHash,
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$tabContentServiceHash,
dependencies: null,
allTransitiveDependencies: null,
);
@@ -81,14 +83,15 @@ String _$engineSuggestionsServiceHash() =>
@ProviderFor(engineSuggestionsService)
final engineSuggestionsServiceProvider =
Provider<GeckoSuggestionsService>.internal(
engineSuggestionsService,
name: r'engineSuggestionsServiceProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$engineSuggestionsServiceHash,
dependencies: null,
allTransitiveDependencies: null,
);
engineSuggestionsService,
name: r'engineSuggestionsServiceProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$engineSuggestionsServiceHash,
dependencies: null,
allTransitiveDependencies: null,
);
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
@@ -100,14 +103,15 @@ String _$selectedTabSessionNotifierHash() =>
@ProviderFor(selectedTabSessionNotifier)
final selectedTabSessionNotifierProvider =
AutoDisposeProvider<Raw<TabSession>>.internal(
selectedTabSessionNotifier,
name: r'selectedTabSessionNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$selectedTabSessionNotifierHash,
dependencies: null,
allTransitiveDependencies: null,
);
selectedTabSessionNotifier,
name: r'selectedTabSessionNotifierProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$selectedTabSessionNotifierHash,
dependencies: null,
allTransitiveDependencies: null,
);
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
@@ -118,14 +122,15 @@ String _$engineReadyStateHash() => r'c682333e2e07cf0635aa7ae793a2088ca648c950';
@ProviderFor(EngineReadyState)
final engineReadyStateProvider =
NotifierProvider<EngineReadyState, bool>.internal(
EngineReadyState.new,
name: r'engineReadyStateProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$engineReadyStateHash,
dependencies: null,
allTransitiveDependencies: null,
);
EngineReadyState.new,
name: r'engineReadyStateProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$engineReadyStateHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$EngineReadyState = Notifier<bool>;
// ignore_for_file: type=lint
@@ -12,21 +12,18 @@ class SelectedTab extends _$SelectedTab {
String? build() {
final eventSerivce = ref.watch(eventServiceProvider);
ref.listen(
fireImmediately: true,
engineReadyStateProvider,
(previous, next) async {
if (next) {
await GeckoTabService().syncEvents(onSelectedTabChange: true);
}
},
);
ref.listen(fireImmediately: true, engineReadyStateProvider, (
previous,
next,
) async {
if (next) {
await GeckoTabService().syncEvents(onSelectedTabChange: true);
}
});
final selectedTabSub = eventSerivce.selectedTabEvents.listen(
(tabId) async {
state = tabId;
},
);
final selectedTabSub = eventSerivce.selectedTabEvents.listen((tabId) async {
state = tabId;
});
ref.onDispose(() {
unawaited(selectedTabSub.cancel());
@@ -13,23 +13,20 @@ class TabList extends _$TabList {
List<String> build() {
final eventService = ref.watch(eventServiceProvider);
ref.listen(
fireImmediately: true,
engineReadyStateProvider,
(previous, next) async {
if (next) {
await GeckoTabService().syncEvents(onTabListChange: true);
}
},
);
ref.listen(fireImmediately: true, engineReadyStateProvider, (
previous,
next,
) async {
if (next) {
await GeckoTabService().syncEvents(onTabListChange: true);
}
});
final tabListSub = eventService.tabListEvents.listen(
(tabs) async {
if (!const DeepCollectionEquality().equals(state, tabs)) {
state = tabs;
}
},
);
final tabListSub = eventService.tabListEvents.listen((tabs) async {
if (!const DeepCollectionEquality().equals(state, tabs)) {
state = tabs;
}
});
ref.onDispose(() {
unawaited(tabListSub.cancel());
@@ -43,8 +43,9 @@ class TabSession extends _$TabSession {
@override
void build({required String? tabId}) {
_sessionService = (tabId != null)
? GeckoSessionService(tabId: tabId)
: GeckoSessionService.forActiveTab();
_sessionService =
(tabId != null)
? GeckoSessionService(tabId: tabId)
: GeckoSessionService.forActiveTab();
}
}
@@ -32,9 +32,7 @@ class _SystemHash {
abstract class _$TabSession extends BuildlessAutoDisposeNotifier<void> {
late final String? tabId;
void build({
required String? tabId,
});
void build({required String? tabId});
}
/// See also [TabSession].
@@ -47,21 +45,15 @@ class TabSessionFamily extends Family<void> {
const TabSessionFamily();
/// See also [TabSession].
TabSessionProvider call({
required String? tabId,
}) {
return TabSessionProvider(
tabId: tabId,
);
TabSessionProvider call({required String? tabId}) {
return TabSessionProvider(tabId: tabId);
}
@override
TabSessionProvider getProviderOverride(
covariant TabSessionProvider provider,
) {
return call(
tabId: provider.tabId,
);
return call(tabId: provider.tabId);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@@ -83,21 +75,19 @@ class TabSessionFamily extends Family<void> {
class TabSessionProvider
extends AutoDisposeNotifierProviderImpl<TabSession, void> {
/// See also [TabSession].
TabSessionProvider({
required String? tabId,
}) : this._internal(
() => TabSession()..tabId = tabId,
from: tabSessionProvider,
name: r'tabSessionProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$tabSessionHash,
dependencies: TabSessionFamily._dependencies,
allTransitiveDependencies:
TabSessionFamily._allTransitiveDependencies,
tabId: tabId,
);
TabSessionProvider({required String? tabId})
: this._internal(
() => TabSession()..tabId = tabId,
from: tabSessionProvider,
name: r'tabSessionProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$tabSessionHash,
dependencies: TabSessionFamily._dependencies,
allTransitiveDependencies: TabSessionFamily._allTransitiveDependencies,
tabId: tabId,
);
TabSessionProvider._internal(
super._createNotifier, {
@@ -112,12 +102,8 @@ class TabSessionProvider
final String? tabId;
@override
void runNotifierBuild(
covariant TabSession notifier,
) {
return notifier.build(
tabId: tabId,
);
void runNotifierBuild(covariant TabSession notifier) {
return notifier.build(tabId: tabId);
}
@override
@@ -170,5 +156,6 @@ class _TabSessionProviderElement
@override
String? get tabId => (origin as TabSessionProvider).tabId;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
@@ -24,12 +24,14 @@ class TabStates extends _$TabStates {
void _onTabContentStateChange(TabContentState contentState) {
final current =
state[contentState.id] ?? TabState.$default(contentState.id);
state = {...state}..[contentState.id] = current.copyWith(
state = {...state}
..[contentState.id] = current.copyWith(
contextId: contentState.contextId,
url: Uri.parse(contentState.url),
title: (contentState.title.isNotEmpty)
? contentState.title
: current.title,
title:
(contentState.title.isNotEmpty)
? contentState.title
: current.title,
progress: contentState.progress,
isPrivate: contentState.isPrivate,
isFullScreen: contentState.isFullScreen,
@@ -65,7 +67,8 @@ class TabStates extends _$TabStates {
final SecurityInfoEvent(:tabId, :securityInfo) = event;
final current = state[tabId] ?? TabState.$default(tabId);
state = {...state}..[tabId] = current.copyWith.securityInfoState(
state = {...state}
..[tabId] = current.copyWith.securityInfoState(
SecurityState(
secure: securityInfo.secure,
host: securityInfo.host,
@@ -78,14 +81,18 @@ class TabStates extends _$TabStates {
final HistoryEvent(:tabId, :history) = event;
final current = state[tabId] ?? TabState.$default(tabId);
state = {...state}..[tabId] = current.copyWith.historyState(
state = {...state}
..[tabId] = current.copyWith.historyState(
HistoryState(
items: history.items.nonNulls
.map(
(item) =>
HistoryItem(url: Uri.parse(item.url), title: item.title),
)
.toList(),
items:
history.items.nonNulls
.map(
(item) => HistoryItem(
url: Uri.parse(item.url),
title: item.title,
),
)
.toList(),
currentIndex: history.currentIndex,
canGoBack: history.canGoBack,
canGoForward: history.canGoForward,
@@ -97,7 +104,8 @@ class TabStates extends _$TabStates {
final ReaderableEvent(:tabId, :readerable) = event;
final current = state[tabId] ?? TabState.$default(tabId);
state = {...state}..[tabId] = current.copyWith.readerableState(
state = {...state}
..[tabId] = current.copyWith.readerableState(
ReaderableState(
readerable: readerable.readerable,
active: readerable.active,
@@ -112,7 +120,8 @@ class TabStates extends _$TabStates {
final result = results.last;
final current = state[tabId] ?? TabState.$default(tabId);
state = {...state}..[tabId] = current.copyWith.findResultState(
state = {...state}
..[tabId] = current.copyWith.findResultState(
FindResultState(
activeMatchOrdinal: result.activeMatchOrdinal,
numberOfMatches: result.numberOfMatches,
@@ -127,59 +136,44 @@ class TabStates extends _$TabStates {
final eventService = ref.watch(eventServiceProvider);
final subscriptions = [
eventService.tabContentEvents.listen(
(event) async {
await _lock.synchronized(() => _onTabContentStateChange(event));
},
),
eventService.iconChangeEvents.listen(
(event) async {
await _lock.synchronized(() => _onIconChange(event));
},
),
eventService.thumbnailEvents.listen(
(event) async {
await _lock.synchronized(() => _onThumbnailChange(event));
},
),
eventService.securityInfoEvents.listen(
(event) async {
await _lock.synchronized(() => _onSecurityInfoStateChange(event));
},
),
eventService.historyEvents.listen(
(event) async {
await _lock.synchronized(() => _onHistoryStateChange(event));
},
),
eventService.readerableEvents.listen(
(event) async {
await _lock.synchronized(() => _onReaderableStateChange(event));
},
),
eventService.findResultsEvent.listen(
(event) async {
await _lock.synchronized(() => _onFindResultsChange(event));
},
),
eventService.tabContentEvents.listen((event) async {
await _lock.synchronized(() => _onTabContentStateChange(event));
}),
eventService.iconChangeEvents.listen((event) async {
await _lock.synchronized(() => _onIconChange(event));
}),
eventService.thumbnailEvents.listen((event) async {
await _lock.synchronized(() => _onThumbnailChange(event));
}),
eventService.securityInfoEvents.listen((event) async {
await _lock.synchronized(() => _onSecurityInfoStateChange(event));
}),
eventService.historyEvents.listen((event) async {
await _lock.synchronized(() => _onHistoryStateChange(event));
}),
eventService.readerableEvents.listen((event) async {
await _lock.synchronized(() => _onReaderableStateChange(event));
}),
eventService.findResultsEvent.listen((event) async {
await _lock.synchronized(() => _onFindResultsChange(event));
}),
];
ref.listen(
fireImmediately: true,
engineReadyStateProvider,
(previous, next) async {
if (next) {
await GeckoTabService().syncEvents(
onTabContentStateChange: true,
onIconChange: true,
onThumbnailChange: true,
onSecurityInfoStateChange: true,
onHistoryStateChange: true,
onFindResults: true,
);
}
},
);
ref.listen(fireImmediately: true, engineReadyStateProvider, (
previous,
next,
) async {
if (next) {
await GeckoTabService().syncEvents(
onTabContentStateChange: true,
onIconChange: true,
onThumbnailChange: true,
onSecurityInfoStateChange: true,
onHistoryStateChange: true,
onFindResults: true,
);
}
});
ref.onDispose(() {
for (final sub in subscriptions) {
@@ -197,9 +191,7 @@ TabState? tabState(Ref ref, String? tabId) {
return null;
}
return ref.watch(
tabStatesProvider.select((tabs) => tabs[tabId]),
);
return ref.watch(tabStatesProvider.select((tabs) => tabs[tabId]));
}
@Riverpod()
@@ -39,21 +39,13 @@ class TabStateFamily extends Family<TabState?> {
const TabStateFamily();
/// See also [tabState].
TabStateProvider call(
String? tabId,
) {
return TabStateProvider(
tabId,
);
TabStateProvider call(String? tabId) {
return TabStateProvider(tabId);
}
@override
TabStateProvider getProviderOverride(
covariant TabStateProvider provider,
) {
return call(
provider.tabId,
);
TabStateProvider getProviderOverride(covariant TabStateProvider provider) {
return call(provider.tabId);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@@ -74,23 +66,19 @@ class TabStateFamily extends Family<TabState?> {
/// See also [tabState].
class TabStateProvider extends AutoDisposeProvider<TabState?> {
/// See also [tabState].
TabStateProvider(
String? tabId,
) : this._internal(
(ref) => tabState(
ref as TabStateRef,
tabId,
),
from: tabStateProvider,
name: r'tabStateProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$tabStateHash,
dependencies: TabStateFamily._dependencies,
allTransitiveDependencies: TabStateFamily._allTransitiveDependencies,
tabId: tabId,
);
TabStateProvider(String? tabId)
: this._internal(
(ref) => tabState(ref as TabStateRef, tabId),
from: tabStateProvider,
name: r'tabStateProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$tabStateHash,
dependencies: TabStateFamily._dependencies,
allTransitiveDependencies: TabStateFamily._allTransitiveDependencies,
tabId: tabId,
);
TabStateProvider._internal(
super._createNotifier, {
@@ -105,9 +93,7 @@ class TabStateProvider extends AutoDisposeProvider<TabState?> {
final String? tabId;
@override
Override overrideWith(
TabState? Function(TabStateRef provider) create,
) {
Override overrideWith(TabState? Function(TabStateRef provider) create) {
return ProviderOverride(
origin: this,
override: TabStateProvider._internal(
@@ -163,9 +149,10 @@ String _$selectedTabStateHash() => r'dbd36af7af286bd9d079f30e8e11bbda23bf7728';
final selectedTabStateProvider = AutoDisposeProvider<TabState?>.internal(
selectedTabState,
name: r'selectedTabStateProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$selectedTabStateHash,
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$selectedTabStateHash,
dependencies: null,
allTransitiveDependencies: null,
);
@@ -179,13 +166,15 @@ String _$tabStatesHash() => r'296d85ec016b22236b5830fce6b01cda81fbc02d';
@ProviderFor(TabStates)
final tabStatesProvider =
NotifierProvider<TabStates, Map<String, TabState>>.internal(
TabStates.new,
name: r'tabStatesProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product') ? null : _$tabStatesHash,
dependencies: null,
allTransitiveDependencies: null,
);
TabStates.new,
name: r'tabStatesProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$tabStatesHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$TabStates = Notifier<Map<String, TabState>>;
// ignore_for_file: type=lint
@@ -23,21 +23,25 @@ class WebExtensionsState extends _$WebExtensionsState {
final ExtensionDataEvent(:extensionId, :data) = event;
if (data != null) {
final current = state[extensionId] ??
final current =
state[extensionId] ??
WebExtensionState(
extensionId: extensionId,
icon: _imageCache[extensionId],
enabled: false,
);
state = {...state}..[extensionId] = current.copyWith(
state = {...state}
..[extensionId] = current.copyWith(
title: data.title,
enabled: data.enabled ?? current.enabled,
badgeText: data.badgeText,
badgeTextColor:
data.badgeTextColor.mapNotNull((color) => Color(color)),
badgeBackgroundColor:
data.badgeBackgroundColor.mapNotNull((color) => Color(color)),
badgeTextColor: data.badgeTextColor.mapNotNull(
(color) => Color(color),
),
badgeBackgroundColor: data.badgeBackgroundColor.mapNotNull(
(color) => Color(color),
),
);
} else {
if (state.containsKey(extensionId)) {
@@ -49,16 +53,17 @@ class WebExtensionsState extends _$WebExtensionsState {
Future<void> _onIconChange(ExtensionIconEvent event) async {
final ExtensionIconEvent(:extensionId, :bytes) = event;
final image =
await tryDecodeImage(bytes).then((image) async => image?.toEquatable());
final image = await tryDecodeImage(
bytes,
).then((image) async => image?.toEquatable());
if (image != null) {
if (_imageCache[extensionId] != image) {
_imageCache[extensionId] = image;
if (state.containsKey(extensionId)) {
state = {...state}..[extensionId] =
state[extensionId]!.copyWith.icon(image);
state = {...state}
..[extensionId] = state[extensionId]!.copyWith.icon(image);
}
}
}
@@ -70,29 +75,21 @@ class WebExtensionsState extends _$WebExtensionsState {
final subscriptions = switch (actionType) {
WebExtensionActionType.browser => [
addonService.browserExtensionStream.listen(
(event) async {
await _lock.synchronized(() => _onExtensionUpdate(event));
},
),
addonService.browserIconStream.listen(
(event) async {
await _lock.synchronized(() => _onIconChange(event));
},
),
],
addonService.browserExtensionStream.listen((event) async {
await _lock.synchronized(() => _onExtensionUpdate(event));
}),
addonService.browserIconStream.listen((event) async {
await _lock.synchronized(() => _onIconChange(event));
}),
],
WebExtensionActionType.page => [
addonService.pageExtensionStream.listen(
(event) async {
await _lock.synchronized(() => _onExtensionUpdate(event));
},
),
addonService.pageIconStream.listen(
(event) async {
await _lock.synchronized(() => _onIconChange(event));
},
),
],
addonService.pageExtensionStream.listen((event) async {
await _lock.synchronized(() => _onExtensionUpdate(event));
}),
addonService.pageIconStream.listen((event) async {
await _lock.synchronized(() => _onIconChange(event));
}),
],
};
ref.onDispose(() {
@@ -34,9 +34,7 @@ abstract class _$WebExtensionsState
extends BuildlessNotifier<Map<String, WebExtensionState>> {
late final WebExtensionActionType actionType;
Map<String, WebExtensionState> build(
WebExtensionActionType actionType,
);
Map<String, WebExtensionState> build(WebExtensionActionType actionType);
}
/// See also [WebExtensionsState].
@@ -49,21 +47,15 @@ class WebExtensionsStateFamily extends Family<Map<String, WebExtensionState>> {
const WebExtensionsStateFamily();
/// See also [WebExtensionsState].
WebExtensionsStateProvider call(
WebExtensionActionType actionType,
) {
return WebExtensionsStateProvider(
actionType,
);
WebExtensionsStateProvider call(WebExtensionActionType actionType) {
return WebExtensionsStateProvider(actionType);
}
@override
WebExtensionsStateProvider getProviderOverride(
covariant WebExtensionsStateProvider provider,
) {
return call(
provider.actionType,
);
return call(provider.actionType);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@@ -82,24 +74,27 @@ class WebExtensionsStateFamily extends Family<Map<String, WebExtensionState>> {
}
/// See also [WebExtensionsState].
class WebExtensionsStateProvider extends NotifierProviderImpl<
WebExtensionsState, Map<String, WebExtensionState>> {
class WebExtensionsStateProvider
extends
NotifierProviderImpl<
WebExtensionsState,
Map<String, WebExtensionState>
> {
/// See also [WebExtensionsState].
WebExtensionsStateProvider(
WebExtensionActionType actionType,
) : this._internal(
() => WebExtensionsState()..actionType = actionType,
from: webExtensionsStateProvider,
name: r'webExtensionsStateProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$webExtensionsStateHash,
dependencies: WebExtensionsStateFamily._dependencies,
allTransitiveDependencies:
WebExtensionsStateFamily._allTransitiveDependencies,
actionType: actionType,
);
WebExtensionsStateProvider(WebExtensionActionType actionType)
: this._internal(
() => WebExtensionsState()..actionType = actionType,
from: webExtensionsStateProvider,
name: r'webExtensionsStateProvider',
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$webExtensionsStateHash,
dependencies: WebExtensionsStateFamily._dependencies,
allTransitiveDependencies:
WebExtensionsStateFamily._allTransitiveDependencies,
actionType: actionType,
);
WebExtensionsStateProvider._internal(
super._createNotifier, {
@@ -117,9 +112,7 @@ class WebExtensionsStateProvider extends NotifierProviderImpl<
Map<String, WebExtensionState> runNotifierBuild(
covariant WebExtensionsState notifier,
) {
return notifier.build(
actionType,
);
return notifier.build(actionType);
}
@override
@@ -140,7 +133,7 @@ class WebExtensionsStateProvider extends NotifierProviderImpl<
@override
NotifierProviderElement<WebExtensionsState, Map<String, WebExtensionState>>
createElement() {
createElement() {
return _WebExtensionsStateProviderElement(this);
}
@@ -167,14 +160,19 @@ mixin WebExtensionsStateRef
WebExtensionActionType get actionType;
}
class _WebExtensionsStateProviderElement extends NotifierProviderElement<
WebExtensionsState,
Map<String, WebExtensionState>> with WebExtensionsStateRef {
class _WebExtensionsStateProviderElement
extends
NotifierProviderElement<
WebExtensionsState,
Map<String, WebExtensionState>
>
with WebExtensionsStateRef {
_WebExtensionsStateProviderElement(super.provider);
@override
WebExtensionActionType get actionType =>
(origin as WebExtensionsStateProvider).actionType;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
@@ -98,16 +98,17 @@ class TabRepository extends _$TabRepository {
final db = ref.watch(tabDatabaseProvider);
final tabAddedSub = eventSerivce.tabAddedStream.listen(
(tabId) async {
final containerId = ref.read(selectedContainerProvider);
await db.tabDao
.upsertUnassignedTab(tabId, containerId: Value(containerId));
},
);
final tabAddedSub = eventSerivce.tabAddedStream.listen((tabId) async {
final containerId = ref.read(selectedContainerProvider);
await db.tabDao.upsertUnassignedTab(
tabId,
containerId: Value(containerId),
);
});
final tabContentSub =
tabContentService.tabContentStream.listen((content) async {
final tabContentSub = tabContentService.tabContentStream.listen((
content,
) async {
await db.tabDao.updateTabContent(
content.tabId,
isProbablyReaderable: content.isProbablyReaderable,
@@ -118,42 +119,33 @@ class TabRepository extends _$TabRepository {
);
});
ref.listen(
selectedTabProvider,
(previous, tabId) async {
if (tabId != null) {
await db.tabDao.touchTab(tabId, timestamp: DateTime.now());
}
},
);
ref.listen(selectedTabProvider, (previous, tabId) async {
if (tabId != null) {
await db.tabDao.touchTab(tabId, timestamp: DateTime.now());
}
});
ref.listen(
tabListProvider,
(previous, next) async {
//Only sync tabs if there has been a previous value or is not empty
final syncTabs = next.isNotEmpty || (previous?.isNotEmpty ?? false);
ref.listen(tabListProvider, (previous, next) async {
//Only sync tabs if there has been a previous value or is not empty
final syncTabs = next.isNotEmpty || (previous?.isNotEmpty ?? false);
if (syncTabs) {
await db.tabDao.syncTabs(retainTabIds: next);
}
},
);
if (syncTabs) {
await db.tabDao.syncTabs(retainTabIds: next);
}
});
ref.listen(
tabStatesProvider,
(previous, next) async {
//Since state changes occure pretty often and our map always contains
//the latest state, we cache the value before starting debouncing and
//later diff to that, to avoid frequent database writes
if (!tabStateDebouncer.isDebouncing) {
debounceStartValue = previous;
}
ref.listen(tabStatesProvider, (previous, next) async {
//Since state changes occure pretty often and our map always contains
//the latest state, we cache the value before starting debouncing and
//later diff to that, to avoid frequent database writes
if (!tabStateDebouncer.isDebouncing) {
debounceStartValue = previous;
}
tabStateDebouncer.eventOccured(() async {
await db.tabDao.updateTabs(debounceStartValue, next);
});
},
);
tabStateDebouncer.eventOccured(() async {
await db.tabDao.updateTabs(debounceStartValue, next);
});
});
ref.onDispose(() {
tabStateDebouncer.dispose();
@@ -13,9 +13,10 @@ String _$tabRepositoryHash() => r'85af29fa18ea5a4a67fbffbb9478c801dafddac2';
final tabRepositoryProvider = NotifierProvider<TabRepository, void>.internal(
TabRepository.new,
name: r'tabRepositoryProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$tabRepositoryHash,
debugGetCreateSourceHash:
const bool.fromEnvironment('dart.vm.product')
? null
: _$tabRepositoryHash,
dependencies: null,
allTransitiveDependencies: null,
);