NotifiableClient constructor

NotifiableClient({
  1. required String publicKey,
  2. Logger? logger,
  3. Object? push = _platform,
  4. KeyValueStore? storage,
  5. Object? device = _platform,
  6. List<DeepLink>? deepLinks,
  7. void onDeepLink(
    1. String url
    )?,
  8. HttpTransport? transport,
})

Implementation

NotifiableClient({
  required String publicKey,
  Logger? logger,
  Object? push = _platform,
  KeyValueStore? storage,
  Object? device = _platform,
  this.deepLinks,
  this.onDeepLink,
  HttpTransport? transport,
}) : publicKey = publicKey.trim(),
     logger = logger ?? const SilentLogger() {
  if (this.publicKey.isEmpty) {
    throw NotifiableError(
      NotifiableErrorCode.invalidConfig,
      'publicKey is required',
    );
  }

  final resolvedDevice = identical(device, _platform)
      ? FlutterDevicePort()
      : device as DevicePort?;

  if (resolvedDevice == null) {
    throw NotifiableError(
      NotifiableErrorCode.invalidConfig,
      'Notifiable could not read this device.',
    );
  }

  final resolvedPush = identical(push, _platform)
      ? FlutterPushPort()
      : push as PushPort?;
  this.push = resolvedPush;
  this.device = resolvedDevice;
  _storage = storage ?? SharedPreferencesStorage();
  _api = SdkApi(
    HttpClient(
      baseUrl: notifiableApiUrl,
      publicKey: this.publicKey,
      transport: transport ?? const IoHttpTransport(),
    ),
  );
  logger?.debug('Notifiable client created', {
    'hasPush': resolvedPush == null ? 'false' : 'true',
  });
}