ea8e7988cb
Signed-off-by: Sahil Kumar <xdsahil@gmail.com>
130 lines
4.4 KiB
Dart
130 lines
4.4 KiB
Dart
import 'package:collection/collection.dart';
|
|
import 'package:example/pages/advanced_options_page.dart';
|
|
import 'package:example/pages/channel_list_page.dart';
|
|
import 'package:example/pages/channel_page.dart';
|
|
import 'package:example/pages/chat_info_screen.dart';
|
|
import 'package:example/pages/group_chat_details_screen.dart';
|
|
import 'package:example/pages/group_info_screen.dart';
|
|
import 'package:example/pages/new_chat_screen.dart';
|
|
import 'package:example/pages/new_group_chat_screen.dart';
|
|
import 'package:example/pages/thread_page.dart';
|
|
import 'package:example/routes/routes.dart';
|
|
import 'package:example/state/new_group_chat_state.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:stream_chat_flutter/stream_chat_flutter.dart';
|
|
|
|
import '../pages/choose_user_page.dart';
|
|
|
|
final appRoutes = [
|
|
GoRoute(
|
|
name: Routes.CHANNEL_LIST_PAGE.name,
|
|
path: Routes.CHANNEL_LIST_PAGE.path,
|
|
builder: (BuildContext context, GoRouterState state) =>
|
|
const ChannelListPage(),
|
|
routes: [
|
|
GoRoute(
|
|
name: Routes.CHANNEL_PAGE.name,
|
|
path: Routes.CHANNEL_PAGE.path,
|
|
builder: (context, state) {
|
|
final channel = StreamChat.of(context)
|
|
.client
|
|
.state
|
|
.channels[state.pathParameters['cid']];
|
|
final messageId = state.uri.queryParameters['mid'];
|
|
final parentId = state.uri.queryParameters['pid'];
|
|
|
|
Message? parentMessage;
|
|
if (parentId != null) {
|
|
parentMessage = channel?.state!.messages
|
|
.firstWhereOrNull((it) => it.id == parentId);
|
|
}
|
|
|
|
return StreamChannel(
|
|
channel: channel!,
|
|
initialMessageId: messageId,
|
|
child: Builder(
|
|
builder: (context) {
|
|
return (parentMessage != null)
|
|
? ThreadPage(parent: parentMessage)
|
|
: ChannelPage(
|
|
highlightInitialMessage: messageId != null,
|
|
);
|
|
},
|
|
),
|
|
);
|
|
},
|
|
routes: [
|
|
GoRoute(
|
|
name: Routes.CHAT_INFO_SCREEN.name,
|
|
path: Routes.CHAT_INFO_SCREEN.path,
|
|
builder: (BuildContext context, GoRouterState state) {
|
|
final channel = StreamChat.of(context)
|
|
.client
|
|
.state
|
|
.channels[state.pathParameters['cid']];
|
|
return StreamChannel(
|
|
channel: channel!,
|
|
child: ChatInfoScreen(
|
|
user: state.extra as User?,
|
|
messageTheme: StreamChatTheme.of(context).ownMessageTheme,
|
|
),
|
|
);
|
|
},
|
|
),
|
|
GoRoute(
|
|
name: Routes.GROUP_INFO_SCREEN.name,
|
|
path: Routes.GROUP_INFO_SCREEN.path,
|
|
builder: (BuildContext context, GoRouterState state) {
|
|
final channel = StreamChat.of(context)
|
|
.client
|
|
.state
|
|
.channels[state.pathParameters['cid']];
|
|
return StreamChannel(
|
|
channel: channel!,
|
|
child: GroupInfoScreen(
|
|
messageTheme: StreamChatTheme.of(context).ownMessageTheme,
|
|
),
|
|
);
|
|
},
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
GoRoute(
|
|
name: Routes.NEW_CHAT.name,
|
|
path: Routes.NEW_CHAT.path,
|
|
builder: (BuildContext context, GoRouterState state) {
|
|
return const NewChatScreen();
|
|
},
|
|
),
|
|
GoRoute(
|
|
name: Routes.NEW_GROUP_CHAT.name,
|
|
path: Routes.NEW_GROUP_CHAT.path,
|
|
builder: (BuildContext context, GoRouterState state) {
|
|
return const NewGroupChatScreen();
|
|
},
|
|
),
|
|
GoRoute(
|
|
name: Routes.NEW_GROUP_CHAT_DETAILS.name,
|
|
path: Routes.NEW_GROUP_CHAT_DETAILS.path,
|
|
builder: (BuildContext context, GoRouterState state) {
|
|
final groupChatState = state.extra as NewGroupChatState;
|
|
return GroupChatDetailsScreen(groupChatState: groupChatState);
|
|
},
|
|
),
|
|
GoRoute(
|
|
name: Routes.CHOOSE_USER.name,
|
|
path: Routes.CHOOSE_USER.path,
|
|
builder: (BuildContext context, GoRouterState state) =>
|
|
const ChooseUserPage(),
|
|
),
|
|
GoRoute(
|
|
name: Routes.ADVANCED_OPTIONS.name,
|
|
path: Routes.ADVANCED_OPTIONS.path,
|
|
builder: (BuildContext context, GoRouterState state) =>
|
|
const AdvancedOptionsPage(),
|
|
),
|
|
];
|