mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-11-26 22:14:55 +00:00
Refactor API error handling and add try-catch blocks
Added try-catch blocks for error handling in API's files to rethrow the errors to the cubit so cubits can update the UI based on them. Refactored error handling in HTTPInterceptor and HTTPService classes.
This commit is contained in:
@ -125,14 +125,17 @@ class HomeCubit extends Cubit<HomeState> {
|
||||
emitSafe(GetSpacesLoading());
|
||||
try {
|
||||
spaces = await SpacesAPI.getSpaces();
|
||||
selectedSpace = spaces!.isNotEmpty
|
||||
?
|
||||
// selectSpace(spaces!.first)
|
||||
selectedSpace = spaces!.first
|
||||
: null;
|
||||
emitSafe(GetSpacesLoaded(spaces!));
|
||||
} on ServerFailure catch (failure) {
|
||||
emitSafe(GetSpacesError(failure.errMessage));
|
||||
} catch (failure) {
|
||||
emitSafe(GetSpacesError(failure.toString()));
|
||||
return;
|
||||
}
|
||||
|
||||
if (spaces != null && spaces!.isNotEmpty) {
|
||||
selectedSpace = spaces!.first;
|
||||
emitSafe(GetSpacesSuccess(spaces!));
|
||||
fetchRooms(selectedSpace!);
|
||||
} else {
|
||||
emitSafe(GetSpacesError("No spaces found"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -140,13 +143,14 @@ class HomeCubit extends Cubit<HomeState> {
|
||||
emitSafe(GetSpaceRoomsLoading());
|
||||
try {
|
||||
space.rooms = await SpacesAPI.getRoomsBySpaceId(space.id!);
|
||||
if (space.rooms != null) {
|
||||
emitSafe(GetSpaceRoomsLoaded(space.rooms!));
|
||||
} else {
|
||||
emitSafe(GetSpaceRoomsError("No rooms found"));
|
||||
}
|
||||
} on ServerFailure catch (failure) {
|
||||
emitSafe(GetSpacesError(failure.errMessage));
|
||||
} catch (failure) {
|
||||
emitSafe(GetSpaceRoomsError(failure.toString()));
|
||||
return;
|
||||
}
|
||||
if (space.rooms != null) {
|
||||
emitSafe(GetSpaceRoomsSuccess(space.rooms!));
|
||||
} else {
|
||||
emitSafe(GetSpaceRoomsError("No rooms found"));
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,14 +173,6 @@ class HomeCubit extends Cubit<HomeState> {
|
||||
),
|
||||
],
|
||||
'Devices': [
|
||||
// IconButton(
|
||||
// icon: Image.asset(
|
||||
// Assets.iconsFilter,
|
||||
// height: 20,
|
||||
// width: 20,
|
||||
// ),
|
||||
// onPressed: () {},
|
||||
// ),
|
||||
IconButton(
|
||||
icon: const Icon(
|
||||
Icons.add,
|
||||
|
||||
@ -4,33 +4,45 @@ abstract class HomeState {}
|
||||
|
||||
class HomeInitial extends HomeState {}
|
||||
|
||||
class GetSpacesLoading extends HomeState {}
|
||||
//base states
|
||||
class HomeLoading extends HomeState {}
|
||||
|
||||
class GetSpacesLoaded extends HomeState {
|
||||
class HomeError extends HomeState {
|
||||
final String errMessage;
|
||||
|
||||
HomeError(this.errMessage);
|
||||
}
|
||||
|
||||
class HomeSuccess extends HomeState {}
|
||||
|
||||
///specific states
|
||||
//get spaces
|
||||
class GetSpacesLoading extends HomeLoading {}
|
||||
|
||||
class GetSpacesSuccess extends HomeSuccess {
|
||||
final List<SpaceModel> spaces;
|
||||
|
||||
GetSpacesLoaded(this.spaces);
|
||||
GetSpacesSuccess(this.spaces);
|
||||
}
|
||||
|
||||
class GetSpacesError extends HomeState {
|
||||
final String errMessage;
|
||||
|
||||
GetSpacesError(this.errMessage);
|
||||
class GetSpacesError extends HomeError {
|
||||
GetSpacesError(super.errMessage);
|
||||
}
|
||||
|
||||
class GetSpaceRoomsLoading extends HomeState {}
|
||||
//get rooms
|
||||
class GetSpaceRoomsLoading extends HomeLoading {}
|
||||
|
||||
class GetSpaceRoomsLoaded extends HomeState {
|
||||
class GetSpaceRoomsSuccess extends HomeSuccess {
|
||||
final List<RoomModel> rooms;
|
||||
|
||||
GetSpaceRoomsLoaded(this.rooms);
|
||||
GetSpaceRoomsSuccess(this.rooms);
|
||||
}
|
||||
|
||||
class GetSpaceRoomsError extends HomeState {
|
||||
final String errMessage;
|
||||
GetSpaceRoomsError(this.errMessage);
|
||||
class GetSpaceRoomsError extends HomeError {
|
||||
GetSpaceRoomsError(super.errMessage);
|
||||
}
|
||||
|
||||
//UI states
|
||||
class SpaceSelected extends HomeState {
|
||||
final SpaceModel space;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user