Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
112 changes: 65 additions & 47 deletions lib/src/controller/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,22 @@ class AppRouter extends RootStackRouter {

@override
List<AutoRoute> get routes => [
RedirectRoute(path: '/', redirectTo: '/$defaultInstance'),
AutoRoute(
page: AppInstanceRoute.page,
path: '/:instance',
children: [
AutoRoute(page: AppHome.page, path: ''),
AutoRoute(page: FeedRoute.page, path: 'feed'),
AutoRoute(page: ExploreRoute.page, path: 'explore'),
AutoRoute(
page: AppHome.page,
path: '',
children: [
AutoRoute(page: FeedRoute.page, path: 'home'),
AutoRoute(page: ExploreTab.page, path: 'explore'),
AutoRoute(page: SelfFeed.page, path: 'account'),
AutoRoute(page: InboxRoute.page, path: 'inbox'),
AutoRoute(page: SettingsRoute.page, path: 'settings'),
],
),

AutoRoute(page: ThreadRoute.page, path: 'c/:communityName/thread/:id'),
AutoRoute(
Expand Down Expand Up @@ -56,51 +65,60 @@ class AppRouter extends RootStackRouter {
AutoRoute(page: EditProfileRoute.page, path: 'profile/edit'),
AutoRoute(page: EditFilterListRoute.page, path: 'filter/:filterList'),
AutoRoute(page: EditFeedRoute.page, path: 'feed/:feed/edit'),
],
),
RedirectRoute(path: '/', redirectTo: '/$defaultInstance'),
AutoRoute(page: ExploreRoute.page, path: 'search'),

//settings
AutoRoute(page: BehaviorSettingsRoute.page, path: '/settings/behavior'),
AutoRoute(page: DisplaySettingsRoute.page, path: '/settings/display'),
AutoRoute(page: FeedSettingsRoute.page, path: '/settings/feeds'),
AutoRoute(page: FeedActionsSettingsRoute.page, path: '/settings/actions'),
AutoRoute(page: FeedDefaultSettingsRoute.page, path: '/settings/defaults'),
AutoRoute(
page: FeedSourceOrderSettingsRoute.page,
path: '/settings/defaults/source',
),
AutoRoute(
page: FeedViewOrderSettingsRoute.page,
path: '/settings/defaults/view',
),
AutoRoute(
page: FeedSortOrderSettingsRoute.page,
path: '/settings/defaults/sort',
),
AutoRoute(page: TagsRoute.page, path: '/settings/tags'),
AutoRoute(page: FilterListsRoute.page, path: '/settings/filters'),
AutoRoute(
page: NotificationSettingsRoute.page,
path: '/settings/notifications',
),
AutoRoute(page: DataUtilitiesRoute.page, path: '/settings/utilities'),
AutoRoute(
page: AccountMigrationRoute.page,
path: '/settings/utilities/migration',
),
AutoRoute(page: AccountResetRoute.page, path: '/settings/utilities/reset'),
AutoRoute(page: AboutRoute.page, path: '/settings/about'),
AutoRoute(page: DebugSettingsRoute.page, path: '/settings/about/debug'),
AutoRoute(page: LogConsole.page, path: '/settings/about/debug/log'),
// DriftDbViewer is part of a library so can't use code gen.
NamedRouteDef(
name: 'DriftDbViewer',
builder: (context, data) => DriftDbViewer(database),
path: '/settings/about/debug/database',
//settings
AutoRoute(page: BehaviorSettingsRoute.page, path: 'settings/behavior'),
AutoRoute(page: DisplaySettingsRoute.page, path: 'settings/display'),
AutoRoute(page: FeedSettingsRoute.page, path: 'settings/feeds'),
AutoRoute(
page: FeedActionsSettingsRoute.page,
path: 'settings/actions',
),
AutoRoute(
page: FeedDefaultSettingsRoute.page,
path: 'settings/defaults',
),
AutoRoute(
page: FeedSourceOrderSettingsRoute.page,
path: 'settings/defaults/source',
),
AutoRoute(
page: FeedViewOrderSettingsRoute.page,
path: 'settings/defaults/view',
),
AutoRoute(
page: FeedSortOrderSettingsRoute.page,
path: 'settings/defaults/sort',
),
AutoRoute(page: TagsRoute.page, path: 'settings/tags'),
AutoRoute(page: FilterListsRoute.page, path: 'settings/filters'),
AutoRoute(
page: NotificationSettingsRoute.page,
path: 'settings/notifications',
),
AutoRoute(page: DataUtilitiesRoute.page, path: 'settings/utilities'),
AutoRoute(
page: AccountMigrationRoute.page,
path: 'settings/utilities/migration',
),
AutoRoute(
page: AccountResetRoute.page,
path: 'settings/utilities/reset',
),
AutoRoute(page: AboutRoute.page, path: 'settings/about'),
AutoRoute(page: DebugSettingsRoute.page, path: 'settings/about/debug'),
AutoRoute(page: LogConsole.page, path: 'settings/about/debug/log'),
// DriftDbViewer is part of a library so can't use code gen.
NamedRouteDef(
name: 'DriftDbViewer',
builder: (context, data) => DriftDbViewer(database),
path: 'settings/about/debug/database',
),
AutoRoute(page: LoginSelectRoute.page, path: 'settings/login'),
AutoRoute(page: LoginConfirmRoute.page, path: 'settings/login/confirm'),
AutoRoute(page: WebViewRoute.page, path: 'webview'),
],
),
AutoRoute(page: LoginSelectRoute.page, path: '/settings/login'),
AutoRoute(page: LoginConfirmRoute.page, path: '/settings/login/confirm'),
AutoRoute(page: WebViewRoute.page, path: '/webview'),
];
}
17 changes: 6 additions & 11 deletions lib/src/screens/account/inbox_screen.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:auto_route/annotations.dart';
import 'package:flutter/material.dart';
import 'package:interstellar/src/controller/controller.dart';
import 'package:interstellar/src/screens/account/messages/messages_screen.dart';
Expand All @@ -7,21 +8,15 @@ import 'package:interstellar/src/utils/utils.dart';
import 'package:material_symbols_icons/symbols.dart';
import 'package:provider/provider.dart';

class InboxScreen extends StatefulWidget {
const InboxScreen({super.key});
@RoutePage()
class InboxScreen extends StatelessWidget {
const InboxScreen({super.key, this.placeholder = false});

@override
State<InboxScreen> createState() => _InboxScreenState();
}

class _InboxScreenState extends State<InboxScreen>
with AutomaticKeepAliveClientMixin<InboxScreen> {
@override
bool get wantKeepAlive => true;
// This is so the generated route includes parameters so that a key can be passed.
final bool placeholder;

@override
Widget build(BuildContext context) {
super.build(context);
return whenLoggedIn(
context,
DefaultTabController(
Expand Down
15 changes: 7 additions & 8 deletions lib/src/screens/account/self_feed.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:auto_route/annotations.dart';
import 'package:flutter/material.dart';
import 'package:interstellar/src/controller/controller.dart';
import 'package:interstellar/src/models/user.dart';
Expand All @@ -8,21 +9,21 @@ import 'package:interstellar/src/widgets/loading_template.dart';
import 'package:oauth2/oauth2.dart';
import 'package:provider/provider.dart';

@RoutePage()
class SelfFeed extends StatefulWidget {
const SelfFeed({super.key});
const SelfFeed({super.key, this.placeholder = false});

// This is so the generated route includes parameters so that a key can be passed.
final bool placeholder;

@override
State<SelfFeed> createState() => _SelfFeedState();
}

class _SelfFeedState extends State<SelfFeed>
with AutomaticKeepAliveClientMixin<SelfFeed> {
class _SelfFeedState extends State<SelfFeed> {
DetailedUserModel? _meUser;
AuthorizationException? _authError;

@override
bool get wantKeepAlive => true;

@override
void initState() {
super.initState();
Expand Down Expand Up @@ -52,8 +53,6 @@ class _SelfFeedState extends State<SelfFeed>

@override
Widget build(BuildContext context) {
super.build(context);

final ac = context.read<AppController>();

if (!ac.isLoggedIn) {
Expand Down
Loading