open method
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;
}