initialize method
Future<bool>
initialize({
- required String appId,
- required String endpoint,
- bool? logEvents,
- bool? compressEvents,
- int? sessionTimeoutMs,
- int? sendEventIntervalMs,
- Map<
String, dynamic> ? initialGlobalAttributes,
override
Initializes the Clickstream Analytics SDK on the web platform.
If options are provided, attempts to call the 3-argument JS initialize method.
Otherwise, falls back to the 2-argument version.
Returns true if initialization was attempted.
Implementation
@override
Future<bool> initialize({
required String appId,
required String endpoint,
bool? logEvents,
bool? compressEvents,
int? sessionTimeoutMs,
int? sendEventIntervalMs,
Map<String, dynamic>? initialGlobalAttributes,
}) async {
final options = <String, dynamic>{
if (logEvents != null) 'logEvents': logEvents,
if (compressEvents != null) 'compressEvents': compressEvents,
if (sessionTimeoutMs != null) 'sessionTimeoutMs': sessionTimeoutMs,
if (sendEventIntervalMs != null)
'sendEventIntervalMs': sendEventIntervalMs,
if (initialGlobalAttributes != null)
'initialGlobalAttributes': initialGlobalAttributes,
};
final jsOptions = options.isNotEmpty ? options.jsify() : null;
try {
if (jsOptions != null) {
// Try to call the 3-argument initialize if available.
final jsObj = clickstreamAnalytics as JSObject;
final fn = jsObj.getProperty('initialize'.toJS) as JSFunction?;
if (fn != null) {
// callAsFunction takes a JS array of arguments.
fn.callAsFunction(
jsObj,
[appId.toJS, endpoint.toJS, jsOptions].jsify()!,
);
} else {
// Fallback to 2-argument version.
clickstreamAnalytics?.initialize(appId, endpoint);
}
} else {
clickstreamAnalytics?.initialize(appId, endpoint);
}
} catch (_) {
// Always fallback to 2-argument version if anything fails.
clickstreamAnalytics?.initialize(appId, endpoint);
}
return true;
}