init method
Implementation
Future<TikiSyncChain> init(
{String? address,
String? publicKey,
void Function(Object)? onError}) async {
if (_kv == null) _kv = await TikiKv(database: _database).init();
_dbService = await DBService().open(_database);
bool? isRegistered =
await _kv!.read(_isRegistered) == 'true' ? true : false;
if (!isRegistered) {
await _authorizeService.register(
address: address,
publicKeyB64: publicKey,
onSuccess: () async {
await _kv!.upsert(_isRegistered, 'true');
await _authorizeService.policy(
address: address,
onError: onError,
onSuccess: (rsp) => _policy = rsp);
},
onError: (err) {
if (err is AuthorizeModelRsp && err.code == 400) {
err.messages?.forEach((msg) async {
if (msg.message?.trim().toLowerCase() ==
'address already registered') {
await _kv!.upsert(_isRegistered, 'true');
await _authorizeService.policy(
address: address,
onError: onError,
onSuccess: (rsp) => _policy = rsp);
}
});
} else if (onError != null)
onError(err);
else
throw StateError('Failed to init. Cannot register public key');
});
} else
await _authorizeService.policy(
address: address,
onError: onError,
onSuccess: (rsp) => _policy = rsp);
_address = address;
return this;
}