remove tab deletion cache
This commit is contained in:
@@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2024-2025 Fabian Freund.
|
|
||||||
*
|
|
||||||
* This file is part of WebLibre
|
|
||||||
* (see https://weblibre.eu).
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
||||||
|
|
||||||
part 'tab_delete_cache.g.dart';
|
|
||||||
|
|
||||||
@Riverpod(keepAlive: true)
|
|
||||||
class TabDeleteCache extends _$TabDeleteCache {
|
|
||||||
void delete(String tabId) {
|
|
||||||
state = {...state, tabId};
|
|
||||||
|
|
||||||
Timer(const Duration(seconds: 3), () {
|
|
||||||
if (ref.mounted) {
|
|
||||||
state = {...state}..remove(tabId);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Set<String> build() {
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
|
||||||
|
|
||||||
part of 'tab_delete_cache.dart';
|
|
||||||
|
|
||||||
// **************************************************************************
|
|
||||||
// RiverpodGenerator
|
|
||||||
// **************************************************************************
|
|
||||||
|
|
||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
|
||||||
// ignore_for_file: type=lint, type=warning
|
|
||||||
|
|
||||||
@ProviderFor(TabDeleteCache)
|
|
||||||
const tabDeleteCacheProvider = TabDeleteCacheProvider._();
|
|
||||||
|
|
||||||
final class TabDeleteCacheProvider
|
|
||||||
extends $NotifierProvider<TabDeleteCache, Set<String>> {
|
|
||||||
const TabDeleteCacheProvider._()
|
|
||||||
: super(
|
|
||||||
from: null,
|
|
||||||
argument: null,
|
|
||||||
retry: null,
|
|
||||||
name: r'tabDeleteCacheProvider',
|
|
||||||
isAutoDispose: false,
|
|
||||||
dependencies: null,
|
|
||||||
$allTransitiveDependencies: null,
|
|
||||||
);
|
|
||||||
|
|
||||||
@override
|
|
||||||
String debugGetCreateSourceHash() => _$tabDeleteCacheHash();
|
|
||||||
|
|
||||||
@$internal
|
|
||||||
@override
|
|
||||||
TabDeleteCache create() => TabDeleteCache();
|
|
||||||
|
|
||||||
/// {@macro riverpod.override_with_value}
|
|
||||||
Override overrideWithValue(Set<String> value) {
|
|
||||||
return $ProviderOverride(
|
|
||||||
origin: this,
|
|
||||||
providerOverride: $SyncValueProvider<Set<String>>(value),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String _$tabDeleteCacheHash() => r'd645d41fc2bf7b132f0cbdf1914289ca66783689';
|
|
||||||
|
|
||||||
abstract class _$TabDeleteCache extends $Notifier<Set<String>> {
|
|
||||||
Set<String> build();
|
|
||||||
@$mustCallSuper
|
|
||||||
@override
|
|
||||||
void runBuild() {
|
|
||||||
final created = build();
|
|
||||||
final ref = this.ref as $Ref<Set<String>, Set<String>>;
|
|
||||||
final element =
|
|
||||||
ref.element
|
|
||||||
as $ClassProviderElement<
|
|
||||||
AnyNotifier<Set<String>, Set<String>>,
|
|
||||||
Set<String>,
|
|
||||||
Object?,
|
|
||||||
Object?
|
|
||||||
>;
|
|
||||||
element.handleValue(ref, created);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -17,13 +17,11 @@
|
|||||||
* You should have received a copy of the GNU Affero General Public License
|
* You should have received a copy of the GNU Affero General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
import 'package:collection/collection.dart';
|
|
||||||
import 'package:fast_equatable/fast_equatable.dart';
|
import 'package:fast_equatable/fast_equatable.dart';
|
||||||
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
|
import 'package:flutter_mozilla_components/flutter_mozilla_components.dart';
|
||||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||||
import 'package:weblibre/core/logger.dart';
|
import 'package:weblibre/core/logger.dart';
|
||||||
import 'package:weblibre/features/geckoview/domain/providers.dart';
|
import 'package:weblibre/features/geckoview/domain/providers.dart';
|
||||||
import 'package:weblibre/features/geckoview/domain/providers/tab_delete_cache.dart';
|
|
||||||
|
|
||||||
part 'tab_list.g.dart';
|
part 'tab_list.g.dart';
|
||||||
|
|
||||||
@@ -51,10 +49,7 @@ class TabList extends _$TabList {
|
|||||||
);
|
);
|
||||||
|
|
||||||
final tabListSub = eventService.tabListEvents.listen((tabs) {
|
final tabListSub = eventService.tabListEvents.listen((tabs) {
|
||||||
final deletedTabs = ref.read(tabDeleteCacheProvider);
|
final equatableTabs = EquatableValue(tabs);
|
||||||
final equatableTabs = EquatableValue(
|
|
||||||
tabs.whereNot(deletedTabs.contains).toList(),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (equatableTabs != state) {
|
if (equatableTabs != state) {
|
||||||
state = equatableTabs;
|
state = equatableTabs;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ final class TabListProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$tabListHash() => r'e93d68e7c362454e803711e5c38abcc8f188b427';
|
String _$tabListHash() => r'0b9ca1e089a59895df4cbf28691c2849a7004f08';
|
||||||
|
|
||||||
abstract class _$TabList extends $Notifier<EquatableValue<List<String>>> {
|
abstract class _$TabList extends $Notifier<EquatableValue<List<String>>> {
|
||||||
EquatableValue<List<String>> build();
|
EquatableValue<List<String>> build();
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import 'package:weblibre/core/logger.dart';
|
|||||||
import 'package:weblibre/features/geckoview/domain/entities/states/tab.dart';
|
import 'package:weblibre/features/geckoview/domain/entities/states/tab.dart';
|
||||||
import 'package:weblibre/features/geckoview/domain/providers.dart';
|
import 'package:weblibre/features/geckoview/domain/providers.dart';
|
||||||
import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart';
|
import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart';
|
||||||
import 'package:weblibre/features/geckoview/domain/providers/tab_delete_cache.dart';
|
|
||||||
import 'package:weblibre/features/geckoview/domain/providers/tab_list.dart';
|
import 'package:weblibre/features/geckoview/domain/providers/tab_list.dart';
|
||||||
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
|
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
|
||||||
import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart';
|
import 'package:weblibre/features/geckoview/features/tabs/data/models/container_data.dart';
|
||||||
@@ -349,8 +348,6 @@ class TabRepository extends _$TabRepository {
|
|||||||
await _selectNextTab(tabId);
|
await _selectNextTab(tabId);
|
||||||
}
|
}
|
||||||
|
|
||||||
ref.read(tabDeleteCacheProvider.notifier).delete(tabId);
|
|
||||||
|
|
||||||
return _tabsService.removeTab(tabId: tabId);
|
return _tabsService.removeTab(tabId: tabId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -360,10 +357,6 @@ class TabRepository extends _$TabRepository {
|
|||||||
await _selectNextTab(selectedTab!);
|
await _selectNextTab(selectedTab!);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (final tabId in tabIds) {
|
|
||||||
ref.read(tabDeleteCacheProvider.notifier).delete(tabId);
|
|
||||||
}
|
|
||||||
|
|
||||||
return _tabsService.removeTabs(ids: tabIds);
|
return _tabsService.removeTabs(ids: tabIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ final class TabRepositoryProvider
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String _$tabRepositoryHash() => r'84c3abff33a3b2ad6af91b97d6d3c4e9efea4ac2';
|
String _$tabRepositoryHash() => r'ef1116cbf09f456deae7a7d3f5cee3ba843d7430';
|
||||||
|
|
||||||
abstract class _$TabRepository extends $Notifier<void> {
|
abstract class _$TabRepository extends $Notifier<void> {
|
||||||
void build();
|
void build();
|
||||||
|
|||||||
Reference in New Issue
Block a user