init method

Future<void> init()

Fetch base URLs

Implementation

Future<void> init() async {
  if (_initialized) return;

  // 1. Get package name
  await _systemService.init();
  if (_systemService.packageName == null) return;

  // 2. Get URLs
  final res = await _apiService.request(
    method: RequestMethod.post,
    url: '${BaseURL.freeMap}/urls',
    body: {'deviceId': '1', 'appId': _systemService.packageName},
  );

  _initialized = res.success;

  // 3. Update base URLs
  try {
    _freeMapURL = res.data['data']['fm'];
    _logService.logURL = res.data['data']['log'];
    final nominatimURL = res.data['data']['osm'];
    final routingURL = res.data['data']['polyline'];

    // Ensure the custom URL set by the developer is not overridden.
    if ((_nominatimURL.isCustom && _nominatimURL.url == nominatimURL) ||
        (!_nominatimURL.isCustom && _nominatimURL.url != nominatimURL)) {
      _nominatimURL = UrlModel(url: nominatimURL);
    }

    if ((_routingURL.isCustom && _routingURL.url == routingURL) ||
        (!_routingURL.isCustom && _routingURL.url != routingURL)) {
      _routingURL = UrlModel(url: routingURL);
    }
  } catch (e, st) {
    _logService.logError(e, st);
  }
}