Skip to content

Commit 7f24fb2

Browse files
authored
fix: Time zone data not set in ParseInstallation (#811)
1 parent cd6b544 commit 7f24fb2

File tree

6 files changed

+60
-2
lines changed

6 files changed

+60
-2
lines changed

packages/dart/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## [3.1.10](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.9...dart-3.1.10) (2023-01-16)
2+
3+
### Bug Fixes
4+
5+
* Time zone data not set in `ParseInstallation` ([#96](https://github.com/parse-community/Parse-SDK-Flutter/issues/96))
6+
17
## [3.1.9](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.8...dart-3.1.9) (2022-12-25)
28

39
### Bug Fixes

packages/dart/lib/parse_server_sdk.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import 'package:path/path.dart' as path;
1212
import 'package:sembast/sembast.dart';
1313
import 'package:sembast/sembast_io.dart';
1414
import 'package:sembast_web/sembast_web.dart';
15+
import 'package:timezone/data/latest.dart' as tz;
16+
import 'package:timezone/timezone.dart' as tz;
1517
import 'package:uuid/uuid.dart';
1618
import 'package:web_socket_channel/web_socket_channel.dart';
1719
import 'package:xxtea/xxtea.dart';

packages/dart/lib/src/base/parse_constants.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
part of flutter_parse_sdk;
22

33
// Library
4-
const String keySdkVersion = '3.1.9';
4+
const String keySdkVersion = '3.1.10';
55
const String keyLibraryName = 'Flutter Parse SDK';
66

77
// End Points

packages/dart/lib/src/objects/parse_installation.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ class ParseInstallation extends ParseObject {
8585
set<String?>(keyLocaleIdentifier, ParseCoreData().locale);
8686

8787
//Timezone
88+
set<String>(keyTimeZone, _getNameLocalTimeZone());
8889

8990
//App info
9091
set<String?>(keyAppName, ParseCoreData().appName);
@@ -93,6 +94,24 @@ class ParseInstallation extends ParseObject {
9394
set<String>(keyParseVersion, keySdkVersion);
9495
}
9596

97+
String _getNameLocalTimeZone() {
98+
tz.initializeTimeZones();
99+
var locations = tz.timeZoneDatabase.locations;
100+
101+
int milliseconds = DateTime.now().timeZoneOffset.inMilliseconds;
102+
String name = "";
103+
104+
locations.forEach((key, value) {
105+
for (var element in value.zones) {
106+
if (element.offset == milliseconds) {
107+
name = value.name;
108+
break;
109+
}
110+
}
111+
});
112+
return name;
113+
}
114+
96115
@override
97116
Future<ParseResponse> create({bool allowCustomObjectId = false}) async {
98117
final bool isCurrent = await ParseInstallation.isCurrent(this);

packages/dart/pubspec.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: parse_server_sdk
22
description: Dart plugin for Parse Server, (https://parseplatform.org), (https://back4app.com)
3-
version: 3.1.9
3+
version: 3.1.10
44
homepage: https://github.com/parse-community/Parse-SDK-Flutter
55

66
environment:
@@ -22,6 +22,7 @@ dependencies:
2222
meta: ^1.7.0
2323
path: ^1.8.1
2424
mime_type: ^1.0.0
25+
timezone: ^0.9.0
2526

2627
dev_dependencies:
2728
lints: ^1.0.1
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import 'package:parse_server_sdk/parse_server_sdk.dart';
2+
import 'package:test/test.dart';
3+
4+
void main() {
5+
test('should return true for exist TimeZone.', () async {
6+
// arrange
7+
await Parse().initialize(
8+
'appId',
9+
'https://example.com',
10+
debug: true,
11+
// to prevent automatic detection
12+
fileDirectory: 'someDirectory',
13+
// to prevent automatic detection
14+
appName: 'appName',
15+
// to prevent automatic detection
16+
appPackageName: 'somePackageName',
17+
// to prevent automatic detection
18+
appVersion: 'someAppVersion',
19+
);
20+
21+
// act
22+
final ParseInstallation installation =
23+
await ParseInstallation.currentInstallation();
24+
25+
dynamic actualHasTimeZoneResult = installation.containsKey(keyTimeZone);
26+
27+
// assert
28+
expect(actualHasTimeZoneResult, true);
29+
});
30+
}

0 commit comments

Comments
 (0)