refactor: Remove unused tenant loading logic and streamline tenant selection process

This commit is contained in:
Vaibhav Surve 2025-09-25 11:35:27 +05:30
parent 1900e944e5
commit 7c21324b42
2 changed files with 17 additions and 49 deletions

View File

@ -1,8 +1,6 @@
import 'dart:convert';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:marco/helpers/services/app_logger.dart'; import 'package:marco/helpers/services/app_logger.dart';
import 'package:marco/helpers/services/tenant_service.dart'; import 'package:marco/helpers/services/tenant_service.dart';
import 'package:marco/helpers/services/storage/local_storage.dart';
import 'package:marco/model/tenant/tenant_list_model.dart'; import 'package:marco/model/tenant/tenant_list_model.dart';
import 'package:marco/helpers/widgets/my_snackbar.dart'; import 'package:marco/helpers/widgets/my_snackbar.dart';
@ -15,36 +13,18 @@ class TenantSelectionController extends GetxController {
@override @override
void onInit() { void onInit() {
super.onInit(); super.onInit();
_checkExistingTenant(); loadTenants();
}
/// Check if a tenant was previously selected
Future<void> _checkExistingTenant() async {
try {
final savedTenant = await TenantService.loadSavedTenant();
if (savedTenant != null) {
// Tenant already selected go to dashboard
Get.offAllNamed('/dashboard');
} else {
// No tenant saved load from API
await loadTenants();
}
} catch (e, st) {
logSafe("❌ Error checking saved tenant",
level: LogLevel.error, error: e, stackTrace: st);
await loadTenants();
}
} }
/// Load tenants from API /// Load tenants from API
Future<void> loadTenants() async { Future<void> loadTenants() async {
isLoading.value = true;
try { try {
isLoading.value = true;
final data = await _tenantService.getTenants(); final data = await _tenantService.getTenants();
if (data != null && data.isNotEmpty) { if (data != null) {
tenants.value = data.map((e) => Tenant.fromJson(e)).toList(); tenants.value = data.map((e) => Tenant.fromJson(e)).toList();
// Auto-select if only one tenant // Automatically select if only one tenant
if (tenants.length == 1) { if (tenants.length == 1) {
await onTenantSelected(tenants.first.id); await onTenantSelected(tenants.first.id);
} }
@ -55,34 +35,37 @@ class TenantSelectionController extends GetxController {
} catch (e, st) { } catch (e, st) {
logSafe("❌ Exception in loadTenants", logSafe("❌ Exception in loadTenants",
level: LogLevel.error, error: e, stackTrace: st); level: LogLevel.error, error: e, stackTrace: st);
tenants.clear();
} finally { } finally {
isLoading.value = false; isLoading.value = false;
} }
} }
/// Handle tenant selection /// Select tenant
Future<void> onTenantSelected(String tenantId) async { Future<void> onTenantSelected(String tenantId) async {
isLoading.value = true;
try { try {
isLoading.value = true;
final success = await _tenantService.selectTenant(tenantId); final success = await _tenantService.selectTenant(tenantId);
if (success) { if (success) {
final tenant = tenants.firstWhere((t) => t.id == tenantId); logSafe("✅ Tenant selection successful: $tenantId");
// Save selected tenant in TenantService and LocalStorage // Store selected tenant in memory
TenantService.setSelectedTenant(tenant); TenantService.setSelectedTenant(
await LocalStorage.saveString( tenants.firstWhere((t) => t.id == tenantId));
'selectedTenant', jsonEncode(tenant.toJson()));
// Navigate to dashboard // Navigate to dashboard/home
Get.offAllNamed('/dashboard'); Get.offAllNamed('/dashboard');
// Optional: show success snackbar
showAppSnackbar( showAppSnackbar(
title: "Success", title: "Success",
message: "Organization selected successfully.", message: "Organization selected successfully.",
type: SnackbarType.success, type: SnackbarType.success,
); );
} else { } else {
logSafe("❌ Tenant selection failed for: $tenantId",
level: LogLevel.warning);
// Show error snackbar
showAppSnackbar( showAppSnackbar(
title: "Error", title: "Error",
message: "Unable to select organization. Please try again.", message: "Unable to select organization. Please try again.",
@ -93,6 +76,7 @@ class TenantSelectionController extends GetxController {
logSafe("❌ Exception in onTenantSelected", logSafe("❌ Exception in onTenantSelected",
level: LogLevel.error, error: e, stackTrace: st); level: LogLevel.error, error: e, stackTrace: st);
// Show error snackbar for exception
showAppSnackbar( showAppSnackbar(
title: "Error", title: "Error",
message: "An unexpected error occurred while selecting organization.", message: "An unexpected error occurred while selecting organization.",

View File

@ -97,22 +97,6 @@ class TenantService implements ITenantService {
} }
} }
/// Load previously selected tenant from local storage
static Future<Tenant?> loadSavedTenant() async {
final jsonString = LocalStorage.getString('selectedTenant');
if (jsonString == null) return null;
try {
final tenantMap = jsonDecode(jsonString) as Map<String, dynamic>;
final tenant = Tenant.fromJson(tenantMap);
currentTenant = tenant;
return tenant;
} catch (e) {
logSafe("❌ Failed to load saved tenant: $e", level: LogLevel.warning);
return null;
}
}
@override @override
Future<bool> selectTenant(String tenantId, {bool hasRetried = false}) async { Future<bool> selectTenant(String tenantId, {bool hasRetried = false}) async {
try { try {