Signed-off-by: Nikolai Rodionov <iam@allanger.xyz>
This commit is contained in:
36
lib/core/api/v1/projects.dart
Normal file
36
lib/core/api/v1/projects.dart
Normal file
@@ -0,0 +1,36 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:grpc/grpc_web.dart';
|
||||
import 'package:softplayer_dart_proto/projects/v1/projects_v1.pbgrpc.dart';
|
||||
import 'package:softplayer_web/core/grpc/grpc_client.dart';
|
||||
|
||||
final projectsGrpcProvider = Provider<ProjectsGrpcRepository>((ref) {
|
||||
return ProjectsGrpcRepository(ref.watch(projectsServiceClientProvider));
|
||||
});
|
||||
|
||||
class ProjectsGrpcRepository {
|
||||
ProjectsGrpcRepository(this._client);
|
||||
final ProjectsServiceClient _client;
|
||||
|
||||
ResponseFuture<CreateProjectResponse> createProject(
|
||||
CreateProjectRequest data,
|
||||
) {
|
||||
try {
|
||||
final response = _client.createProject(data);
|
||||
return response;
|
||||
} catch (e) {
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
|
||||
Stream<ListProjectsResponse> listProjects() async* {
|
||||
try {
|
||||
await for (final projects in _client.listProjects(
|
||||
ListProjectsRequest(),
|
||||
)) {
|
||||
yield projects;
|
||||
}
|
||||
} catch (error) {
|
||||
rethrow;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:softplayer_dart_proto/accounts/v1/accounts_v1.pbgrpc.dart';
|
||||
import 'package:softplayer_dart_proto/projects/v1/projects_v1.pbgrpc.dart';
|
||||
import 'package:softplayer_dart_proto/test/v1/test_v1.pbgrpc.dart';
|
||||
import 'package:softplayer_web/core/grpc/grpc_auth_interceptor.dart';
|
||||
import 'package:softplayer_web/core/tokens/application/tokens_application.dart';
|
||||
@@ -41,6 +42,23 @@ final accountsServiceClientProvider = Provider<AccountsServiceClient>((ref) {
|
||||
);
|
||||
});
|
||||
|
||||
final projectsServiceClientProvider = Provider<ProjectsServiceClient>((ref) {
|
||||
final channel = ref.watch(grpcChannelProvider);
|
||||
final tokenState = ref.read(tokensControllerProvider).value;
|
||||
if (tokenState == null) {
|
||||
throw Exception("Token state is not initialized");
|
||||
}
|
||||
return ProjectsServiceClient(
|
||||
channel,
|
||||
interceptors: [
|
||||
AuthInterceptor(
|
||||
getAccessToken: tokenState.getAccessToken,
|
||||
getRefreshToken: tokenState.getRefreshToken,
|
||||
),
|
||||
],
|
||||
);
|
||||
});
|
||||
|
||||
final publicAccountsServiceClientProvider =
|
||||
Provider<PublicAccountsServiceClient>((ref) {
|
||||
final channel = ref.watch(grpcChannelProvider);
|
||||
|
||||
Reference in New Issue
Block a user