ui/lib/modules/settings/data/project_provider.dart (36 lines of code) (raw):
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import 'dart:async';
import 'package:cloud_provision_shared/services/ProjectService.dart';
import 'package:cloud_provision_shared/services/models/project.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import '../../auth/repositories/auth_provider.dart';
import '../../auth/repositories/auth_repository.dart';
import 'project_repository.dart';
part 'project_provider.g.dart';
final projectDropdownProvider = StateProvider<String>(
(ref) => "Select a project",
);
Project emptyProject = new Project(projectId: "null", projectNumber: "null",
name: "null", createTime: DateTime.now());
final projectProvider = StateProvider<Project>(
(ref) => emptyProject,
);
@riverpod
Future<List<Project>> projects(ProjectsRef ref) async {
final authRepo = ref.watch(authRepositoryProvider);
try {
var authClient = await authRepo.getAuthClient();
ProjectService projectService = new ProjectService(authClient!.credentials.accessToken.data);
return projectService.getProjects();
} catch (e) {
print(e);
return [];
}
}
@riverpod
ProjectRepository projectRepository(ProjectRepositoryRef ref) {
final AuthRepository authRepo = ref.read(authRepositoryProvider);
var authClient = authRepo.getAuthClient();
String accessToken = authClient.credentials.accessToken.data;
return ProjectRepository(accessToken);
}