diff --git a/Mobile/lib/api.dart b/Mobile/lib/api.dart index 5f8ad2a..6fc3872 100644 --- a/Mobile/lib/api.dart +++ b/Mobile/lib/api.dart @@ -1,3 +1,5 @@ +import 'dart:math'; + import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:http/http.dart' as http; @@ -69,7 +71,7 @@ Future isLoggedIn(BuildContext context) async { try { String base64 = token.split('.')[1]; - base64 += List.filled(4 - base64.length % 4, '=').join(); + base64 += List.filled(base64.length % 4 == 0 ? 0 : 4 - base64.length % 4, '=').join(); final payload = jsonDecode(String.fromCharCodes(base64Decode(base64))); diff --git a/Mobile/lib/main.dart b/Mobile/lib/main.dart index 65f5548..1304f96 100644 --- a/Mobile/lib/main.dart +++ b/Mobile/lib/main.dart @@ -1,3 +1,6 @@ +import 'dart:convert'; +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:flutter_map/flutter_map.dart'; import 'package:latlong2/latlong.dart'; @@ -6,6 +9,8 @@ import 'package:mobile/register.dart'; import 'login.dart'; import 'base/sidemenu.dart'; import 'profile.dart'; +import 'api.dart' as api; +import 'models.dart'; void main() { runApp(const MyApp()); @@ -43,6 +48,27 @@ class MyHomePage extends StatefulWidget { class _MyHomePageState extends State { final GlobalKey _scaffoldKey = GlobalKey(); + List _favorites = []; + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + + api.isLoggedIn(context).then((isLoggedIn) async { + if (!isLoggedIn || !mounted) return; + + final response = await api.request(context, api.ApiService.app, 'GET', '/favorites', null); + if (response == null) return; + log(response); + + final List favorites = jsonDecode(response); + setState(() { + _favorites = favorites.map((favorite) => Favorite(favorite['id'], favorite['user_id'], favorite['lat'], favorite['lng'])).toList(); + }); + }); + + } + @override Widget build(BuildContext context) { return SideMenu( diff --git a/Mobile/lib/models.dart b/Mobile/lib/models.dart new file mode 100644 index 0000000..41a6f8a --- /dev/null +++ b/Mobile/lib/models.dart @@ -0,0 +1,8 @@ +class Favorite { + int id; + String userId; + double lat; + double lng; + + Favorite(this.id, this.userId, this.lat, this.lng); +} \ No newline at end of file diff --git a/Mobile/lib/register.dart b/Mobile/lib/register.dart index f72e788..e6ab956 100644 --- a/Mobile/lib/register.dart +++ b/Mobile/lib/register.dart @@ -17,10 +17,10 @@ class _RegisterPageState extends State { Future _register() async { if (passwordInput.text != confirmPasswordInput.text) { - ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('Passwords do not match'))); + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Passwords do not match'))); return; } - final result = await api.request(context, api.ApiService.auth, 'POST', '/api/Users', { 'username': usernameInput.text, 'email': emailInput.text,