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:marco/helpers/services/app_logger.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/helpers/widgets/my_snackbar.dart';
@ -15,36 +13,18 @@ class TenantSelectionController extends GetxController {
@override
void onInit() {
super.onInit();
_checkExistingTenant();
}
/// 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();
}
loadTenants();
}
/// Load tenants from API
Future<void> loadTenants() async {
isLoading.value = true;
try {
isLoading.value = true;
final data = await _tenantService.getTenants();
if (data != null && data.isNotEmpty) {
if (data != null) {
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) {
await onTenantSelected(tenants.first.id);
}
@ -55,34 +35,37 @@ class TenantSelectionController extends GetxController {
} catch (e, st) {
logSafe("❌ Exception in loadTenants",
level: LogLevel.error, error: e, stackTrace: st);
tenants.clear();
} finally {
isLoading.value = false;
}
}
/// Handle tenant selection
/// Select tenant
Future<void> onTenantSelected(String tenantId) async {
isLoading.value = true;
try {
isLoading.value = true;
final success = await _tenantService.selectTenant(tenantId);
if (success) {
final tenant = tenants.firstWhere((t) => t.id == tenantId);
logSafe("✅ Tenant selection successful: $tenantId");
// Save selected tenant in TenantService and LocalStorage
TenantService.setSelectedTenant(tenant);
await LocalStorage.saveString(
'selectedTenant', jsonEncode(tenant.toJson()));
// Store selected tenant in memory
TenantService.setSelectedTenant(
tenants.firstWhere((t) => t.id == tenantId));
// Navigate to dashboard
// Navigate to dashboard/home
Get.offAllNamed('/dashboard');
// Optional: show success snackbar
showAppSnackbar(
title: "Success",
message: "Organization selected successfully.",
type: SnackbarType.success,
);
} else {
logSafe("❌ Tenant selection failed for: $tenantId",
level: LogLevel.warning);
// Show error snackbar
showAppSnackbar(
title: "Error",
message: "Unable to select organization. Please try again.",
@ -93,6 +76,7 @@ class TenantSelectionController extends GetxController {
logSafe("❌ Exception in onTenantSelected",
level: LogLevel.error, error: e, stackTrace: st);
// Show error snackbar for exception
showAppSnackbar(
title: "Error",
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
Future<bool> selectTenant(String tenantId, {bool hasRetried = false}) async {
try {