open method

Future<TikiChainService> open({
  1. required Database database,
  2. Httpp? httpp,
  3. TikiKv? kv,
  4. String? accessToken()?,
  5. Future<void> refresh(
    1. void onSuccess(
      1. String?
      )?
    )?,
  6. dynamic amplitude,
})

Implementation

Future<TikiChainService> open(
    {required Database database,
    Httpp? httpp,
    TikiKv? kv,
    String? Function()? accessToken,
    Future<void> Function(void Function(String?)? onSuccess)?
    refresh,
    amplitude}) async {
  if (!database.isOpen) {
    throw ArgumentError.value(database, 'database', 'database is not open');
  }
  _amplitude = amplitude;
  _accessToken = accessToken ?? () => null;
  _cacheRepository = TikiChainCacheRepository(database);
  _propsRepository = TikiChainPropsRepository(database);
  await _cacheRepository.createTable();
  await _propsRepository.createTable();
  _localchain = await TikiLocalchain()
      .open('chain-${hexEncode(base64Decode(_keys.address))}');

  _syncChain = await TikiSyncChain(
          httpp: httpp,
          kv: kv,
          database: database,
          refresh: refresh,
          accessToken: _accessToken,
          amplitude: _amplitude,
          sign: (textToSign) => rsa.sign(_keys.sign.privateKey, textToSign))
      .init(
          address: _keys.address,
          publicKey: _keys.sign.publicKey.encode(),
          onError: (err) => throw StateError('failed to init sync chain'));

  TikiChainPropsModel? cachedOn =
      await _propsRepository.get(TikiChainPropsKey.cachedOn);
  if (cachedOn == null) build();
  return this;
}