verifyLoginStateAndLoadData function

Future<VerifyLoginResult> verifyLoginStateAndLoadData({
  1. required bool currentIsLoggedIn,
})

Verifies login state and returns appropriate places.

Implementation

Future<VerifyLoginResult> verifyLoginStateAndLoadData({
  required bool currentIsLoggedIn,
}) async {
  final actuallyLoggedIn = await isUserLoggedIn();
  final loginStateChanged = currentIsLoggedIn != actuallyLoggedIn;

  if (loginStateChanged) {
    authStateNotifier.value = actuallyLoggedIn;
    PlacesService.clearCache();
  }

  final cm = PlacesCacheManager();
  final cached = cm.allPlaces;
  final cacheState = cm.wasLoggedInWhenCached;

  List<Place>? places;
  bool needsRefresh = false;

  if (cached != null && cacheState == actuallyLoggedIn) {
    places = List.from(cached);
  } else {
    if (cached != null && cacheState != actuallyLoggedIn) {
      PlacesService.clearCache();
    }
    needsRefresh = true;
  }

  return VerifyLoginResult(
    actuallyLoggedIn: actuallyLoggedIn,
    loginStateChanged: loginStateChanged,
    places: places,
    needsRefresh: needsRefresh,
  );
}