Skip to content

Commit 37eeb84

Browse files
committed
Properly handle timezones
This should (hopefully 🀞) take care of problems saving entries with timezone information.
1 parent e0b0aba commit 37eeb84

File tree

23 files changed

+108
-97
lines changed

23 files changed

+108
-97
lines changed

β€Žlib/helpers/date.dartβ€Ž

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@
1616
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1717
*/
1818

19-
/// Returns a timezone aware DateTime object from a date and time string.
20-
DateTime getDateTimeFromDateAndTime(String date, String time) {
21-
return DateTime.parse('$date $time');
22-
}
23-
2419
/// Returns a list of [DateTime] objects from [first] to [last], inclusive.
2520
List<DateTime> daysInRange(DateTime first, DateTime last) {
2621
final dayCount = last.difference(first).inDays + 1;

β€Žlib/helpers/json.dartβ€Ž

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,14 @@ String dateToUtcIso8601(DateTime dateTime) {
6262
return dateTime.toUtc().toIso8601String();
6363
}
6464

65+
/// Converts an ISO8601 datetime string in UTC to a local DateTime object.
66+
///
67+
/// Needs to be used in conjunction with [dateToUtcIso8601] in the models to
68+
/// correctly handle timezones.
69+
DateTime utcIso8601ToLocalDate(String dateTime) {
70+
return DateTime.parse(dateTime).toLocal();
71+
}
72+
6573
/*
6674
* Converts a time to a date object.
6775
* Needed e.g. when the wger api only sends a time but no date information.

β€Žlib/models/body_weight/weight_entry.dartβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class WeightEntry {
2929
@JsonKey(required: true, fromJson: stringToNum, toJson: numToString)
3030
late num weight = 0;
3131

32-
@JsonKey(required: true)
32+
@JsonKey(required: true, fromJson: utcIso8601ToLocalDate, toJson: dateToUtcIso8601)
3333
late DateTime date;
3434

3535
WeightEntry({this.id, weight, DateTime? date}) {

β€Žlib/models/body_weight/weight_entry.g.dartβ€Ž

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žlib/models/gallery/image.dartβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ class Image {
2626
@JsonKey(required: true)
2727
int? id;
2828

29-
@JsonKey(required: true, toJson: dateToYYYYMMDD)
29+
@JsonKey(required: true, fromJson: utcIso8601ToLocalDate, toJson: dateToUtcIso8601)
3030
late DateTime date;
3131

3232
@JsonKey(required: true, name: 'image')

β€Žlib/models/gallery/image.g.dartβ€Ž

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žlib/models/nutrition/log.dartβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class Log {
3636
@JsonKey(required: true, name: 'plan')
3737
int planId;
3838

39-
@JsonKey(required: true, toJson: dateToUtcIso8601)
39+
@JsonKey(required: true, fromJson: utcIso8601ToLocalDate, toJson: dateToUtcIso8601)
4040
late DateTime datetime;
4141

4242
String? comment;

β€Žlib/models/nutrition/log.g.dartβ€Ž

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žlib/models/nutrition/nutritional_plan.dartβ€Ž

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ class NutritionalPlan {
4141
@JsonKey(required: true)
4242
late String description;
4343

44-
@JsonKey(required: true, name: 'creation_date', toJson: dateToUtcIso8601)
44+
@JsonKey(
45+
required: true,
46+
name: 'creation_date',
47+
fromJson: utcIso8601ToLocalDate,
48+
toJson: dateToUtcIso8601,
49+
)
4550
late DateTime creationDate;
4651

4752
@JsonKey(required: true, name: 'start', toJson: dateToYYYYMMDD)

β€Žlib/models/nutrition/nutritional_plan.g.dartβ€Ž

Lines changed: 1 addition & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
Β (0)