initialise method

  1. @override
Future<bool> initialise({
  1. TerminalManagerSettings? settings,
  2. dynamic onRealTimeEvent(
    1. NotificationEvent
    )?,
  3. dynamic onAsyncEvent(
    1. NotificationEvent
    )?,
})
override

Implementation

@override
Future<bool> initialise({
  TerminalManagerSettings? settings,
  Function(NotificationEvent)? onRealTimeEvent,
  Function(NotificationEvent)? onAsyncEvent,
}) async {
  final settingsFromConfig = await configService.getObjectValue(
    key: 'settings_terminal_manager',
    defaultValue: {},
  ) as Map;

  if (settingsFromConfig is Map<String, dynamic> &&
      settingsFromConfig.isNotEmpty) {
    final jsonSettings = TerminalManagerSettings.fromJson(settingsFromConfig);
    terminalManagerSettings = TerminalManagerSettings(
      baseUrl: jsonSettings.baseUrl,
      version: jsonSettings.version.isEmpty ? 'v1' : jsonSettings.version,
    );
  }

  final useParameterSettings =
      terminalManagerSettings.baseUrl.isEmpty && settings != null;
  if (useParameterSettings) {
    terminalManagerSettings = settings;
  }

  final urlInfoReady = terminalManagerSettings.baseUrl.isNotEmpty &&
      terminalManagerSettings.version.isNotEmpty;

  if (!urlInfoReady) {
    logger.warning(
      this,
      'No settings found for terminal manager, please check your configuration',
    );

    return false;
  }

  final baseUrl = terminalManagerSettings.baseUrl;
  final updatedUrl = baseUrl.replaceFirst('/api', '');

  final manager = this as TerminalManager;

  manager._endpoint =
      '$updatedUrl/terminalmgr/api/${terminalManagerSettings.version}/terminals';
  manager._eventHubUrl = '$updatedUrl/terminalmgr/eventhub';
  manager._terminalUrl = '$updatedUrl/terminalmgr/api/v1';

  try {
    LocationPermission r = await manager._locator.checkPermission();

    switch (r) {
      case LocationPermission.always:
      case LocationPermission.whileInUse:
        manager._hasLocationAccess = true;
        break;
      case LocationPermission.denied:
      case LocationPermission.deniedForever:
        manager._hasLocationAccess = false;
        break;
      default:
        manager._hasLocationAccess = false;
    }
  } catch (e) {
    logger.error(
      this,
      'Error checking location permission: $e',
      error: e,
      stackTrace: StackTrace.current,
    );
    manager._hasLocationAccess = false;
  }

  logger.debug(
    this,
    'Terminal Manager Service initialised, with endpoint: ${manager._endpoint}',
  );

  setIsReady(true);
  return true;
}