Files
Sahil Kumar ea8e7988cb chore: update sample app.
Signed-off-by: Sahil Kumar <xdsahil@gmail.com>
2023-08-16 15:47:53 +05:30

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(),
),
];