Journify constructor

Journify(
  1. Configuration config,
  2. Store _store, {
  3. HTTPClient httpClient(
    1. Journify
    )?,
})

Implementation

Journify(Configuration config, this._store,
    {HTTPClient Function(Journify)? httpClient})
    : _state = StateManager(_store, System(true, false), config),
      _timeline = Timeline() {
  _state.init(error, config.storageJson!);

  this.httpClient = httpClient == null ? HTTPClient(this) : httpClient(this);

  state.ready.then((_) => _onStateReady());

  if (config.autoAddJournifyDestination) {
    final segmentDestination = JournifyDestination();
    addPlugin(segmentDestination);
  }

  if (config.token != null) {
    _platformPlugins.add(InjectToken(config.token!));
  }

  // Setup platform specific plugins
  _platformPlugins.forEach(addPlugin);

  // Start flush policies
  final flushPolicies = state.configuration.state.flushPolicies ?? [];
  _flushPolicyExecuter = FlushPolicyExecuter(flushPolicies, () => flush());
  _flushPolicyExecuter.start();
}