initialize method

Future<void> initialize({
  1. required NpsManagerService npsManager,
})

Implementation

Future<void> initialize({required NpsManagerService npsManager}) async {
  if (_initialized) {
    debugPrint('[SessionService] Already initialized, skipping');
    return;
  }

  // Guard concurrent calls: if initialization is already in progress, wait
  // for it to finish rather than running a duplicate setup.
  if (_initCompleter != null) {
    return _initCompleter!.future;
  }

  _initCompleter = Completer<void>();
  _npsManager = npsManager;
  WidgetsBinding.instance.addObserver(this);

  // Cold start always counts as a new session.
  await _startNewSession();

  _initialized = true;
  _initCompleter!.complete();
  debugPrint('[SessionService] Initialized');
}