mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 09:28:41 +00:00
fix hopefully #15
This commit is contained in:
parent
a121aa6f23
commit
34ec8481e3
5 changed files with 54 additions and 6 deletions
|
|
@ -8,6 +8,7 @@ import 'package:twonly/src/app.dart';
|
||||||
import 'package:twonly/src/components/message_send_state_icon.dart';
|
import 'package:twonly/src/components/message_send_state_icon.dart';
|
||||||
import 'package:twonly/src/model/json/message.dart';
|
import 'package:twonly/src/model/json/message.dart';
|
||||||
import 'package:twonly/src/providers/api/api.dart';
|
import 'package:twonly/src/providers/api/api.dart';
|
||||||
|
import 'package:twonly/src/utils/misc.dart';
|
||||||
|
|
||||||
class DbMessage {
|
class DbMessage {
|
||||||
DbMessage({
|
DbMessage({
|
||||||
|
|
@ -383,7 +384,9 @@ class DbMessages extends CvModelBase {
|
||||||
if (messageOpenedAt != null) {
|
if (messageOpenedAt != null) {
|
||||||
messageOpenedAt = DateTime.tryParse(fromDb[i][columnMessageOpenedAt]);
|
messageOpenedAt = DateTime.tryParse(fromDb[i][columnMessageOpenedAt]);
|
||||||
if (tmp is TextMessageContent && messageOpenedAt != null) {
|
if (tmp is TextMessageContent && messageOpenedAt != null) {
|
||||||
if ((DateTime.now()).difference(messageOpenedAt).inHours >= 24) {
|
if (calculateTimeDifference(DateTime.now(), messageOpenedAt)
|
||||||
|
.inHours >=
|
||||||
|
24) {
|
||||||
deleteTextContent(fromDb[i][columnMessageId], tmp);
|
deleteTextContent(fromDb[i][columnMessageId], tmp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ int getFlameCounter(List<DateTime> dates) {
|
||||||
int flamesCount = 0;
|
int flamesCount = 0;
|
||||||
DateTime lastFlameCount = DateTime.now();
|
DateTime lastFlameCount = DateTime.now();
|
||||||
|
|
||||||
if (dates[0].difference(lastFlameCount).inDays == 0) {
|
if (calculateTimeDifference(dates[0], lastFlameCount).inDays == 0) {
|
||||||
flamesCount = 1;
|
flamesCount = 1;
|
||||||
lastFlameCount = dates[0];
|
lastFlameCount = dates[0];
|
||||||
}
|
}
|
||||||
|
|
@ -161,7 +161,7 @@ int getFlameCounter(List<DateTime> dates) {
|
||||||
for (int i = 1; i < dates.length; i++) {
|
for (int i = 1; i < dates.length; i++) {
|
||||||
// print(
|
// print(
|
||||||
// "${dates[i]} ${dates[i].difference(dates[i - 1]).inDays} ${dates[i].difference(lastFlameCount).inDays}");
|
// "${dates[i]} ${dates[i].difference(dates[i - 1]).inDays} ${dates[i].difference(lastFlameCount).inDays}");
|
||||||
if (dates[i].difference(dates[i - 1]).inDays == 0) {
|
if (calculateTimeDifference(dates[i], dates[i - 1]).inDays == 0) {
|
||||||
if (lastFlameCount.difference(dates[i]).inDays == 1) {
|
if (lastFlameCount.difference(dates[i]).inDays == 1) {
|
||||||
flamesCount++;
|
flamesCount++;
|
||||||
lastFlameCount = dates[i];
|
lastFlameCount = dates[i];
|
||||||
|
|
@ -190,3 +190,16 @@ Future<int> getFlamesForOtherUser(int otherUserId) async {
|
||||||
// print("Received $a and send $b");
|
// print("Received $a and send $b");
|
||||||
return min(a, b);
|
return min(a, b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Duration calculateTimeDifference(DateTime now, DateTime startTime) {
|
||||||
|
// Get the timezone offsets
|
||||||
|
Duration nowOffset = now.timeZoneOffset;
|
||||||
|
Duration startTimeOffset = startTime.timeZoneOffset;
|
||||||
|
|
||||||
|
// Convert both DateTime objects to UTC
|
||||||
|
DateTime nowInUTC = now.subtract(nowOffset);
|
||||||
|
DateTime startTimeInUTC = startTime.subtract(startTimeOffset);
|
||||||
|
|
||||||
|
// Calculate the difference
|
||||||
|
return nowInUTC.difference(startTimeInUTC);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -224,8 +224,8 @@ class _ChatItemDetailsViewState extends State<ChatItemDetailsView> {
|
||||||
messages[i].messageOtherId != null);
|
messages[i].messageOtherId != null);
|
||||||
}
|
}
|
||||||
if (messages[i].messageOpenedAt != null) {
|
if (messages[i].messageOpenedAt != null) {
|
||||||
if ((DateTime.now())
|
if (calculateTimeDifference(
|
||||||
.difference(messages[i].messageOpenedAt!)
|
DateTime.now(), messages[i].messageOpenedAt!)
|
||||||
.inHours >=
|
.inHours >=
|
||||||
24) {
|
24) {
|
||||||
return Container();
|
return Container();
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,8 @@ class _UserListItem extends State<UserListItem> {
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (widget.lastMessage != null) {
|
if (widget.lastMessage != null) {
|
||||||
lastMessageInSeconds =
|
lastMessageInSeconds =
|
||||||
DateTime.now().difference(widget.lastMessage!.sendAt).inSeconds;
|
calculateTimeDifference(DateTime.now(), widget.lastMessage!.sendAt)
|
||||||
|
.inSeconds;
|
||||||
|
|
||||||
state = widget.lastMessage!.getSendState();
|
state = widget.lastMessage!.getSendState();
|
||||||
|
|
||||||
|
|
|
||||||
31
test/time_difference_test.dart
Normal file
31
test/time_difference_test.dart
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
// Function to calculate time difference
|
||||||
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
import 'package:twonly/src/utils/misc.dart';
|
||||||
|
|
||||||
|
void main() {
|
||||||
|
test('Time difference calculation between different time zones', () {
|
||||||
|
// Test case 1: Current time is in UTC and start time is in UTC+2
|
||||||
|
DateTime now = DateTime.parse('2023-10-01T10:00:00Z'); // 10:00 UTC
|
||||||
|
DateTime startTime =
|
||||||
|
DateTime.parse('2023-10-01T12:00:00+02:00'); // 12:00 UTC+2
|
||||||
|
|
||||||
|
Duration difference = calculateTimeDifference(now, startTime);
|
||||||
|
expect(difference.inHours, equals(0)); // 10:00 UTC - 12:00 UTC+2 = 0 hours
|
||||||
|
|
||||||
|
// Test case 2: Current time is in UTC-1 and start time is in UTC+1
|
||||||
|
now = DateTime.parse('2023-10-01T09:00:00-01:00'); // 09:00 UTC-1
|
||||||
|
startTime = DateTime.parse('2023-10-01T11:00:00+01:00'); // 11:00 UTC+1
|
||||||
|
|
||||||
|
difference = calculateTimeDifference(now, startTime);
|
||||||
|
expect(
|
||||||
|
difference.inHours, equals(0)); // 09:00 UTC-1 - 11:00 UTC+1 = 0 hours
|
||||||
|
|
||||||
|
// Test case 3: Current time is in UTC+3 and start time is in UTC-1
|
||||||
|
now = DateTime.parse('2023-10-01T15:00:00+03:00'); // 15:00 UTC+3
|
||||||
|
startTime = DateTime.parse('2023-10-01T13:00:00-01:00'); // 13:00 UTC-1
|
||||||
|
|
||||||
|
difference = calculateTimeDifference(now, startTime);
|
||||||
|
expect(
|
||||||
|
difference.inHours, equals(-2)); // 15:00 UTC+3 - 13:00 UTC-1 = -2 hours
|
||||||
|
});
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue