intermediate
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_mozilla_components/src/extensions/subject.dart';
|
||||
import 'package:flutter_mozilla_components/src/pigeons/gecko.g.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
|
||||
@@ -8,7 +9,6 @@ class GeckoReaderableService extends ReaderViewController {
|
||||
final ReaderViewEvents _events;
|
||||
|
||||
final _appearanceVisibility = BehaviorSubject<bool>();
|
||||
final _readerVisibility = BehaviorSubject<bool>();
|
||||
|
||||
Stream<bool> get appearanceVisibility => _appearanceVisibility.stream;
|
||||
|
||||
@@ -21,8 +21,8 @@ class GeckoReaderableService extends ReaderViewController {
|
||||
}
|
||||
|
||||
@override
|
||||
void appearanceButtonVisibility(bool visible) {
|
||||
_appearanceVisibility.add(visible);
|
||||
void appearanceButtonVisibility(int timestamp, bool visible) {
|
||||
_appearanceVisibility.addWhenMoreRecent(timestamp, null, visible);
|
||||
}
|
||||
|
||||
GeckoReaderableService.setUp({
|
||||
@@ -43,6 +43,5 @@ class GeckoReaderableService extends ReaderViewController {
|
||||
|
||||
void dispose() {
|
||||
unawaited(_appearanceVisibility.close());
|
||||
unawaited(_readerVisibility.close());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_mozilla_components/src/extensions/subject.dart';
|
||||
import 'package:flutter_mozilla_components/src/pigeons/gecko.g.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
|
||||
final _apiInstance = GeckoSuggestionApi();
|
||||
|
||||
class GeckoSuggestionsService extends GeckoSuggestionEvents {
|
||||
final GeckoSuggestionApi _api;
|
||||
final _suggestionsSubject = BehaviorSubject<List<GeckoSuggestion>>();
|
||||
|
||||
Stream<List<GeckoSuggestion>> get suggestionsStream =>
|
||||
_suggestionsSubject.stream;
|
||||
|
||||
GeckoSuggestionsService.setUp({
|
||||
BinaryMessenger? binaryMessenger,
|
||||
String messageChannelSuffix = '',
|
||||
GeckoSuggestionApi? api,
|
||||
}) : _api = api ?? _apiInstance {
|
||||
GeckoSuggestionEvents.setUp(
|
||||
this,
|
||||
binaryMessenger: binaryMessenger,
|
||||
messageChannelSuffix: messageChannelSuffix,
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> onInputChanged(
|
||||
String text, {
|
||||
List<GeckoSuggestionType> providers = const [
|
||||
GeckoSuggestionType.session,
|
||||
GeckoSuggestionType.clipboard,
|
||||
GeckoSuggestionType.history,
|
||||
],
|
||||
}) {
|
||||
return _api.onInputChanged(text, providers);
|
||||
}
|
||||
|
||||
@override
|
||||
void onSuggestionResult(
|
||||
int timestamp,
|
||||
GeckoSuggestionType suggestionType,
|
||||
List<GeckoSuggestion> suggestions,
|
||||
) {
|
||||
_suggestionsSubject.addWhenMoreRecent(
|
||||
timestamp,
|
||||
suggestionType,
|
||||
suggestions,
|
||||
);
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unawaited(_suggestionsSubject.close());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_mozilla_components/src/extensions/subject.dart';
|
||||
import 'package:flutter_mozilla_components/src/pigeons/gecko.g.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
|
||||
class GeckoTabContentService extends GeckoTabContentEvents {
|
||||
final _contentSubject = BehaviorSubject<TabContent>();
|
||||
|
||||
Stream<TabContent> get tabContentStream => _contentSubject.stream;
|
||||
|
||||
GeckoTabContentService.setUp({
|
||||
BinaryMessenger? binaryMessenger,
|
||||
String messageChannelSuffix = '',
|
||||
}) {
|
||||
GeckoTabContentEvents.setUp(
|
||||
this,
|
||||
binaryMessenger: binaryMessenger,
|
||||
messageChannelSuffix: messageChannelSuffix,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void onContentUpdate(int timestamp, TabContent content) {
|
||||
_contentSubject.addWhenMoreRecent(timestamp, content.tabId, content);
|
||||
}
|
||||
|
||||
void dispose() {
|
||||
unawaited(_contentSubject.close());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user