mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-08-26 07:19:39 +00:00
changed endpoint for getting automations by space
This commit is contained in:
@ -46,8 +46,11 @@ class SceneBloc extends Bloc<SceneEvent, SceneState> {
|
|||||||
emit(SceneLoading());
|
emit(SceneLoading());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
Project? project = HomeCubit.getInstance().project;
|
||||||
|
|
||||||
if (event.unitId.isNotEmpty) {
|
if (event.unitId.isNotEmpty) {
|
||||||
automationList = await SceneApi.getAutomationByUnitId(event.unitId);
|
automationList = await SceneApi.getAutomationByUnitId(
|
||||||
|
event.unitId, event.communityId, project?.uuid ?? '');
|
||||||
emit(SceneLoaded(scenes, automationList));
|
emit(SceneLoaded(scenes, automationList));
|
||||||
} else {
|
} else {
|
||||||
emit(const SceneError(message: 'Unit ID is empty'));
|
emit(const SceneError(message: 'Unit ID is empty'));
|
||||||
@ -96,11 +99,16 @@ class SceneBloc extends Bloc<SceneEvent, SceneState> {
|
|||||||
));
|
));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
Project? project = HomeCubit.getInstance().project;
|
||||||
|
|
||||||
final success = await SceneApi.updateAutomationStatus(
|
final success = await SceneApi.updateAutomationStatus(
|
||||||
event.automationId, event.automationStatusUpdate);
|
event.automationId, event.automationStatusUpdate);
|
||||||
if (success) {
|
if (success) {
|
||||||
automationList = await SceneApi.getAutomationByUnitId(
|
automationList = await SceneApi.getAutomationByUnitId(
|
||||||
event.automationStatusUpdate.spaceUuid);
|
event.automationStatusUpdate.spaceUuid,
|
||||||
|
event.communityId,
|
||||||
|
project?.uuid ?? ''
|
||||||
|
);
|
||||||
newLoadingStates[event.automationId] = false;
|
newLoadingStates[event.automationId] = false;
|
||||||
emit(SceneLoaded(
|
emit(SceneLoaded(
|
||||||
currentState.scenes,
|
currentState.scenes,
|
||||||
|
@ -22,11 +22,13 @@ class LoadScenes extends SceneEvent {
|
|||||||
|
|
||||||
class LoadAutomation extends SceneEvent {
|
class LoadAutomation extends SceneEvent {
|
||||||
final String unitId;
|
final String unitId;
|
||||||
|
final String communityId;
|
||||||
|
|
||||||
const LoadAutomation(this.unitId);
|
|
||||||
|
const LoadAutomation(this.unitId, this.communityId);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object> get props => [unitId];
|
List<Object> get props => [unitId, communityId];
|
||||||
}
|
}
|
||||||
|
|
||||||
class SceneTrigger extends SceneEvent {
|
class SceneTrigger extends SceneEvent {
|
||||||
@ -43,8 +45,9 @@ class SceneTrigger extends SceneEvent {
|
|||||||
class UpdateAutomationStatus extends SceneEvent {
|
class UpdateAutomationStatus extends SceneEvent {
|
||||||
final String automationId;
|
final String automationId;
|
||||||
final AutomationStatusUpdate automationStatusUpdate;
|
final AutomationStatusUpdate automationStatusUpdate;
|
||||||
|
final String communityId;
|
||||||
|
|
||||||
const UpdateAutomationStatus({required this.automationStatusUpdate, required this.automationId});
|
const UpdateAutomationStatus({required this.automationStatusUpdate, required this.automationId, required this.communityId});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
List<Object> get props => [automationStatusUpdate];
|
List<Object> get props => [automationStatusUpdate];
|
||||||
|
@ -49,7 +49,9 @@ class SceneView extends StatelessWidget {
|
|||||||
name: '',
|
name: '',
|
||||||
)),
|
)),
|
||||||
showInDevice: pageType))
|
showInDevice: pageType))
|
||||||
..add(LoadAutomation(HomeCubit.getInstance().selectedSpace?.id ?? ''));
|
..add(LoadAutomation(
|
||||||
|
HomeCubit.getInstance().selectedSpace?.id ?? '',
|
||||||
|
HomeCubit.getInstance().selectedSpace?.community.uuid ?? ''));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: BlocBuilder<CreateSceneBloc, CreateSceneState>(
|
child: BlocBuilder<CreateSceneBloc, CreateSceneState>(
|
||||||
@ -57,30 +59,37 @@ class SceneView extends StatelessWidget {
|
|||||||
if (state is DeleteSceneSuccess) {
|
if (state is DeleteSceneSuccess) {
|
||||||
if (state.success) {
|
if (state.success) {
|
||||||
BlocProvider.of<SceneBloc>(context).add(LoadScenes(
|
BlocProvider.of<SceneBloc>(context).add(LoadScenes(
|
||||||
HomeCubit.getInstance().selectedSpace!.id, HomeCubit.getInstance().selectedSpace!,
|
HomeCubit.getInstance().selectedSpace!.id,
|
||||||
|
HomeCubit.getInstance().selectedSpace!,
|
||||||
showInDevice: pageType));
|
showInDevice: pageType));
|
||||||
BlocProvider.of<SceneBloc>(context)
|
BlocProvider.of<SceneBloc>(context).add(LoadAutomation(
|
||||||
.add(LoadAutomation(HomeCubit.getInstance().selectedSpace!.id));
|
HomeCubit.getInstance().selectedSpace!.id,
|
||||||
|
HomeCubit.getInstance().selectedSpace!.community.uuid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (state is CreateSceneWithTasks) {
|
if (state is CreateSceneWithTasks) {
|
||||||
if (state.success == true) {
|
if (state.success == true) {
|
||||||
BlocProvider.of<SceneBloc>(context).add(LoadScenes(
|
BlocProvider.of<SceneBloc>(context).add(LoadScenes(
|
||||||
HomeCubit.getInstance().selectedSpace!.id, HomeCubit.getInstance().selectedSpace!,
|
HomeCubit.getInstance().selectedSpace!.id,
|
||||||
|
HomeCubit.getInstance().selectedSpace!,
|
||||||
showInDevice: pageType));
|
showInDevice: pageType));
|
||||||
BlocProvider.of<SceneBloc>(context)
|
BlocProvider.of<SceneBloc>(context).add(LoadAutomation(
|
||||||
.add(LoadAutomation(HomeCubit.getInstance().selectedSpace!.id));
|
HomeCubit.getInstance().selectedSpace!.id,
|
||||||
context.read<SmartSceneSelectBloc>().add(const SmartSceneClearEvent());
|
HomeCubit.getInstance().selectedSpace!.community.uuid));
|
||||||
|
context
|
||||||
|
.read<SmartSceneSelectBloc>()
|
||||||
|
.add(const SmartSceneClearEvent());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return BlocListener<SceneBloc, SceneState>(
|
return BlocListener<SceneBloc, SceneState>(
|
||||||
listener: (context, state) {
|
listener: (context, state) {
|
||||||
if (state is SceneTriggerSuccess) {
|
if (state is SceneTriggerSuccess) {
|
||||||
context.showCustomSnackbar(
|
context.showCustomSnackbar(
|
||||||
message: 'Scene ${state.sceneName} triggered successfully!');
|
message:
|
||||||
|
'Scene ${state.sceneName} triggered successfully!');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: HomeCubit.getInstance().spaces?.isEmpty ?? true
|
child: HomeCubit.getInstance().spaces.isEmpty
|
||||||
? const CreateUnitWidget()
|
? const CreateUnitWidget()
|
||||||
: Column(
|
: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
@ -114,25 +123,30 @@ class SceneView extends StatelessWidget {
|
|||||||
child: ListView(
|
child: ListView(
|
||||||
children: [
|
children: [
|
||||||
Theme(
|
Theme(
|
||||||
data: ThemeData()
|
data: ThemeData().copyWith(
|
||||||
.copyWith(dividerColor: Colors.transparent),
|
dividerColor: Colors.transparent),
|
||||||
child: ExpansionTile(
|
child: ExpansionTile(
|
||||||
tilePadding: const EdgeInsets.symmetric(horizontal: 6),
|
tilePadding:
|
||||||
|
const EdgeInsets.symmetric(
|
||||||
|
horizontal: 6),
|
||||||
initiallyExpanded: true,
|
initiallyExpanded: true,
|
||||||
iconColor: ColorsManager.grayColor,
|
iconColor: ColorsManager.grayColor,
|
||||||
title: const BodyMedium(text: 'Tap to run routines'),
|
title: const BodyMedium(
|
||||||
|
text: 'Tap to run routines'),
|
||||||
children: [
|
children: [
|
||||||
scenes.isNotEmpty
|
scenes.isNotEmpty
|
||||||
? SceneGrid(
|
? SceneGrid(
|
||||||
scenes: scenes,
|
scenes: scenes,
|
||||||
loadingSceneId: state.loadingSceneId,
|
loadingSceneId:
|
||||||
|
state.loadingSceneId,
|
||||||
disablePlayButton: false,
|
disablePlayButton: false,
|
||||||
loadingStates:
|
loadingStates: state
|
||||||
state.loadingStates, // Add this line
|
.loadingStates, // Add this line
|
||||||
)
|
)
|
||||||
: const Center(
|
: const Center(
|
||||||
child: BodyMedium(
|
child: BodyMedium(
|
||||||
text: 'No scenes have been added yet',
|
text:
|
||||||
|
'No scenes have been added yet',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
@ -142,25 +156,30 @@ class SceneView extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
Theme(
|
Theme(
|
||||||
data: ThemeData()
|
data: ThemeData().copyWith(
|
||||||
.copyWith(dividerColor: Colors.transparent),
|
dividerColor: Colors.transparent),
|
||||||
child: ExpansionTile(
|
child: ExpansionTile(
|
||||||
initiallyExpanded: true,
|
initiallyExpanded: true,
|
||||||
iconColor: ColorsManager.grayColor,
|
iconColor: ColorsManager.grayColor,
|
||||||
tilePadding: const EdgeInsets.symmetric(horizontal: 6),
|
tilePadding:
|
||||||
title: const BodyMedium(text: 'Automation'),
|
const EdgeInsets.symmetric(
|
||||||
|
horizontal: 6),
|
||||||
|
title: const BodyMedium(
|
||||||
|
text: 'Automation'),
|
||||||
children: [
|
children: [
|
||||||
automationList.isNotEmpty
|
automationList.isNotEmpty
|
||||||
? SceneGrid(
|
? SceneGrid(
|
||||||
scenes: automationList,
|
scenes: automationList,
|
||||||
loadingSceneId: state.loadingSceneId,
|
loadingSceneId:
|
||||||
|
state.loadingSceneId,
|
||||||
disablePlayButton: true,
|
disablePlayButton: true,
|
||||||
loadingStates:
|
loadingStates: state
|
||||||
state.loadingStates, // Add this line
|
.loadingStates, // Add this line
|
||||||
)
|
)
|
||||||
: const Center(
|
: const Center(
|
||||||
child: BodyMedium(
|
child: BodyMedium(
|
||||||
text: 'No automations have been added yet',
|
text:
|
||||||
|
'No automations have been added yet',
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
|
@ -25,7 +25,7 @@ class DeleteRoutineButton extends StatelessWidget {
|
|||||||
BlocProvider.of<SceneBloc>(context).add(LoadScenes(
|
BlocProvider.of<SceneBloc>(context).add(LoadScenes(
|
||||||
HomeCubit.getInstance().selectedSpace!.id, HomeCubit.getInstance().selectedSpace!));
|
HomeCubit.getInstance().selectedSpace!.id, HomeCubit.getInstance().selectedSpace!));
|
||||||
BlocProvider.of<SceneBloc>(context)
|
BlocProvider.of<SceneBloc>(context)
|
||||||
.add(LoadAutomation(HomeCubit.getInstance().selectedSpace!.id));
|
.add(LoadAutomation(HomeCubit.getInstance().selectedSpace!.id,HomeCubit.getInstance().selectedSpace!.community.uuid));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -132,6 +132,10 @@ class SceneItem extends StatelessWidget {
|
|||||||
spaceUuid: HomeCubit.getInstance()
|
spaceUuid: HomeCubit.getInstance()
|
||||||
.selectedSpace!
|
.selectedSpace!
|
||||||
.id),
|
.id),
|
||||||
|
communityId: HomeCubit.getInstance()
|
||||||
|
.selectedSpace!
|
||||||
|
.community
|
||||||
|
.uuid,
|
||||||
automationId: scene.id));
|
automationId: scene.id));
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
@ -22,7 +22,7 @@ class SmartEnableAutomation extends StatelessWidget {
|
|||||||
child: BlocBuilder<SceneBloc, SceneState>(
|
child: BlocBuilder<SceneBloc, SceneState>(
|
||||||
bloc: context.read<SceneBloc>()
|
bloc: context.read<SceneBloc>()
|
||||||
..add(
|
..add(
|
||||||
LoadAutomation(HomeCubit.getInstance().selectedSpace?.id ?? '')),
|
LoadAutomation(HomeCubit.getInstance().selectedSpace?.id ?? '',HomeCubit.getInstance().selectedSpace?.community.uuid ?? '')),
|
||||||
builder: (context, state) {
|
builder: (context, state) {
|
||||||
if (state is SceneLoading) {
|
if (state is SceneLoading) {
|
||||||
return const Align(
|
return const Align(
|
||||||
|
@ -153,7 +153,7 @@ abstract class ApiEndpoints {
|
|||||||
static const String getScene = '/scene/tap-to-run/{sceneId}';
|
static const String getScene = '/scene/tap-to-run/{sceneId}';
|
||||||
static const String getIconScene = '/scene/icon';
|
static const String getIconScene = '/scene/icon';
|
||||||
|
|
||||||
static const String getUnitAutomation = '/automation/{unitUuid}';
|
static const String getUnitAutomation = '/projects/{projectId}/communities/{communityId}/spaces/{unitUuid}/automations';
|
||||||
|
|
||||||
static const String getAutomationDetails =
|
static const String getAutomationDetails =
|
||||||
'/automation/details/{automationId}';
|
'/automation/details/{automationId}';
|
||||||
|
@ -78,10 +78,17 @@ class SceneApi {
|
|||||||
|
|
||||||
//getAutomation
|
//getAutomation
|
||||||
|
|
||||||
static Future<List<ScenesModel>> getAutomationByUnitId(String unitId) async {
|
static Future<List<ScenesModel>> getAutomationByUnitId(
|
||||||
|
String unitId,
|
||||||
|
String communityId,
|
||||||
|
String projectId,
|
||||||
|
) async {
|
||||||
try {
|
try {
|
||||||
final response = await _httpService.get(
|
final response = await _httpService.get(
|
||||||
path: ApiEndpoints.getUnitAutomation.replaceAll('{unitUuid}', unitId),
|
path: ApiEndpoints.getUnitAutomation
|
||||||
|
.replaceAll('{unitUuid}', unitId)
|
||||||
|
.replaceAll('{communityId}', communityId)
|
||||||
|
.replaceAll('{projectId}', projectId),
|
||||||
showServerMessage: false,
|
showServerMessage: false,
|
||||||
expectedResponseModel: (json) {
|
expectedResponseModel: (json) {
|
||||||
List<ScenesModel> scenes = [];
|
List<ScenesModel> scenes = [];
|
||||||
|
Reference in New Issue
Block a user