Add project api
All checks were successful
ci/woodpecker/push/build Pipeline was successful

Signed-off-by: Nikolai Rodionov <iam@allanger.xyz>
This commit is contained in:
2026-06-09 15:21:10 +02:00
parent 4819f6f534
commit ea64470a4b
2 changed files with 54 additions and 0 deletions

View 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;
}
}
}

View File

@@ -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);