refactor: Space routes to normal room routes

pull/516/head
Krille 2 years ago
parent b715eff839
commit e14173688a
No known key found for this signature in database

@ -138,17 +138,6 @@ abstract class AppRoutes {
), ),
], ],
), ),
GoRoute(
path: 'spaces/:roomid',
pageBuilder: (context, state) => defaultPageBuilder(
context,
ChatDetails(
roomId: state.pathParameters['roomid']!,
),
),
routes: _chatDetailsRoutes,
redirect: loggedOutRedirect,
),
GoRoute( GoRoute(
path: 'archive', path: 'archive',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
@ -213,203 +202,201 @@ abstract class AppRoutes {
? const EmptyPage() ? const EmptyPage()
: const Settings(), : const Settings(),
), ),
routes: _settingsRoutes, routes: [
redirect: loggedOutRedirect,
),
],
),
GoRoute( GoRoute(
path: ':roomid', path: 'notifications',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
ChatPage(roomId: state.pathParameters['roomid']!), const SettingsNotifications(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
routes: [ ),
GoRoute( GoRoute(
path: 'encryption', path: 'style',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const ChatEncryptionSettings(), const SettingsStyle(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: 'invite', path: 'devices',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
InvitationSelection( const DevicesSettings(),
roomId: state.pathParameters['roomid']!,
),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: 'details', path: 'chat',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
ChatDetails( const SettingsChat(),
roomId: state.pathParameters['roomid']!,
),
),
routes: _chatDetailsRoutes,
redirect: loggedOutRedirect,
), ),
], routes: [
GoRoute(
path: 'emotes',
pageBuilder: (context, state) => defaultPageBuilder(
context,
const EmotesSettings(),
), ),
],
), ),
], ],
redirect: loggedOutRedirect,
), ),
];
static final List<RouteBase> _chatDetailsRoutes = [
GoRoute( GoRoute(
path: 'members', path: 'addaccount',
redirect: loggedOutRedirect,
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
ChatMembersPage( const HomeserverPicker(),
roomId: state.pathParameters['roomid']!,
),
),
redirect: loggedOutRedirect,
), ),
routes: [
GoRoute( GoRoute(
path: 'permissions', path: 'login',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const ChatPermissionsSettings(), const Login(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
],
),
GoRoute( GoRoute(
path: 'invite', path: 'security',
redirect: loggedOutRedirect,
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
InvitationSelection(roomId: state.pathParameters['roomid']!), const SettingsSecurity(),
),
redirect: loggedOutRedirect,
), ),
routes: [
GoRoute( GoRoute(
path: 'multiple_emotes', path: 'stories',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const MultipleEmotesSettings(), const SettingsStories(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: 'emotes', path: 'ignorelist',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const EmotesSettings(), const SettingsIgnoreList(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: 'emotes/:state_key', path: '3pid',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const EmotesSettings(), const Settings3Pid(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
]; ],
),
static final List<RouteBase> _settingsRoutes = [ ],
redirect: loggedOutRedirect,
),
],
),
GoRoute( GoRoute(
path: 'notifications', path: ':roomid',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const SettingsNotifications(), ChatPage(roomId: state.pathParameters['roomid']!),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), routes: [
GoRoute( GoRoute(
path: 'style', path: 'encryption',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const SettingsStyle(), const ChatEncryptionSettings(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: 'devices', path: 'invite',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const DevicesSettings(), InvitationSelection(
roomId: state.pathParameters['roomid']!,
),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: 'chat', path: 'details',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const SettingsChat(), ChatDetails(
roomId: state.pathParameters['roomid']!,
),
), ),
routes: [ routes: [
GoRoute( GoRoute(
path: 'emotes', path: 'members',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const EmotesSettings(), ChatMembersPage(
roomId: state.pathParameters['roomid']!,
), ),
), ),
],
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: 'addaccount', path: 'permissions',
redirect: loggedOutRedirect,
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const HomeserverPicker(), const ChatPermissionsSettings(),
),
redirect: loggedOutRedirect,
), ),
routes: [
GoRoute( GoRoute(
path: 'login', path: 'invite',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const Login(), InvitationSelection(
), roomId: state.pathParameters['roomid']!,
redirect: loggedOutRedirect,
), ),
],
), ),
GoRoute(
path: 'security',
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
pageBuilder: (context, state) => defaultPageBuilder(
context,
const SettingsSecurity(),
), ),
routes: [
GoRoute( GoRoute(
path: 'stories', path: 'multiple_emotes',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const SettingsStories(), const MultipleEmotesSettings(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: 'ignorelist', path: 'emotes',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const SettingsIgnoreList(), const EmotesSettings(),
), ),
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
GoRoute( GoRoute(
path: '3pid', path: 'emotes/:state_key',
pageBuilder: (context, state) => defaultPageBuilder( pageBuilder: (context, state) => defaultPageBuilder(
context, context,
const Settings3Pid(), const EmotesSettings(),
),
redirect: loggedOutRedirect,
), ),
],
redirect: loggedOutRedirect, redirect: loggedOutRedirect,
), ),
], ],
), ),
],
),
],
),
]; ];
static Page defaultPageBuilder(BuildContext context, Widget child) => static Page defaultPageBuilder(BuildContext context, Widget child) =>

