diff --git a/lib/service/auth_service.dart b/lib/service/auth_service.dart index 8d066bc..713e4e6 100644 --- a/lib/service/auth_service.dart +++ b/lib/service/auth_service.dart @@ -3,19 +3,23 @@ import 'package:http/http.dart' as http; import 'package:leg_barkr_app/utils/endpoints.dart' as Endpoints; class AuthService{ - Future> getUserDevices(sessionToken) async { + Future> getUserDevices(String sessionToken) async { final response = await http.get( Uri.parse(Endpoints.getUserDevices), headers: { 'Content-Type': 'application/json; charset=UTF-8', - 'token': sessionToken, + 'Authorization': sessionToken, }, ); - List list = jsonDecode(response.body)['devices']; - List res = []; - for (final l in list) { - res.add(l.toString()); + if (response.statusCode == 200){ + List list = jsonDecode(response.body)['devices']; + List res = []; + for (final l in list) { + res.add(l.toString()); + } + return res; + } else{ + return []; } - return res; } } \ No newline at end of file diff --git a/lib/service/map_service.dart b/lib/service/map_service.dart index 8d2e1f6..5880d17 100644 --- a/lib/service/map_service.dart +++ b/lib/service/map_service.dart @@ -5,15 +5,20 @@ import 'package:leg_barkr_app/model/latitude_longitude.dart'; import 'package:leg_barkr_app/utils/endpoints.dart' as Endpoints; class MapService{ - Future getPetLastLocation(deviceId) async { + Future getPetLastLocation(String deviceId, String sessionToken) async { final response = await http.get( Uri.parse(Endpoints.getLastLocation), headers: { 'Content-Type': 'application/json; charset=UTF-8', - 'deviceid': deviceId, + 'Authorization': sessionToken, + 'Device-ID': deviceId, }, ); - return LatitudeLongitude.fromJson(jsonDecode(response.body)); + if (response.statusCode == 200){ + return LatitudeLongitude.fromJson(jsonDecode(response.body)); + } else { + return throw Exception('Pet not found'); + } } Future getMyLocation() async{ diff --git a/lib/service/metrics_service.dart b/lib/service/metrics_service.dart index 2425115..051de8e 100644 --- a/lib/service/metrics_service.dart +++ b/lib/service/metrics_service.dart @@ -4,14 +4,19 @@ import 'package:leg_barkr_app/model/metrics_response.dart'; import 'package:leg_barkr_app/utils/endpoints.dart' as Endpoints; class MetricsService { - Future getMetricsSummary(deviceId) async { + Future getMetricsSummary(String deviceId, String sessionToken) async { final response = await http.get( Uri.parse(Endpoints.getMetricsSummary), headers: { 'Content-Type': 'application/json; charset=UTF-8', - 'deviceid': deviceId, + 'Authorization': sessionToken, + 'Device-ID': deviceId, }, ); - return MetricsResponse.fromJson(jsonDecode(response.body)); + if (response.statusCode == 200) { + return MetricsResponse.fromJson(jsonDecode(response.body)); + } else { + return MetricsResponse(0, 0, 0, 0, 0, 0, 0, 0, 0); + } } } \ No newline at end of file diff --git a/lib/service/steps_service.dart b/lib/service/steps_service.dart index 561959a..612e046 100644 --- a/lib/service/steps_service.dart +++ b/lib/service/steps_service.dart @@ -3,30 +3,40 @@ import 'package:http/http.dart' as http; import 'package:leg_barkr_app/utils/endpoints.dart' as Endpoints; class StepsService { - Future getStepsToday(deviceId) async { + Future getStepsToday(String deviceId, String sessionToken) async { final response = await http.get( Uri.parse(Endpoints.getStepsToday), headers: { 'Content-Type': 'application/json; charset=UTF-8', - 'deviceid': deviceId, + 'Authorization': sessionToken, + 'Device-ID': deviceId, }, ); - return jsonDecode(response.body)['cumulative_steps_today']; + if (response.statusCode == 200) { + return jsonDecode(response.body)['cumulative_steps_today']; + } else { + return 0; + } } - Future> getStepsLastFiveDays(deviceId) async { + Future> getStepsLastFiveDays(String deviceId, String sessionToken) async { final response = await http.get( Uri.parse(Endpoints.getStepsLastFiveDays), headers: { 'Content-Type': 'application/json; charset=UTF-8', - 'deviceid': deviceId, + 'Authorization': sessionToken, + 'Device-ID': deviceId, }, ); - List list = jsonDecode(response.body)['daily_steps']; - List steps = []; - for (final l in list){ - steps.add(l); + if (response.statusCode == 200) { + List list = jsonDecode(response.body)['daily_steps']; + List steps = []; + for (final l in list){ + steps.add(l); + } + return steps; + } else { + return []; } - return steps; } } \ No newline at end of file diff --git a/lib/view/auth/login_form.dart b/lib/view/auth/login_form.dart index baa7e9a..6f04003 100644 --- a/lib/view/auth/login_form.dart +++ b/lib/view/auth/login_form.dart @@ -1,7 +1,6 @@ import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; - class LoginForm extends StatefulWidget { const LoginForm({Key? key}) : super(key: key); diff --git a/lib/view/auth/register_form.dart b/lib/view/auth/register_form.dart index e492374..31e53a0 100644 --- a/lib/view/auth/register_form.dart +++ b/lib/view/auth/register_form.dart @@ -1,7 +1,6 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; -import 'package:leg_barkr_app/view/home.dart'; import 'package:leg_barkr_app/utils/endpoints.dart' as Endpoints; import 'package:leg_barkr_app/view/auth/login_form.dart'; @@ -202,7 +201,28 @@ class _RegisterFormState extends State { primary: Colors.green, ) ) + ); + final Container loginBtn = Container( + width: double.infinity, + height: 50, + child: ElevatedButton( + onPressed: (){ Navigator.pushNamed(context, '/login'); }, + child: Text('Already have an account? Login now!', + style: TextStyle( + color: Colors.black, + fontSize: 15 + ) + ), + style: ElevatedButton.styleFrom( + alignment: Alignment.center, + primary: Colors.white, + side: BorderSide( + color: Colors.green, + width: 2 + ) + ) + ) ); return Scaffold( @@ -228,7 +248,9 @@ class _RegisterFormState extends State { SizedBox(height: 20), confirmPasswordInput, SizedBox(height: 20), - _registering ? loading : registerBtn + _registering ? loading : registerBtn, + SizedBox(height: 20), + _registering ? Text("") : loginBtn ] ) ) diff --git a/lib/view/map/map_page.dart b/lib/view/map/map_page.dart index 64ac8c4..eafd7f6 100644 --- a/lib/view/map/map_page.dart +++ b/lib/view/map/map_page.dart @@ -1,3 +1,4 @@ +import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:leg_barkr_app/service/map_service.dart'; @@ -17,8 +18,10 @@ class _MapPageState extends State { Future _onMapCreated(GoogleMapController controller) async { _mapController = controller; final prefs = await SharedPreferences.getInstance(); + final user = await FirebaseAuth.instance.currentUser!; + final String token = await user.getIdToken(); final String deviceId = prefs.getString("current_device") ?? ""; - final lastLocation = await MapService().getPetLastLocation(deviceId); + final lastLocation = await MapService().getPetLastLocation(deviceId, token); final myLocation = await MapService().getMyLocation(); setState(() { diff --git a/lib/view/metrics/metrics_page.dart b/lib/view/metrics/metrics_page.dart index 1d33ef2..94e1caa 100644 --- a/lib/view/metrics/metrics_page.dart +++ b/lib/view/metrics/metrics_page.dart @@ -1,3 +1,4 @@ +import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:leg_barkr_app/model/metrics_data.dart'; import 'package:leg_barkr_app/model/metrics_response.dart'; @@ -31,7 +32,9 @@ class _MetricsPageState extends State { Future onMetricsReceived() async{ final prefs = await SharedPreferences.getInstance(); final String deviceId = prefs.getString("current_device") ?? ""; - return await MetricsService().getMetricsSummary(deviceId); + final user = await FirebaseAuth.instance.currentUser!; + final String token = await user.getIdToken(); + return await MetricsService().getMetricsSummary(deviceId, token); } @override diff --git a/lib/view/steps/steps_page.dart b/lib/view/steps/steps_page.dart index 742c3c4..6dc4d4b 100644 --- a/lib/view/steps/steps_page.dart +++ b/lib/view/steps/steps_page.dart @@ -1,3 +1,4 @@ +import 'package:firebase_auth/firebase_auth.dart'; import 'package:flutter/material.dart'; import 'package:leg_barkr_app/model/steps_series.dart'; import 'package:leg_barkr_app/service/steps_service.dart'; @@ -17,7 +18,9 @@ class _StepsPageState extends State { Future> onStepsRetrieved() async{ final prefs = await SharedPreferences.getInstance(); final String deviceId = prefs.getString("current_device") ?? ""; - return await StepsService().getStepsLastFiveDays(deviceId); + final user = await FirebaseAuth.instance.currentUser!; + final String token = await user.getIdToken(); + return await StepsService().getStepsLastFiveDays(deviceId, token); } @override