Files
linkding-ios/lib/providers/api_client.provider.dart
Juan Gilsanz Polo 94e3e1c89a Renamed providers
2024-02-25 14:49:18 +01:00

43 lines
1.2 KiB
Dart

import 'package:dio/dio.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:linkdy/providers/server_instances.provider.dart';
import 'package:linkdy/providers/dio_interceptor.provider.dart';
import 'package:linkdy/services/api_client.dart';
import 'package:linkdy/utils/api_base_url.dart';
part 'api_client.provider.g.dart';
@Riverpod(keepAlive: true)
class ApiClient extends _$ApiClient {
@override
ApiClientService? build() {
final savedInstances = ref.watch(serverInstancesProvider);
if (savedInstances.isNotEmpty) {
final instance = savedInstances[0];
final dio = Dio(
BaseOptions(
baseUrl: apiBaseUrl(instance),
headers: {
"Authorization": "Token ${instance.token}",
},
),
)..interceptors.add(ref.watch(dioInterceptorProvider));
return ApiClientService(
serverInstance: instance,
dioInstance: dio,
);
}
return null;
}
void setApiClient(ApiClientService client) {
state = client;
}
void disconnectApiClient() {
state = null;
ref.read(serverInstancesProvider.notifier).removeServerInstances();
}
}