initialize method
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');
}