@ -5,6 +5,7 @@ import 'package:matrix/matrix.dart';
import 'package:fluffychat/pages/archive/archive.dart'; import 'package:fluffychat/pages/archive/archive.dart';
import 'package:fluffychat/pages/chat_list/chat_list_item.dart'; import 'package:fluffychat/pages/chat_list/chat_list_item.dart';
import 'package:fluffychat/widgets/layouts/max_width_body.dart';
class ArchiveView extends StatelessWidget { class ArchiveView extends StatelessWidget {
final ArchiveController controller; final ArchiveController controller;
@ -32,7 +33,9 @@ class ArchiveView extends StatelessWidget {
) )
], ],
), ),
body: Builder( body: MaxWidthBody(
withScrolling: false,
child: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
if (snapshot.hasError) { if (snapshot.hasError) {
return Center( return Center(
@ -63,6 +66,7 @@ class ArchiveView extends StatelessWidget {
}, },
), ),
), ),
),
); );
} }
} }

@ -39,12 +39,10 @@ import 'send_location_dialog.dart';
import 'sticker_picker_dialog.dart'; import 'sticker_picker_dialog.dart';
class ChatPage extends StatelessWidget { class ChatPage extends StatelessWidget {
final Widget? sideView;
final String roomId; final String roomId;
const ChatPage({ const ChatPage({
Key? key, Key? key,
this.sideView,
required this.roomId, required this.roomId,
}) : super(key: key); }) : super(key: key);
@ -69,11 +67,11 @@ class ChatPage extends StatelessWidget {
Expanded( Expanded(
child: ChatPageWithRoom( child: ChatPageWithRoom(
key: Key('chat_page_$roomId'), key: Key('chat_page_$roomId'),
sideView: sideView,
room: room, room: room,
), ),
), ),
if (FluffyThemes.isThreeColumnMode(context)) if (FluffyThemes.isThreeColumnMode(context) &&
room.membership == Membership.join)
Container( Container(
width: FluffyThemes.columnWidth, width: FluffyThemes.columnWidth,
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
@ -93,12 +91,10 @@ class ChatPage extends StatelessWidget {
} }
class ChatPageWithRoom extends StatefulWidget { class ChatPageWithRoom extends StatefulWidget {
final Widget? sideView;
final Room room; final Room room;
const ChatPageWithRoom({ const ChatPageWithRoom({
Key? key, Key? key,
required this.sideView,
required this.room, required this.room,
}) : super(key: key); }) : super(key: key);

@ -291,7 +291,7 @@ class ChatListController extends State<ChatList>
void editSpace(BuildContext context, String spaceId) async { void editSpace(BuildContext context, String spaceId) async {
await Matrix.of(context).client.getRoomById(spaceId)!.postLoad(); await Matrix.of(context).client.getRoomById(spaceId)!.postLoad();
if (mounted) { if (mounted) {
context.go('/rooms/spaces/$spaceId'); context.push('/rooms/$spaceId/details');
} }
} }

@ -73,7 +73,7 @@ class _SpaceViewState extends State<SpaceView> {
} }
if (spaceChild.roomType == 'm.space') { if (spaceChild.roomType == 'm.space') {
if (spaceChild.roomId == widget.controller.activeSpaceId) { if (spaceChild.roomId == widget.controller.activeSpaceId) {
context.go('/rooms/spaces/${spaceChild.roomId}'); context.go('/rooms/${spaceChild.roomId}');
} else { } else {
widget.controller.setActiveSpace(spaceChild.roomId); widget.controller.setActiveSpace(spaceChild.roomId);
} }

@ -35,7 +35,7 @@ class StoriesHeader extends StatelessWidget {
); );
if (result.error != null) return; if (result.error != null) return;
} }
context.go('/stories/$roomId'); context.go('/rooms/stories/$roomId');
} }
void _contextualActions(BuildContext context, Room room) async { void _contextualActions(BuildContext context, Room room) async {

@ -38,7 +38,7 @@ class NewSpaceController extends State<NewSpace> {
), ),
); );
if (roomID.error == null) { if (roomID.error == null) {
context.go('/rooms/spaces/${roomID.result!}'); context.go('/rooms/${roomID.result!}');
} }
} }

Loading…
Cancel
Save