Files
linkding-ios/lib/providers/api_client_provider.dart
Juan Gilsanz Polo 1521fd0f7e Load bookmarks
2024-02-22 18:32:20 +01:00

40 lines
1.0 KiB
Dart

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