added support for translations and printing
This commit is contained in:
@@ -76,6 +76,26 @@ class TabSession extends _$TabSession {
|
||||
return _sessionService.saveToPdf();
|
||||
}
|
||||
|
||||
Future<void> printContent() {
|
||||
return _sessionService.printContent();
|
||||
}
|
||||
|
||||
Future<void> translate({
|
||||
required String fromLanguage,
|
||||
required String toLanguage,
|
||||
bool? downloadModel,
|
||||
}) {
|
||||
return _sessionService.translate(
|
||||
fromLanguage: fromLanguage,
|
||||
toLanguage: toLanguage,
|
||||
options: TranslationOptions(downloadModel: downloadModel ?? true),
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> translateRestore() {
|
||||
return _sessionService.translateRestore();
|
||||
}
|
||||
|
||||
@override
|
||||
void build({required String? tabId}) {
|
||||
_sessionService = (tabId != null)
|
||||
|
||||
@@ -57,7 +57,7 @@ final class TabSessionProvider extends $NotifierProvider<TabSession, void> {
|
||||
}
|
||||
}
|
||||
|
||||
String _$tabSessionHash() => r'5be471574bb868889cc1eee37ae7e4570a9e21a4';
|
||||
String _$tabSessionHash() => r'b9381c334672fd3f733a4cc86ce696fb7de6fa5d';
|
||||
|
||||
final class TabSessionFamily extends $Family
|
||||
with $ClassFamilyOverride<TabSession, void, void, void, String?> {
|
||||
|
||||
@@ -31,6 +31,7 @@ import 'package:weblibre/features/geckoview/domain/entities/states/history.dart'
|
||||
import 'package:weblibre/features/geckoview/domain/entities/states/readerable.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/entities/states/security.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/entities/states/tab.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/entities/states/translation.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers/selected_tab.dart';
|
||||
import 'package:weblibre/features/geckoview/features/find_in_page/domain/repositories/find_in_page.dart';
|
||||
@@ -203,6 +204,16 @@ class TabStates extends _$TabStates {
|
||||
);
|
||||
}
|
||||
|
||||
void _onTabTranslationStateChange(TabTranslationEvent event) {
|
||||
final TabTranslationEvent(:tabId, :state) = event;
|
||||
|
||||
final current = this.state[tabId] ?? TabState.$default(tabId);
|
||||
this.state = {...this.state}
|
||||
..[tabId] = current.copyWith.translationState(
|
||||
TranslationState.fromData(state),
|
||||
);
|
||||
}
|
||||
|
||||
void _onFindResultsChange(FindResultsEvent event) {
|
||||
final FindResultsEvent(:tabId, :results) = event;
|
||||
final current = state[tabId] ?? TabState.$default(tabId);
|
||||
@@ -317,6 +328,18 @@ class TabStates extends _$TabStates {
|
||||
);
|
||||
},
|
||||
),
|
||||
eventService.tabTranslationEvents.listen(
|
||||
(event) {
|
||||
_onTabTranslationStateChange(event);
|
||||
},
|
||||
onError: (Object error, StackTrace stackTrace) {
|
||||
logger.e(
|
||||
'Error in tab translation events',
|
||||
error: error,
|
||||
stackTrace: stackTrace,
|
||||
);
|
||||
},
|
||||
),
|
||||
];
|
||||
|
||||
ref.listen(
|
||||
@@ -331,6 +354,7 @@ class TabStates extends _$TabStates {
|
||||
onSecurityInfoStateChange: true,
|
||||
onHistoryStateChange: true,
|
||||
onFindResults: true,
|
||||
onTranslationStateChange: true,
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -41,7 +41,7 @@ final class TabStatesProvider
|
||||
}
|
||||
}
|
||||
|
||||
String _$tabStatesHash() => r'0fd97193ff963006e1943436b25b025dd3885c65';
|
||||
String _$tabStatesHash() => r'6fc9a91b1343f9ae0b442100bed20e42448afa37';
|
||||
|
||||
abstract class _$TabStates extends $Notifier<Map<String, TabState>> {
|
||||
Map<String, TabState> build();
|
||||
|
||||
Reference in New Issue
Block a user