import 'package:get/get.dart'; import 'package:logger/logger.dart'; import 'package:marco/helpers/services/api_service.dart'; import 'package:marco/model/project_model.dart'; final Logger log = Logger(); class DashboardController extends GetxController { RxList projects = [].obs; RxString? selectedProjectId; var isProjectListExpanded = false.obs; RxBool isProjectSelectionExpanded = true.obs; void toggleProjectListExpanded() { isProjectListExpanded.value = !isProjectListExpanded.value; } var isProjectDropdownExpanded = false.obs; RxBool isLoading = true.obs; RxBool isLoadingProjects = true.obs; RxMap uploadingStates = {}.obs; @override void onInit() { super.onInit(); fetchProjects(); } /// Fetches projects and initializes selected project. Future fetchProjects() async { isLoadingProjects.value = true; isLoading.value = true; final response = await ApiService.getProjects(); if (response != null && response.isNotEmpty) { projects.assignAll( response.map((json) => ProjectModel.fromJson(json)).toList()); selectedProjectId = RxString(projects.first.id.toString()); log.i("Projects fetched: ${projects.length}"); } else { log.w("No projects found or API call failed."); } isLoadingProjects.value = false; isLoading.value = false; update(['dashboard_controller']); } void updateSelectedProject(String projectId) { selectedProjectId?.value = projectId; } }