TF-1709 Implement sortOrder

(cherry picked from commit b3e5844bf37c692f763ccbf66bcbfb63c75d2d9f)
This commit is contained in:
hieubt
2023-11-11 00:43:14 +07:00
committed by Dat Vu
parent f0713f3789
commit 34caadc2b7
9 changed files with 73 additions and 34 deletions
@@ -1,3 +1,4 @@
import 'package:dartz/dartz.dart';
import 'package:flutter/material.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_comparator.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
@@ -32,34 +33,46 @@ enum EmailSortOrderType {
}
}
Set<Comparator> getSortOrder() {
Option<Set<Comparator>> getSortOrder() {
switch (this) {
case EmailSortOrderType.mostRecent:
return <Comparator>{}
..add(EmailComparator(EmailComparatorProperty.receivedAt)
..setIsAscending(false));
return Some(
<Comparator>{}
..add(EmailComparator(EmailComparatorProperty.receivedAt)
..setIsAscending(false))
);
case EmailSortOrderType.oldest:
return <Comparator>{}
..add(EmailComparator(EmailComparatorProperty.receivedAt)
..setIsAscending(true));
return Some(
<Comparator>{}
..add(EmailComparator(EmailComparatorProperty.receivedAt)
..setIsAscending(true))
);
case EmailSortOrderType.relevance:
return <Comparator>{};
return const None();
case EmailSortOrderType.senderAscending:
return <Comparator>{}
..add(EmailComparator(EmailComparatorProperty.from)
..setIsAscending(true));
return Some(
<Comparator>{}
..add(EmailComparator(EmailComparatorProperty.from)
..setIsAscending(true))
);
case EmailSortOrderType.senderDescending:
return <Comparator>{}
..add(EmailComparator(EmailComparatorProperty.from)
..setIsAscending(false));
return Some(
<Comparator>{}
..add(EmailComparator(EmailComparatorProperty.from)
..setIsAscending(false))
);
case EmailSortOrderType.subjectAscending:
return <Comparator>{}
..add(EmailComparator(EmailComparatorProperty.subject)
..setIsAscending(true));
return Some(
<Comparator>{}
..add(EmailComparator(EmailComparatorProperty.subject)
..setIsAscending(true))
);
case EmailSortOrderType.subjectDescending:
return <Comparator>{}
..add(EmailComparator(EmailComparatorProperty.subject)
..setIsAscending(false));
return Some(
<Comparator>{}
..add(EmailComparator(EmailComparatorProperty.subject)
..setIsAscending(false))
);
}
}
@@ -40,14 +40,13 @@ class SearchEmailFilter with EquatableMixin {
this.before,
this.startDate,
this.endDate,
Set<Comparator>? sortOrder,
this.sortOrder,
}) : from = from ?? <String>{},
to = to ?? <String>{},
notKeyword = notKeyword ?? <String>{},
hasAttachment = hasAttachment ?? false,
emailReceiveTimeType =
emailReceiveTimeType ?? EmailReceiveTimeType.allTime,
sortOrder = sortOrder ?? <Comparator>{};
emailReceiveTimeType ?? EmailReceiveTimeType.allTime;
SearchEmailFilter copyWith({
Option<Set<String>>? fromOption,
@@ -61,7 +60,7 @@ class SearchEmailFilter with EquatableMixin {
Option<UTCDate>? beforeOption,
Option<UTCDate>? startDateOption,
Option<UTCDate>? endDateOption,
Set<Comparator>? sortOrder,
Option<Set<Comparator>>? sortOrderOption,
}) {
return SearchEmailFilter(
from: _getOptionParam(fromOption, from),
@@ -75,7 +74,7 @@ class SearchEmailFilter with EquatableMixin {
before: _getOptionParam(beforeOption, before),
startDate: _getOptionParam(startDateOption, startDate),
endDate: _getOptionParam(endDateOption, endDate),
sortOrder: sortOrder ?? this.sortOrder,
sortOrder: _getOptionParam(sortOrderOption, sortOrder),
);
}