Skip to content

Commit 5f6ae69

Browse files
committed
Add flutter timezone plugin for getting correct timezone
1 parent 2da2b6a commit 5f6ae69

11 files changed

Lines changed: 313 additions & 196 deletions

File tree

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
**Changelog:**
2+
- Potentially fixed potentially bad timezone names for Alarm Server

lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const String issues_url =
1818
"https://github.com/ComputerElite/ShockAlarmApp/issues";
1919

2020
String GetUserAgent() {
21-
return "ShockAlarm/0.4.3";
21+
return "ShockAlarm/0.4.4";
2222
}
2323

2424
bool isAndroid() {

lib/services/alarm_manager.dart

Lines changed: 75 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ abstract class AlarmManager {
1919
class AndroidShockAlarmManager implements AlarmManager {
2020
@override
2121
AlarmManagerType? type = AlarmManagerType.android;
22-
22+
2323
@override
2424
Future scheduleAlarms(List<Alarm> alarms) async {
2525
for (var alarm in alarms) {
@@ -30,9 +30,7 @@ class AndroidShockAlarmManager implements AlarmManager {
3030
}
3131

3232
@override
33-
Future deleteAlarm(Alarm alarm) async {
34-
35-
}
33+
Future deleteAlarm(Alarm alarm) async {}
3634

3735
@override
3836
Future<ErrorContainer<List<Alarm>>> getAlarms() async {
@@ -44,84 +42,89 @@ class AndroidShockAlarmManager implements AlarmManager {
4442
// Alarms are saved automatically, nothing has to be done here
4543
return true;
4644
}
47-
45+
4846
@override
4947
Future<ErrorContainer<List<AlarmTone>>> getAlarmTones() async {
5048
return ErrorContainer([], null);
5149
}
52-
50+
5351
@override
5452
Future<bool> saveTone(AlarmTone tone) async {
5553
return true;
5654
}
57-
58-
@override
59-
Future deleteTone(AlarmTone tone) async{
6055

61-
}
56+
@override
57+
Future deleteTone(AlarmTone tone) async {}
6258
}
6359

6460
class AlarmServerShockAlarmManager implements AlarmManager {
6561
@override
6662
AlarmManagerType? type = AlarmManagerType.server;
6763

6864
@override
69-
Future scheduleAlarms(List<Alarm> alarms) async {
70-
71-
}
65+
Future scheduleAlarms(List<Alarm> alarms) async {}
7266

7367
@override
7468
Future deleteAlarm(Alarm alarm) async {
7569
Token? userToken = AlarmListManager.getInstance().getAlarmServerUserToken();
76-
if(userToken == null) {
70+
if (userToken == null) {
7771
return;
7872
}
79-
var response = await AlarmServerClient().DeleteRequest(userToken, "/api/v1/alarms/", jsonEncode(alarm.toAlarmServerAlarm(userToken.userId)));
80-
if(response.statusCode == 200) {
73+
var response = await AlarmServerClient().DeleteRequest(
74+
userToken,
75+
"/api/v1/alarms/",
76+
jsonEncode(await alarm.toAlarmServerAlarm(userToken.userId)));
77+
if (response.statusCode == 200) {
8178
return;
8279
}
8380
}
84-
81+
8582
@override
8683
Future deleteTone(AlarmTone tone) async {
8784
Token? userToken = AlarmListManager.getInstance().getAlarmServerUserToken();
88-
if(userToken == null) {
85+
if (userToken == null) {
8986
return;
9087
}
91-
var response = await AlarmServerClient().DeleteRequest(userToken, "/api/v1/tones/", jsonEncode(tone.toAlarmServerJson()));
92-
if(response.statusCode == 200) {
88+
var response = await AlarmServerClient().DeleteRequest(
89+
userToken, "/api/v1/tones/", jsonEncode(tone.toAlarmServerJson()));
90+
if (response.statusCode == 200) {
9391
return;
9492
}
9593
}
9694

9795
@override
9896
Future<ErrorContainer<List<Alarm>>> getAlarms() async {
9997
Token? userToken = AlarmListManager.getInstance().getAlarmServerUserToken();
100-
if(userToken == null) {
98+
if (userToken == null) {
10199
return ErrorContainer([], "Token is invalid.");
102100
}
103-
ErrorContainer<List<Alarm>> alarms = await AlarmServerClient().getAlarms(userToken);
101+
ErrorContainer<List<Alarm>> alarms =
102+
await AlarmServerClient().getAlarms(userToken);
104103
return alarms;
105104
}
106105

107106
@override
108107
Future<ErrorContainer<List<AlarmTone>>> getAlarmTones() async {
109108
Token? userToken = AlarmListManager.getInstance().getAlarmServerUserToken();
110-
if(userToken == null) {
109+
if (userToken == null) {
111110
return ErrorContainer([], "Token is invalid.");
112111
}
113-
ErrorContainer<List<AlarmTone>> alarms = await AlarmServerClient().getAlarmTones(userToken);
112+
ErrorContainer<List<AlarmTone>> alarms =
113+
await AlarmServerClient().getAlarmTones(userToken);
114114
return alarms;
115115
}
116116

117117
@override
118118
Future<bool> saveAlarm(Alarm alarm) async {
119119
Token? userToken = AlarmListManager.getInstance().getAlarmServerUserToken();
120-
if(userToken == null) {
120+
if (userToken == null) {
121121
return false;
122122
}
123-
var response = await AlarmServerClient().PostRequest(userToken, "/api/v1/alarms", jsonEncode(alarm.toAlarmServerAlarm(userToken.userId)));
124-
if(response.statusCode == 200) {
123+
var response = await AlarmServerClient().PostRequest(
124+
userToken,
125+
"/api/v1/alarms",
126+
jsonEncode(await alarm.toAlarmServerAlarm(userToken.userId)));
127+
if (response.statusCode == 200) {
125128
alarm.serverId = jsonDecode(response.body)["CreatedId"];
126129
AlarmListManager.getInstance().saveAlarm(alarm, updateServer: false);
127130
return true;
@@ -132,11 +135,12 @@ class AlarmServerShockAlarmManager implements AlarmManager {
132135
@override
133136
Future<bool> saveTone(AlarmTone tone) async {
134137
Token? userToken = AlarmListManager.getInstance().getAlarmServerUserToken();
135-
if(userToken == null) {
138+
if (userToken == null) {
136139
return false;
137140
}
138-
var response = await AlarmServerClient().PostRequest(userToken, "/api/v1/tones", jsonEncode(tone.toAlarmServerJson()));
139-
if(response.statusCode == 200) {
141+
var response = await AlarmServerClient().PostRequest(
142+
userToken, "/api/v1/tones", jsonEncode(tone.toAlarmServerJson()));
143+
if (response.statusCode == 200 && response.body.startsWith("{")) {
140144
tone.serverId = jsonDecode(response.body)["CreatedId"];
141145
AlarmListManager.getInstance().saveTone(tone, updateServer: false);
142146
return true;
@@ -145,10 +149,7 @@ class AlarmServerShockAlarmManager implements AlarmManager {
145149
}
146150
}
147151

148-
enum AlarmManagerType {
149-
android,
150-
server
151-
}
152+
enum AlarmManagerType { android, server }
152153

153154
class ErrorContainer<T> {
154155
T? value;
@@ -157,10 +158,15 @@ class ErrorContainer<T> {
157158
}
158159

159160
class AlarmServerClient {
160-
Future<ErrorContainer<Token>> loginOrRegister(String serverAddress, String username, String password, bool register) async {
161-
Token t = Token(DateTime.now().microsecondsSinceEpoch, "", server: serverAddress);
161+
Future<ErrorContainer<Token>> loginOrRegister(String serverAddress,
162+
String username, String password, bool register) async {
163+
Token t =
164+
Token(DateTime.now().microsecondsSinceEpoch, "", server: serverAddress);
162165
t.flavor = TokenFlavor.alarmserver;
163-
var response = await PostRequest(t, "/api/v1/user/${register ? "register" : "login"}", jsonEncode({"Username": username, "Password": password}));
166+
var response = await PostRequest(
167+
t,
168+
"/api/v1/user/${register ? "register" : "login"}",
169+
jsonEncode({"Username": username, "Password": password}));
164170
if (response.statusCode != 200) {
165171
return ErrorContainer(null, response.body);
166172
}
@@ -175,11 +181,18 @@ class AlarmServerClient {
175181
return ErrorContainer(t, null);
176182
}
177183

178-
Future<ErrorContainer<Token>> addOpenShockTokenToAccount(Token? alarmServerToken, Token? openShockToken) async {
179-
if(alarmServerToken == null) {
184+
Future<ErrorContainer<Token>> addOpenShockTokenToAccount(
185+
Token? alarmServerToken, Token? openShockToken) async {
186+
if (alarmServerToken == null) {
180187
return ErrorContainer(null, "Token is invalid.");
181188
}
182-
var response = await PostRequest(alarmServerToken, "/api/v1/tokens", jsonEncode({"Token": openShockToken?.token, "Server": openShockToken?.server}));
189+
var response = await PostRequest(
190+
alarmServerToken,
191+
"/api/v1/tokens",
192+
jsonEncode({
193+
"Token": openShockToken?.token,
194+
"Server": openShockToken?.server
195+
}));
183196
if (response.statusCode != 200) {
184197
return ErrorContainer(null, response.body);
185198
}
@@ -189,7 +202,7 @@ class AlarmServerClient {
189202
}
190203

191204
Future<ErrorContainer<Token>> populateTokenForAccount(Token? t) async {
192-
if(t == null) {
205+
if (t == null) {
193206
return ErrorContainer(null, "Token is invalid.");
194207
}
195208
var response = await GetRequest(t, "/api/v1/tokens");
@@ -204,36 +217,35 @@ class AlarmServerClient {
204217
}
205218

206219
Future<ErrorContainer<List<Alarm>>> getAlarms(Token? t) async {
207-
if(t == null) {
220+
if (t == null) {
208221
return ErrorContainer<List<Alarm>>(null, "Token is invalid.");
209222
}
210223
var response = await GetRequest(t, "/api/v1/alarms");
211-
if(response.statusCode != 200) {
224+
if (response.statusCode != 200) {
212225
return ErrorContainer(null, response.body);
213226
}
214227
print(response.body);
215228
var alarms = jsonDecode(response.body);
216229
List<Alarm> decodedAlarms = [];
217-
for(var a in alarms) {
230+
for (var a in alarms) {
218231
// now decode every single alarm
219232
decodedAlarms.add(Alarm.fromAlarmServerAlarm(a));
220233
}
221234
return ErrorContainer(decodedAlarms, null);
222235
}
223236

224-
225237
Future<ErrorContainer<List<AlarmTone>>> getAlarmTones(Token t) async {
226-
if(t == null) {
238+
if (t == null) {
227239
return ErrorContainer<List<AlarmTone>>(null, "Token is invalid.");
228240
}
229241
var response = await GetRequest(t, "/api/v1/tones");
230-
if(response.statusCode != 200) {
242+
if (response.statusCode != 200) {
231243
return ErrorContainer(null, response.body);
232244
}
233245
print(response.body);
234246
var alarms = jsonDecode(response.body);
235247
List<AlarmTone> decodedAlarmTones = [];
236-
for(var a in alarms) {
248+
for (var a in alarms) {
237249
// now decode every single alarm
238250
decodedAlarmTones.add(AlarmTone.fromAlarmServerJson(a));
239251
}
@@ -250,19 +262,23 @@ class AlarmServerClient {
250262

251263
Future<http.Response> PostRequest(Token t, String path, String body) {
252264
var url = Uri.parse(t.server + path);
253-
return http.post(url, headers: {
254-
"Authorization": "Bearer ${t.token}",
255-
"Content-Type": "application/json",
256-
'User-Agent': GetUserAgent(),
257-
}, body: body);
265+
return http.post(url,
266+
headers: {
267+
"Authorization": "Bearer ${t.token}",
268+
"Content-Type": "application/json",
269+
'User-Agent': GetUserAgent(),
270+
},
271+
body: body);
258272
}
259273

260274
Future<http.Response> DeleteRequest(Token t, String path, String body) {
261275
var url = Uri.parse(t.server + path);
262-
return http.delete(url, headers: {
263-
"Authorization": "Bearer ${t.token}",
264-
"Content-Type": "application/json",
265-
'User-Agent': GetUserAgent(),
266-
}, body: body);
276+
return http.delete(url,
277+
headers: {
278+
"Authorization": "Bearer ${t.token}",
279+
"Content-Type": "application/json",
280+
'User-Agent': GetUserAgent(),
281+
},
282+
body: body);
267283
}
268-
}
284+
}

0 commit comments

Comments
 (0)