6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit fc7773dd
Changed files
.../lib/authentication/authentication_repository.dart | 5 ++++- .../lib/booking_details/booking_details_repository.dart | 3 +-- comwell_key_app/lib/my_booking/my_booking_repository.dart | 1 - .../lib/notifications/notifications_repository.dart | 7 +++---- .../lib/overview/repository/overview_repository.dart | 5 ++--- comwell_key_app/lib/profile/profile_repository.dart | 13 ++++++------- .../repostiory/profile_settings_repository.dart | 5 ++--- comwell_key_app/lib/utils/locator.dart | 9 ++++++++- 8 files changed, 26 insertions(+), 22 deletions(-)
Diff
diff --git a/comwell_key_app/lib/authentication/authentication_repository.dart b/comwell_key_app/lib/authentication/authentication_repository.dart
index c9b2dda8..f4ba5b5d 100644
--- a/comwell_key_app/lib/authentication/authentication_repository.dart
+++ b/comwell_key_app/lib/authentication/authentication_repository.dart
@@ -8,6 +8,7 @@ import 'package:comwell_key_app/utils/secure_storage.dart';
import 'package:comwell_key_app/common/const.dart' as constants;
import 'package:firebase_analytics/firebase_analytics.dart';
import 'package:flutter/foundation.dart';
+import 'package:get_it/get_it.dart';
import '../utils/locator.dart';
import '../utils/seos_repository.dart';
@@ -59,12 +60,14 @@ class AuthenticationRepository {
name: 'login_status',
value: 'true',
);
+ // Ensure DB is re-instantiated after login
+ registerDatabase();
}
Future<void> logOut({bool forced = false}) async {
await secureStorage.deleteAll();
await database.deleteDatabase();
-
+ // Unregister DB is now handled in registerDatabase
//TODO: Should we differentiate between forced and unauthenticated in the tracking event?
locator<ComwellTracking>().trackEvent('logout');
await FirebaseAnalytics.instance.setUserProperty(
diff --git a/comwell_key_app/lib/booking_details/booking_details_repository.dart b/comwell_key_app/lib/booking_details/booking_details_repository.dart
index 92b7561a..e6397b3c 100644
--- a/comwell_key_app/lib/booking_details/booking_details_repository.dart
+++ b/comwell_key_app/lib/booking_details/booking_details_repository.dart
@@ -9,7 +9,6 @@ import 'package:comwell_key_app/utils/secure_storage.dart';
class BookingDetailsRepository {
final api = Api();
final secureStorage = SecureStorage();
- final ComwellDatabase database = locator<ComwellDatabase>();
Future<bool> isHousesKeepingOrdered(String roomNumber) async {
final lastOrderedValue = await secureStorage
@@ -40,7 +39,7 @@ class BookingDetailsRepository {
Booking booking,
) async {
//await api.updateBooking(booking);
- await database.bookingsDao.insert([booking.toDTO()], booking.bookingStatus);
+ await locator<ComwellDatabase>().bookingsDao.insert([booking.toDTO()], booking.bookingStatus);
return booking;
}
}
diff --git a/comwell_key_app/lib/my_booking/my_booking_repository.dart b/comwell_key_app/lib/my_booking/my_booking_repository.dart
index 78de6ca8..64870005 100644
--- a/comwell_key_app/lib/my_booking/my_booking_repository.dart
+++ b/comwell_key_app/lib/my_booking/my_booking_repository.dart
@@ -7,7 +7,6 @@ import 'package:comwell_key_app/utils/locator.dart';
class MyBookingRepository {
final Api api = Api();
- final db = locator<ComwellDatabase>();
final ProfileRepository profileRepository = locator<ProfileRepository>();
late User user;
diff --git a/comwell_key_app/lib/notifications/notifications_repository.dart b/comwell_key_app/lib/notifications/notifications_repository.dart
index c556da6e..caff4c8d 100644
--- a/comwell_key_app/lib/notifications/notifications_repository.dart
+++ b/comwell_key_app/lib/notifications/notifications_repository.dart
@@ -8,7 +8,6 @@ import 'package:comwell_key_app/utils/locator.dart';
class NotificationsRepository {
final Api api = Api();
- final db = locator<ComwellDatabase>();
final ProfileRepository profileRepository = locator<ProfileRepository>();
late User user;
late Iterable<NotificationPermission> notificationPermissions;
@@ -26,7 +25,7 @@ class NotificationsRepository {
Future<Iterable<NotificationPermission>> fetchNotificationPermissions(
int guestId) async {
notificationPermissions =
- await db.notificationPermissionDAO.getNotificationPermissions();
+ await locator<ComwellDatabase>().notificationPermissionDAO.getNotificationPermissions();
if (notificationPermissions.isEmpty) {
final response = await api.getNotificationPermissions(guestId);
@@ -40,7 +39,7 @@ class NotificationsRepository {
notificationPermissions =
addDescriptionsToPermissions(notificationPermissions);
- await db.notificationPermissionDAO
+ await locator<ComwellDatabase>().notificationPermissionDAO
.saveNotificationPermission(notificationPermissions);
return notificationPermissions;
} else {
@@ -66,7 +65,7 @@ class NotificationsRepository {
Future<dynamic> updateNotificationPreferences(int guestId,
Iterable<NotificationPermission> notificationPermissions) async {
- await db.notificationPermissionDAO
+ await locator<ComwellDatabase>().notificationPermissionDAO
.saveNotificationPermission(notificationPermissions);
return api.updateNotificationPreferences(guestId, notificationPermissions);
diff --git a/comwell_key_app/lib/overview/repository/overview_repository.dart b/comwell_key_app/lib/overview/repository/overview_repository.dart
index 31fd1c06..fa13b46a 100644
--- a/comwell_key_app/lib/overview/repository/overview_repository.dart
+++ b/comwell_key_app/lib/overview/repository/overview_repository.dart
@@ -13,7 +13,6 @@ import 'package:comwell_key_app/utils/locator.dart';
class OverviewRepository {
final api = Api();
- final database = locator<ComwellDatabase>();
final profileRepository = locator<ProfileRepository>();
final chooseShareRoomRepository = locator<ChooseShareRoomRepository>();
@@ -25,7 +24,7 @@ class OverviewRepository {
final user = await profileRepository.fetchProfileSettings();
final rooms = await chooseShareRoomRepository.getMockRooms();
- await database.bookingsDao.insertBookings(response);
+ await locator<ComwellDatabase>().bookingsDao.insertBookings(response);
return response.toBookings(user.id, rooms);
} catch (e) {
@@ -39,7 +38,7 @@ class OverviewRepository {
Future<Booking?> findBooking(String bookingReference, String lastName) async {
// needs implementation
- final user = await database.userDAO.getUser();
+ final user = await locator<ComwellDatabase>().userDAO.getUser();
final dto = BookingDTO(
roomNumber: "1234",
hotelCode: "CBO",
diff --git a/comwell_key_app/lib/profile/profile_repository.dart b/comwell_key_app/lib/profile/profile_repository.dart
index ecca5f05..515b1369 100644
--- a/comwell_key_app/lib/profile/profile_repository.dart
+++ b/comwell_key_app/lib/profile/profile_repository.dart
@@ -24,7 +24,6 @@ class ProfileRepository {
final ProfileSettingsRepository profileSettingsRepository =
locator<ProfileSettingsRepository>();
final Api api = Api();
- final db = locator<ComwellDatabase>();
late User user;
Future<void> logOut() async {
@@ -36,7 +35,7 @@ class ProfileRepository {
final data = response.data as Json;
final userDto = UserDto.fromJson(data);
final updatedUser = userDto.toUser();
- await db.userDAO.saveUser(userDto);
+ await locator<ComwellDatabase>().userDAO.saveUser(userDto);
return updatedUser;
}
@@ -51,7 +50,7 @@ class ProfileRepository {
Future<Booking> getBookingDetails(String bookingId) async {
user = await fetchProfileSettings();
final response = await api.getBookingDetails(bookingId);
- await db.bookingsDao.insertBookings(BookingsDTO(current: [response!], past: [], cancelled: []));
+ await locator<ComwellDatabase>().bookingsDao.insertBookings(BookingsDTO(current: [response!], past: [], cancelled: []));
final booking = response.toBooking(user.id, BookingStatus.current, []);
return booking;
@@ -59,7 +58,7 @@ class ProfileRepository {
Future<User> fetchProfileSettings() async {
try {
- final user = await db.userDAO.getUser();
+ final user = await locator<ComwellDatabase>().userDAO.getUser();
return user;
} catch (e) {
try {
@@ -69,15 +68,15 @@ class ProfileRepository {
final user = userDto.toUser();
try {
- await db.userDAO.saveUser(userDto);
+ await locator<ComwellDatabase>().userDAO.saveUser(userDto);
} catch (dbError) {
- debugPrint("Database error while saving user: ${dbError.toString()}");
+ debugPrint("Database error while saving user: "+dbError.toString());
// Continue execution even if database save fails
}
return user;
} catch (e) {
- debugPrint("Error fetching profile settings: ${e.toString()}");
+ debugPrint("Error fetching profile settings: "+e.toString());
rethrow;
}
}
diff --git a/comwell_key_app/lib/profile_settings/repostiory/profile_settings_repository.dart b/comwell_key_app/lib/profile_settings/repostiory/profile_settings_repository.dart
index 29ee0769..18f9fe47 100644
--- a/comwell_key_app/lib/profile_settings/repostiory/profile_settings_repository.dart
+++ b/comwell_key_app/lib/profile_settings/repostiory/profile_settings_repository.dart
@@ -10,7 +10,6 @@ import 'package:comwell_key_app/utils/locator.dart';
class ProfileSettingsRepository {
final Api api = Api();
- final db = locator<ComwellDatabase>();
Future<User> updateUser(User updatedUser) async {
final userDto = updatedUser.toUserDto();
@@ -20,14 +19,14 @@ class ProfileSettingsRepository {
final responseDto = UserDto.fromJson(data);
final user = responseDto.toUser();
- await db.userDAO.saveUser(responseDto);
+ await locator<ComwellDatabase>().userDAO.saveUser(responseDto);
return user;
}
Future<void> updateAddress(User updatedUser) async {
final userDto = updatedUser.toUserDto();
- await db.userDAO.saveUser(userDto);
+ await locator<ComwellDatabase>().userDAO.saveUser(userDto);
}
Future<void> deleteProfile() {
diff --git a/comwell_key_app/lib/utils/locator.dart b/comwell_key_app/lib/utils/locator.dart
index f2557758..c7e789c7 100644
--- a/comwell_key_app/lib/utils/locator.dart
+++ b/comwell_key_app/lib/utils/locator.dart
@@ -21,11 +21,18 @@ import '../booking_details/booking_details_repository.dart';
final locator = GetIt.I;
+void registerDatabase() {
+ if (locator.isRegistered<ComwellDatabase>()) {
+ locator.unregister<ComwellDatabase>();
+ }
+ locator.registerSingleton<ComwellDatabase>(ComwellDatabase());
+}
+
void setupLocator() {
locator.registerFactory<DeviceInfoPlugin>(() => DeviceInfoPlugin());
if (!kIsWeb) {
locator.registerSingleton<ComwellTracking>(ComwellTracking());
- locator.registerSingleton<ComwellDatabase>(ComwellDatabase());
+ registerDatabase();
locator.registerSingleton(SeosMobileKeysPlugin());
locator.registerFactory<KeyRepository>(() => KeyRepository(
deviceInfoPlugin: locator<DeviceInfoPlugin>(),