Merge pull request #1632 from GetStream/feat/bump-jiffy

This commit is contained in:
Sahil Kumar
2023-07-04 15:05:00 +05:30
committed by GitHub
27 changed files with 112 additions and 67 deletions
+1
View File
@@ -8,6 +8,7 @@ coverage
.pub/
.dart_tool/
pubspec.lock
pubspec_overrides.yaml
flutter_export_environment.sh
examples/all_plugins/pubspec.yaml
@@ -97,6 +97,8 @@
- Updated `video_player` dependency to `^2.7.0`.
- Updated `chewie` dependency to `^1.6.0`.
- Updated `share_plus` dependency to `^7.0.2`.
- Deprecated `StreamUserItem` in favor of `StreamUserListTile`.
- Updated `jiffy` dependency to `^6.2.1`.
## 6.4.0
@@ -106,9 +106,10 @@ class _ConnectedTitleState extends StatelessWidget {
style: textStyle,
);
} else {
final lastActive = otherMember.user?.lastActive ?? DateTime.now();
alternativeWidget = Text(
'${context.translations.userLastOnlineText} '
'${Jiffy(otherMember.user?.lastActive).fromNow()}',
'${Jiffy.parseFromDateTime(lastActive).fromNow()}',
style: textStyle,
);
}
@@ -349,16 +349,16 @@ class _Date extends StatelessWidget {
if (lastMessageAt.millisecondsSinceEpoch >=
startOfDay.millisecondsSinceEpoch) {
stringDate = Jiffy(lastMessageAt.toLocal()).jm;
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).jm;
} else if (lastMessageAt.millisecondsSinceEpoch >=
startOfDay
.subtract(const Duration(days: 1))
.millisecondsSinceEpoch) {
stringDate = context.translations.yesterdayLabel;
} else if (startOfDay.difference(lastMessageAt).inDays < 7) {
stringDate = Jiffy(lastMessageAt.toLocal()).EEEE;
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).EEEE;
} else {
stringDate = Jiffy(lastMessageAt.toLocal()).yMd;
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).yMd;
}
return Text(
@@ -611,13 +611,15 @@ class DefaultTranslations implements Translations {
} else if (date == yesterday) {
return 'yesterday';
} else {
return 'on ${Jiffy(date).MMMd}';
return 'on ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Sent ${_getDay(date)} at ${atTime.jm}';
}
@override
String get todayLabel => 'Today';
@@ -669,14 +669,20 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
final isPartOfThread = message.replyCount! > 0 ||
message.showInChannel == true;
final createdAt = message.createdAt.toLocal();
final nextCreatedAt = nextMessage.createdAt.toLocal();
if (!Jiffy(createdAt).isSame(nextCreatedAt, Units.DAY)) {
final createdAt = Jiffy.parseFromDateTime(
message.createdAt.toLocal(),
);
final nextCreatedAt = Jiffy.parseFromDateTime(
nextMessage.createdAt.toLocal(),
);
if (!createdAt.isSame(nextCreatedAt, unit: Unit.day)) {
separator = _buildDateDivider(nextMessage);
} else {
final hasTimeDiff = !Jiffy(createdAt).isSame(
final hasTimeDiff = !createdAt.isSame(
nextCreatedAt,
Units.MINUTE,
unit: Unit.minute,
);
final isNextUserSame =
@@ -1071,10 +1077,12 @@ class _StreamMessageListViewState extends State<StreamMessageListView> {
var hasTimeDiff = false;
if (nextMessage != null) {
hasTimeDiff = !Jiffy(message.createdAt.toLocal()).isSame(
final createdAt = Jiffy.parseFromDateTime(message.createdAt.toLocal());
final nextCreatedAt = Jiffy.parseFromDateTime(
nextMessage.createdAt.toLocal(),
Units.MINUTE,
);
hasTimeDiff = !createdAt.isSame(nextCreatedAt, unit: Unit.minute);
}
final hasFileAttachment =
@@ -191,7 +191,7 @@ class BottomRow extends StatelessWidget {
),
if (showTimeStamp)
Text(
Jiffy(message.createdAt.toLocal()).jm,
Jiffy.parseFromDateTime(message.createdAt.toLocal()).jm,
style: messageTheme.createdAtStyle,
),
if (showSendingIndicator)
@@ -20,17 +20,17 @@ class StreamDateDivider extends StatelessWidget {
@override
Widget build(BuildContext context) {
final createdAt = Jiffy(dateTime);
final now = Jiffy(DateTime.now());
final createdAt = Jiffy.parseFromDateTime(dateTime);
final now = Jiffy.parseFromDateTime(DateTime.now());
var dayInfo = createdAt.MMMd;
if (createdAt.isSame(now, Units.DAY)) {
if (createdAt.isSame(now, unit: Unit.day)) {
dayInfo = context.translations.todayLabel;
} else if (createdAt.isSame(now.subtract(days: 1), Units.DAY)) {
} else if (createdAt.isSame(now.subtract(days: 1), unit: Unit.day)) {
dayInfo = context.translations.yesterdayLabel;
} else if (createdAt.isAfter(now.subtract(days: 7), Units.DAY)) {
} else if (createdAt.isAfter(now.subtract(days: 7), unit: Unit.day)) {
dayInfo = createdAt.EEEE;
} else if (createdAt.isAfter(now.subtract(years: 1), Units.DAY)) {
} else if (createdAt.isAfter(now.subtract(years: 1), unit: Unit.day)) {
dayInfo = createdAt.MMMd;
}
@@ -287,16 +287,16 @@ class ChannelLastMessageDate extends StatelessWidget {
if (lastMessageAt.millisecondsSinceEpoch >=
startOfDay.millisecondsSinceEpoch) {
stringDate = Jiffy(lastMessageAt.toLocal()).jm;
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).jm;
} else if (lastMessageAt.millisecondsSinceEpoch >=
startOfDay
.subtract(const Duration(days: 1))
.millisecondsSinceEpoch) {
stringDate = context.translations.yesterdayLabel;
} else if (startOfDay.difference(lastMessageAt).inDays < 7) {
stringDate = Jiffy(lastMessageAt.toLocal()).EEEE;
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).EEEE;
} else {
stringDate = Jiffy(lastMessageAt.toLocal()).yMd;
stringDate = Jiffy.parseFromDateTime(lastMessageAt.toLocal()).yMd;
}
return Text(
@@ -227,9 +227,9 @@ class MessageSearchTileMessageDate extends StatelessWidget {
if (now.year != createdAt.year ||
now.month != createdAt.month ||
now.day != createdAt.day) {
stringDate = Jiffy(createdAt.toLocal()).yMd;
stringDate = Jiffy.parseFromDateTime(createdAt.toLocal()).yMd;
} else {
stringDate = Jiffy(createdAt.toLocal()).jm;
stringDate = Jiffy.parseFromDateTime(createdAt.toLocal()).jm;
}
return Text(
@@ -176,11 +176,12 @@ class UserLastActive extends StatelessWidget {
@override
Widget build(BuildContext context) {
final chatTheme = StreamChatTheme.of(context);
final lastActive = user.lastActive ?? DateTime.now();
return Text(
user.online
? context.translations.userOnlineText
: '${context.translations.userLastOnlineText} '
'${Jiffy(user.lastActive).fromNow()}',
'${Jiffy.parseFromDateTime(lastActive).fromNow()}',
style: chatTheme.textTheme.footnote.copyWith(
color: chatTheme.colorTheme.textHighEmphasis.withOpacity(0.5),
),
@@ -165,9 +165,9 @@ class StreamChatState extends State<StreamChat> {
@override
void didChangeDependencies() {
final currentLocale = Localizations.localeOf(context).toString();
final availableLocales = Jiffy.getAllAvailableLocales();
final availableLocales = Jiffy.getSupportedLocales();
if (availableLocales.contains(currentLocale)) {
Jiffy.locale(currentLocale);
Jiffy.setLocale(currentLocale);
}
super.didChangeDependencies();
}
@@ -14,6 +14,7 @@ import 'package:stream_chat_flutter/stream_chat_flutter.dart';
/// [StreamChatTheme].
/// Modify it to change the widget's appearance.
/// {@endtemplate}
@Deprecated('Use `StreamUserListTile` instead.')
class StreamUserItem extends StatelessWidget {
/// {@macro streamUserItem}
const StreamUserItem({
@@ -73,11 +74,12 @@ class StreamUserItem extends StatelessWidget {
Widget _buildLastActive(BuildContext context) {
final chatTheme = StreamChatTheme.of(context);
final lastActive = user.lastActive ?? DateTime.now();
return Text(
user.online
? context.translations.userOnlineText
: '${context.translations.userLastOnlineText} '
'${Jiffy(user.lastActive).fromNow()}',
'${Jiffy.parseFromDateTime(lastActive).fromNow()}',
style: chatTheme.textTheme.footnote.copyWith(
color: chatTheme.colorTheme.textHighEmphasis.withOpacity(0.5),
),
+1 -1
View File
@@ -29,7 +29,7 @@ dependencies:
http_parser: ^4.0.0
image_gallery_saver: ^2.0.1
image_picker: ">=0.8.2 <2.0.0"
jiffy: ^5.0.0
jiffy: ^6.2.1
lottie: ^2.0.0
meta: ^1.8.0
path_provider: ^2.0.9
@@ -1,3 +1,7 @@
## Upcoming
* Updated `stream_chat_flutter` dependency to [`Upcoming`](https://pub.dev/packages/stream_chat_flutter/changelog).
## 5.4.0
* Updated `stream_chat_flutter` dependency to [`6.4.0`](https://pub.dev/packages/stream_chat_flutter/changelog).
@@ -270,13 +270,15 @@ class NnStreamChatLocalizations extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'yesterday';
} else {
return 'on ${Jiffy(date).MMMd}';
return 'on ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Sent ${_getDay(date)} at ${atTime.jm}';
}
@override
String get todayLabel => 'Today';
@@ -249,13 +249,15 @@ class StreamChatLocalizationsCa extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'ahir';
} else {
return 'el ${Jiffy(date).MMMd}';
return 'el ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'''Enviat el ${_getDay(date)} a les ${Jiffy(time.toLocal()).format('HH:mm')}''';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Enviat el ${_getDay(date)} a les ${atTime.jm}';
}
@override
String get todayLabel => 'Avui';
@@ -239,13 +239,15 @@ class StreamChatLocalizationsDe extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'Gestern';
} else {
return 'am ${Jiffy(date).MMMd}';
return 'am ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'Gesendet ${_getDay(date)} am ${Jiffy(time.toLocal()).format('HH:mm')}';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Gesendet ${_getDay(date)} am ${atTime.jm}';
}
@override
String get todayLabel => 'Heute';
@@ -246,13 +246,15 @@ class StreamChatLocalizationsEn extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'yesterday';
} else {
return 'on ${Jiffy(date).MMMd}';
return 'on ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'Sent ${_getDay(date)} at ${Jiffy(time.toLocal()).format('HH:mm')}';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Sent ${_getDay(date)} at ${atTime.jm}';
}
@override
String get todayLabel => 'Today';
@@ -250,13 +250,15 @@ class StreamChatLocalizationsEs extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'ayer';
} else {
return 'el ${Jiffy(date).MMMd}';
return 'el ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'''Enviado el ${_getDay(date)} a las ${Jiffy(time.toLocal()).format('HH:mm')}''';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Enviado el ${_getDay(date)} a las ${atTime.jm}';
}
@override
String get todayLabel => 'Hoy';
@@ -249,13 +249,15 @@ class StreamChatLocalizationsFr extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'hier';
} else {
return 'le ${Jiffy(date).MMMd}';
return 'le ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'Envoyé ${_getDay(date)} à ${Jiffy(time.toLocal()).format('HH:mm')}';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Envoyé ${_getDay(date)} à ${atTime.jm}';
}
@override
String get todayLabel => "Aujourd'hui";
@@ -243,13 +243,15 @@ class StreamChatLocalizationsHi extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'कल';
} else {
return '${Jiffy(date).MMMd} को';
return '${Jiffy.parseFromDateTime(date).MMMd} को';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'${_getDay(date)} ${Jiffy(time.toLocal()).format('HH:mm')} बजे भेजा गया';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return '${_getDay(date)} ${atTime.jm} बजे भेजा गया';
}
@override
String get todayLabel => 'आज';
@@ -252,13 +252,15 @@ Il file è troppo grande per essere caricato. Il limite è di $limitInMB MB.''';
} else if (date == yesterday) {
return 'ieri';
} else {
return 'il ${Jiffy(date).MMMd}';
return 'il ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
"Inviato ${_getDay(date)} alle ${Jiffy(time.toLocal()).format('HH:mm')}";
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Inviato ${_getDay(date)} alle ${atTime.jm}';
}
@override
String get todayLabel => 'Oggi';
@@ -236,13 +236,15 @@ class StreamChatLocalizationsJa extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return '昨日';
} else {
return '${Jiffy(date).MMMd}';
return '${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'${_getDay(date)}${Jiffy(time.toLocal()).format('HH:mm')}に送信しました ';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return '${_getDay(date)}${atTime.jm}に送信しました ';
}
@override
String get todayLabel => '今日';
@@ -235,13 +235,15 @@ class StreamChatLocalizationsKo extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return '어제';
} else {
return '${Jiffy(date).MMMd}';
return '${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'${_getDay(date)} ${Jiffy(time.toLocal()).format('HH:mm')}에 보냈습니다';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return '${_getDay(date)} ${atTime.jm}에 보냈습니다';
}
@override
String get todayLabel => '오늘';
@@ -242,13 +242,15 @@ class StreamChatLocalizationsNo extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'i går';
} else {
return '${Jiffy(date).MMMd}';
return '${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'Sent ${_getDay(date)} kl. ${Jiffy(time.toLocal()).format('HH:mm')}';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Sent ${_getDay(date)} kl. ${atTime.jm}';
}
@override
String get todayLabel => 'I dag';
@@ -244,13 +244,15 @@ class StreamChatLocalizationsPt extends GlobalStreamChatLocalizations {
} else if (date == yesterday) {
return 'Ontem';
} else {
return 'o ${Jiffy(date).MMMd}';
return 'o ${Jiffy.parseFromDateTime(date).MMMd}';
}
}
@override
String sentAtText({required DateTime date, required DateTime time}) =>
'''Enviado ${_getDay(date)} às ${Jiffy(time.toLocal()).format('HH:mm')}''';
String sentAtText({required DateTime date, required DateTime time}) {
final atTime = Jiffy.parseFromDateTime(time.toLocal());
return 'Enviado ${_getDay(date)} às ${atTime.jm}';
}
@override
String get todayLabel => 'Hoje';