import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/dns_providers/dns_provider_factory.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';

class ApiController {
  static VolumeProviderApiFactory? get currentVolumeProviderApiFactory =>
      _volumeProviderApiFactory;
  static DnsProviderApiFactory? get currentDnsProviderApiFactory =>
      _dnsProviderApiFactory;
  static ServerProviderApiFactory? get currentServerProviderApiFactory =>
      _serverProviderApiFactory;

  static void initVolumeProviderApiFactory(
    final ServerProviderApiFactorySettings settings,
  ) {
    _volumeProviderApiFactory =
        VolumeApiFactoryCreator.createVolumeProviderApiFactory(settings);
  }

  static void initDnsProviderApiFactory(
    final DnsProviderApiFactorySettings settings,
  ) {
    _dnsProviderApiFactory =
        ApiFactoryCreator.createDnsProviderApiFactory(settings);
  }

  static void initServerProviderApiFactory(
    final ServerProviderApiFactorySettings settings,
  ) {
    _serverProviderApiFactory =
        ApiFactoryCreator.createServerProviderApiFactory(settings);
  }

  static void clearProviderApiFactories() {
    _volumeProviderApiFactory = null;
    _dnsProviderApiFactory = null;
    _serverProviderApiFactory = null;
  }

  static VolumeProviderApiFactory? _volumeProviderApiFactory;
  static DnsProviderApiFactory? _dnsProviderApiFactory;
  static ServerProviderApiFactory? _serverProviderApiFactory;
}
