initialize static method

Future<void> initialize({
  1. required SDKEnvironment environment,
  2. String? baseURL,
})

Initialize auth manager with secure storage callbacks

Implementation

static Future<void> initialize({
  required SDKEnvironment environment,
  String? baseURL,
}) async {
  if (_isInitialized) return;

  _environment = environment;
  _baseURL = baseURL;

  try {
    final lib = PlatformLoader.loadCommons();

    // Allocate and set up secure storage callbacks
    _storagePtr = calloc<RacSecureStorageCallbacksStruct>();
    _storagePtr!.ref.store =
        Pointer.fromFunction<RacSecureStoreCallbackNative>(
            _secureStoreCallback, _exceptionalReturnInt);
    _storagePtr!.ref.retrieve =
        Pointer.fromFunction<RacSecureRetrieveCallbackNative>(
            _secureRetrieveCallback, _exceptionalReturnInt);
    _storagePtr!.ref.deleteKey =
        Pointer.fromFunction<RacSecureDeleteCallbackNative>(
            _secureDeleteCallback, _exceptionalReturnInt);
    _storagePtr!.ref.context = nullptr;

    // Initialize auth with storage
    final initAuth = lib.lookupFunction<
        Void Function(Pointer<RacSecureStorageCallbacksStruct>),
        void Function(
            Pointer<RacSecureStorageCallbacksStruct>)>('rac_auth_init');

    initAuth(_storagePtr!);

    // Load stored tokens
    await instance._loadStoredTokens();

    _isInitialized = true;
    _logger.debug('Auth manager initialized');
  } catch (e, stack) {
    _logger.debug('Auth initialization error: $e', metadata: {
      'stack': stack.toString(),
    });
    _isInitialized = true; // Avoid retry loops
  }
}