initializeApp static method

FusabaseApp initializeApp(
  1. {String name = globals.defaultAppName,
  2. required FusabaseOptions options}
)

Initializes an FusabaseApp with the given options and name.

If name is not provided, the default name is used. If the default app does not yet exist, it will also be created with the same options.

Parameters:

  • name: Optional name for the app.
  • options: The FusabaseOptions to configure the app.

Returns:

Example:

final options = FusabaseOptions(
  ordsHost: 'https://example.com',
  // other options
);
final app = Fusabase.initializeApp(options: options, name: 'my-app');

Implementation

static FusabaseApp initializeApp({
  String name = globals.defaultAppName,
  required FusabaseOptions options,
}) {
  void inheritAppTrustState(FusabaseApp target, FusabaseApp source) {
    if (source.options.projectID != target.options.projectID ||
        source.options.appID != target.options.appID) {
      return;
    }

    target.setInternalAppTrustToken(source.internalAppTrustToken);
    target.setInternalPersistedAppTrustToken(
      source.internalPersistedAppTrustToken,
    );
    target.instanceId = source.instanceId;

    final appTrustInstance = source.internalAppTrustInstance;
    if (appTrustInstance != null) {
      target.setInternalAppTrustInstance(appTrustInstance);
      try {
        (appTrustInstance as dynamic).useApp(target);
      } catch (_) {
        // Older App Trust implementations do not expose useApp.
      }
    }
  }

  final previousApp = _apps[name];
  FusabaseApp app = FusabaseApp(name: name, options: options);
  if (previousApp is FusabaseApp) {
    inheritAppTrustState(app, previousApp);
  }
  if (name != globals.defaultAppName) {
    final previousDefaultApp = _apps[globals.defaultAppName];
    final defaultApp = FusabaseApp(
      name: globals.defaultAppName,
      options: options,
    );
    if (previousDefaultApp is FusabaseApp) {
      inheritAppTrustState(defaultApp, previousDefaultApp);
    } else {
      defaultApp.setInternalAppTrustToken(app.internalAppTrustToken);
      defaultApp.setInternalPersistedAppTrustToken(
        app.internalPersistedAppTrustToken,
      );
      defaultApp.instanceId = app.instanceId;
    }
    _apps[globals.defaultAppName] = defaultApp;
  }
  _apps[name] = app;

  return app;
}