feat: retire FOB and sheet; settings as a Mews page and actions on the address bar

This commit is contained in:
randogoth 2026-10-11 12:14:32 +03:00
parent 6f9c0e587a
commit 28ff7ca327
10 changed files with 324 additions and 361 deletions

View file

@ -8,10 +8,8 @@ import '../../mews/document.dart';
import '../../mews/parser.dart' show mewsPlainText;
import '../app.dart';
import 'address_bar.dart';
import 'fob.dart';
import 'mews_page_view.dart';
import 'palettes.dart';
import 'settings_sheet.dart';
import 'swipe_navigator.dart';
/// The whole v1 UI: an address bar that hides on scroll, the page reader with
@ -27,8 +25,8 @@ class ReaderScreen extends StatefulWidget {
class _ReaderScreenState extends State<ReaderScreen> {
final _scroll = ScrollController();
/// Address bar and FOB share one visibility: on screen from the start,
/// hidden while the reader scrolls down, back on any upward scroll.
/// The address bar is on screen from the start, hidden while the reader
/// scrolls down, back on any upward scroll.
bool _chromeVisible = true;
bool _showBrokenText = false;
final _reportedNewPosts = <String>{};
@ -63,9 +61,7 @@ class _ReaderScreenState extends State<ReaderScreen> {
@override
Widget build(BuildContext context) {
final scope = AppScope.of(context);
final deps = scope.deps;
final strings = scope.strings;
final deps = AppScope.of(context).deps;
return Scaffold(
body: Column(
@ -116,15 +112,6 @@ class _ReaderScreenState extends State<ReaderScreen> {
child: Stack(
children: [
Positioned.fill(child: _body(context, page)),
Positioned(
right: 0,
bottom: 0,
child: Fob(
visible: _chromeVisible,
label: strings.t('reader-fob-label'),
onTap: () => showReaderSettingsSheet(context),
),
),
if (browser.loading.value)
const Positioned(
top: 8,