TF-934 Implement search by query when open new tab

This commit is contained in:
dab246
2022-11-11 00:11:48 +07:00
committed by Dat H. Pham
parent 6050ee5386
commit 71abe0cf37
22 changed files with 224 additions and 120 deletions
+4 -1
View File
@@ -2,6 +2,7 @@
import 'package:equatable/equatable.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
enum DashboardType {
normal,
@@ -12,13 +13,15 @@ class NavigationRouter with EquatableMixin {
final EmailId? emailId;
final MailboxId? mailboxId;
final DashboardType dashboardType;
final SearchQuery? searchQuery;
NavigationRouter({
this.emailId,
this.mailboxId,
this.searchQuery,
this.dashboardType = DashboardType.normal
});
@override
List<Object?> get props => [emailId, mailboxId, dashboardType];
List<Object?> get props => [emailId, mailboxId, searchQuery, dashboardType];
}
+22 -10
View File
@@ -1,4 +1,5 @@
import 'package:core/core.dart';
import 'package:core/data/model/query/query_parameter.dart';
import 'package:core/data/network/config/service_path.dart';
import 'package:core/utils/app_logger.dart';
@@ -6,6 +7,7 @@ import 'package:jmap_dart_client/jmap/core/id.dart';
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
import 'package:jmap_dart_client/jmap/mail/mailbox/mailbox.dart';
import 'package:tmail_ui_user/features/login/data/extensions/service_path_extension.dart';
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
import 'package:universal_html/html.dart' as html;
@@ -15,18 +17,23 @@ abstract class RouteUtils {
static String get baseUrl => Uri.base.path;
static String generateRouteMobile(String route, NavigationRouter router) {
static String generateNavigationRoute(String route, NavigationRouter router) {
ServicePath servicePath = ServicePath(route);
if (router.emailId != null) {
servicePath = servicePath.withPathParameter(router.emailId!.id.value);
if (BuildUtils.isWeb) {
if (router.emailId != null) {
servicePath = servicePath.withPathParameter(router.emailId!.id.value);
}
servicePath = servicePath.withQueryParameters([
StringQueryParameter('type', router.dashboardType.name),
if (router.mailboxId != null)
StringQueryParameter('context', router.mailboxId!.id.value),
if (router.searchQuery != null)
StringQueryParameter('q', router.searchQuery!.value),
]);
return servicePath.path;
} else {
return servicePath.path;
}
servicePath = servicePath.withQueryParameters([
StringQueryParameter('type', router.dashboardType.name),
if (router.mailboxId != null)
StringQueryParameter('context', router.mailboxId!.id.value),
]);
return servicePath.path;
}
static Uri generateRouteBrowser(String route, NavigationRouter router) {
@@ -39,6 +46,8 @@ abstract class RouteUtils {
StringQueryParameter('type', router.dashboardType.name),
if (router.mailboxId != null)
StringQueryParameter('context', router.mailboxId!.id.value),
if (router.searchQuery != null)
StringQueryParameter('q', router.searchQuery!.value),
]);
return Uri.parse(servicePath.path);
@@ -48,9 +57,11 @@ abstract class RouteUtils {
final idParam = parameters['id'];
final typeParam = parameters['type'];
final contextPram = parameters['context'];
final queryParam = parameters['q'];
final emailId = idParam != null ? EmailId(Id(idParam)) : null;
final mailboxId = contextPram != null ? MailboxId(Id(contextPram)) : null;
final searchQuery = queryParam != null ? SearchQuery(queryParam) : null;
final dashboardType = typeParam == DashboardType.search.name
? DashboardType.search
: DashboardType.normal;
@@ -58,6 +69,7 @@ abstract class RouteUtils {
return NavigationRouter(
emailId: emailId,
mailboxId: mailboxId,
searchQuery: searchQuery,
dashboardType: dashboardType,
);
}