diff --git a/lib/router.dart b/lib/router.dart index 83237b8..5352ff1 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -69,6 +69,7 @@ final _appRoutes = [ path: '/write', name: 'postEditor', builder: (context, state) => PostEditorScreen( + mode: state.uri.queryParameters['mode'], postEditId: int.tryParse( state.uri.queryParameters['editing'] ?? '', ), diff --git a/lib/screens/post/post_editor.dart b/lib/screens/post/post_editor.dart index a3f43ed..3783901 100644 --- a/lib/screens/post/post_editor.dart +++ b/lib/screens/post/post_editor.dart @@ -55,6 +55,7 @@ class PostEditorExtra { } class PostEditorScreen extends StatefulWidget { + final String? mode; final int? postEditId; final int? postReplyId; final int? postRepostId; @@ -62,6 +63,7 @@ class PostEditorScreen extends StatefulWidget { const PostEditorScreen({ super.key, + required this.mode, required this.postEditId, required this.postReplyId, required this.postRepostId, @@ -226,6 +228,9 @@ class _PostEditorScreenState extends State _registerHotKey(); _fetchRealms(); _fetchPublishers(); + if (widget.mode != null) { + _writeController.setMode(widget.mode!); + } _tabController.addListener(() { if (_tabController.indexIsChanging) { _writeController.setMode(kPostTypeAliases[_tabController.index]); @@ -270,7 +275,7 @@ class _PostEditorScreenState extends State ), const Gap(8), ], - bottom: _writeController.isNotEmpty + bottom: _writeController.isNotEmpty || widget.mode != null ? null : TabBar( controller: _tabController, diff --git a/lib/screens/sharing.dart b/lib/screens/sharing.dart index 3c86944..bde790c 100644 --- a/lib/screens/sharing.dart +++ b/lib/screens/sharing.dart @@ -61,7 +61,7 @@ class _AppSharingListenerState extends State { onTap: () { GoRouter.of(context).pushNamed( 'postEditor', - pathParameters: { + queryParameters: { 'mode': 'stories', }, extra: PostEditorExtra( diff --git a/lib/widgets/post/post_item.dart b/lib/widgets/post/post_item.dart index a23ad1e..ff0de44 100644 --- a/lib/widgets/post/post_item.dart +++ b/lib/widgets/post/post_item.dart @@ -1038,8 +1038,10 @@ class _PostContentHeader extends StatelessWidget { onTap: () { GoRouter.of(context).pushNamed( 'postEditor', - pathParameters: {'mode': data.typePlural}, - queryParameters: {'editing': data.id.toString()}, + queryParameters: { + 'editing': data.id.toString(), + 'mode': data.typePlural, + }, ); }, ), @@ -1066,8 +1068,10 @@ class _PostContentHeader extends StatelessWidget { onTap: () { GoRouter.of(context).pushNamed( 'postEditor', - pathParameters: {'mode': 'stories'}, - queryParameters: {'replying': data.id.toString()}, + queryParameters: { + 'replying': data.id.toString(), + 'mode': data.typePlural, + }, ); }, ), @@ -1082,8 +1086,10 @@ class _PostContentHeader extends StatelessWidget { onTap: () { GoRouter.of(context).pushNamed( 'postEditor', - pathParameters: {'mode': 'stories'}, - queryParameters: {'reposting': data.id.toString()}, + queryParameters: { + 'reposting': data.id.toString(), + 'mode': 'stories', + }, ); }, ), diff --git a/lib/widgets/post/post_mini_editor.dart b/lib/widgets/post/post_mini_editor.dart index a9fd8b8..460b746 100644 --- a/lib/widgets/post/post_mini_editor.dart +++ b/lib/widgets/post/post_mini_editor.dart @@ -25,7 +25,8 @@ class PostMiniEditor extends StatefulWidget { } class _PostMiniEditorState extends State { - final PostWriteController _writeController = PostWriteController(doLoadFromTemporary: false); + final PostWriteController _writeController = + PostWriteController(doLoadFromTemporary: false); bool _isFetching = false; @@ -44,8 +45,9 @@ class _PostMiniEditorState extends State { resp.data?.map((e) => SnPublisher.fromJson(e)) ?? [], ); final beforeId = config.prefs.getInt('int_last_publisher_id'); - _writeController - .setPublisher(_publishers?.where((ele) => ele.id == beforeId).firstOrNull ?? _publishers?.firstOrNull); + _writeController.setPublisher( + _publishers?.where((ele) => ele.id == beforeId).firstOrNull ?? + _publishers?.firstOrNull); } catch (err) { if (!mounted) return; context.showErrorDialog(err); @@ -99,11 +101,17 @@ class _PostMiniEditorState extends State { Expanded( child: Column( mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, children: [ - Text(item.nick).textStyle(Theme.of(context).textTheme.bodyMedium!), + Text(item.nick).textStyle( + Theme.of(context) + .textTheme + .bodyMedium!), Text('@${item.name}') - .textStyle(Theme.of(context).textTheme.bodySmall!) + .textStyle(Theme.of(context) + .textTheme + .bodySmall!) .fontSize(12), ], ), @@ -120,7 +128,8 @@ class _PostMiniEditorState extends State { CircleAvatar( radius: 16, backgroundColor: Colors.transparent, - foregroundColor: Theme.of(context).colorScheme.onSurface, + foregroundColor: + Theme.of(context).colorScheme.onSurface, child: const Icon(Symbols.add), ), const Gap(8), @@ -129,7 +138,8 @@ class _PostMiniEditorState extends State { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text('publishersNew').tr().textStyle(Theme.of(context).textTheme.bodyMedium!), + Text('publishersNew').tr().textStyle( + Theme.of(context).textTheme.bodyMedium!), ], ), ), @@ -140,7 +150,9 @@ class _PostMiniEditorState extends State { value: _writeController.publisher, onChanged: (SnPublisher? value) { if (value == null) { - GoRouter.of(context).pushNamed('accountPublisherNew').then((value) { + GoRouter.of(context) + .pushNamed('accountPublisherNew') + .then((value) { if (value == true) { _publishers = null; _fetchPublishers(); @@ -176,7 +188,8 @@ class _PostMiniEditorState extends State { ), border: InputBorder.none, ), - onTapOutside: (_) => FocusManager.instance.primaryFocus?.unfocus(), + onTapOutside: (_) => + FocusManager.instance.primaryFocus?.unfocus(), ), ), const Gap(8), @@ -185,7 +198,8 @@ class _PostMiniEditorState extends State { TweenAnimationBuilder( tween: Tween(begin: 0, end: _writeController.progress), duration: Duration(milliseconds: 300), - builder: (context, value, _) => LinearProgressIndicator(value: value, minHeight: 2), + builder: (context, value, _) => + LinearProgressIndicator(value: value, minHeight: 2), ) else if (_writeController.isBusy) const LinearProgressIndicator(value: null, minHeight: 2), @@ -200,15 +214,17 @@ class _PostMiniEditorState extends State { onPressed: () { GoRouter.of(context).pushNamed( 'postEditor', - pathParameters: {'mode': 'stories'}, queryParameters: { - if (widget.postReplyId != null) 'replying': widget.postReplyId.toString(), + if (widget.postReplyId != null) + 'replying': widget.postReplyId.toString(), + 'mode': 'stories', }, ); }, ), TextButton.icon( - onPressed: (_writeController.isBusy || _writeController.publisher == null) + onPressed: (_writeController.isBusy || + _writeController.publisher == null) ? null : () { _writeController.sendPost(context).then((_) {