initializeApp static method
- {String name = globals.defaultAppName,
- 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:
- The newly initialized FusabaseApp.
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;
}