feat: add Gemini and Spartan protocol support

This commit is contained in:
randogoth 2026-10-11 22:07:25 +03:00
parent a4a49f41d7
commit fa7aa5557c
48 changed files with 4992 additions and 161 deletions

View file

@ -3,8 +3,12 @@ import 'dart:async' show unawaited;
import 'dart:ui' show PlatformDispatcher;
import 'package:actors/actors.dart';
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:signals/signals_flutter.dart' show SignalBuilder;
import '../application/actors/fetch_actor.dart';
@ -13,8 +17,9 @@ import '../application/controllers/browser_controller.dart';
import '../application/controllers/reader_settings_controller.dart';
import '../application/controllers/subscriptions_controller.dart';
import '../application/fonts.dart';
import '../application/internal_actions.dart';
import '../application/internal_actions.dart' show InternalActions, PickedPem;
import '../application/internal_pages.dart';
import '../application/key_store.dart';
import '../database/database.dart';
import '../l10n/locales.dart';
import '../l10n/strings.dart';
@ -29,12 +34,19 @@ class AppDependencies {
MewsDatabase? database,
Actor<FetchCommand, FetchResult>? fetch,
Strings? strings,
KeyStore? keys,
Future<PickedPem?> Function(String title)? pickPemFile,
}) : db = database ?? MewsDatabase(),
fetch = fetch ?? Actor.create(FetchHandler.new),
strings = strings ?? Strings() {
settings = ReaderSettingsController(db);
bookmarks = BookmarksController(db);
subscriptions = SubscriptionsController(db: db, fetch: this.fetch);
this.keys = keys ??
KeyStore(() async {
final support = await getApplicationSupportDirectory();
return Directory(p.join(support.path, 'keys'));
});
internalPages = InternalPages(
db: db,
settings: settings,
@ -46,10 +58,14 @@ class AppDependencies {
settings: settings,
bookmarks: bookmarks,
subscriptions: subscriptions,
keys: this.keys,
strings: this.strings,
pickPemFile: pickPemFile,
);
browser = BrowserController(
db: db,
fetch: this.fetch,
keys: this.keys,
internalPages: internalPages,
internalActions: internalActions,
);
@ -63,6 +79,7 @@ class AppDependencies {
final MewsDatabase db;
final Actor<FetchCommand, FetchResult> fetch;
late final KeyStore keys;
late final BrowserController browser;
late final ReaderSettingsController settings;
late final BookmarksController bookmarks;