finished get scene details

This commit is contained in:
ashrafzarkanisala
2024-06-30 01:54:08 +03:00
parent 043e8c1e2d
commit 6584b894c4
17 changed files with 1428 additions and 520 deletions
@@ -3,6 +3,7 @@ import 'dart:async';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
import 'package:syncrow_app/features/devices/model/device_control_model.dart';
import 'package:syncrow_app/features/scene/helper/scene_operations_data_helper.dart';
import 'package:syncrow_app/features/scene/model/create_scene_model.dart';
import 'package:syncrow_app/features/scene/model/scene_static_function.dart';
import 'package:syncrow_app/services/api/scene_api.dart';
@@ -10,13 +11,15 @@ import 'package:syncrow_app/services/api/scene_api.dart';
part 'create_scene_event.dart';
part 'create_scene_state.dart';
class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState> {
class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState>
with SceneOperationsDataHelper {
CreateSceneBloc() : super(CreateSceneInitial()) {
on<CreateSceneWithTasksEvent>(_createSceneWithTasks);
on<AddTaskEvent>(_onAddSceneTask);
on<SelectedValueEvent>(_selectedValue);
on<RemoveTaskEvent>(_removeTaskById);
on<ClearTaskListEvent>(_clearTaskList);
on<FetchSceneTasks>(_fetchSceneTasks);
}
List<SceneStaticFunction> tasksList = [];
@@ -31,6 +34,7 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState> {
icon: event.icon,
code: event.deviceControlModel.code ?? '',
deviceId: event.deviceId,
functionValue: event.deviceControlModel.value,
operationalValues: [
SceneOperationalValue(
value: event.deviceControlModel.value,
@@ -84,4 +88,22 @@ class CreateSceneBloc extends Bloc<CreateSceneEvent, CreateSceneState> {
tasksList.clear();
emit(AddSceneTask(tasksList: tasksList));
}
FutureOr<void> _fetchSceneTasks(
FetchSceneTasks event, Emitter<CreateSceneState> emit) async {
emit(CreateSceneLoading());
try {
final response = await SceneApi.getSceneDetails(event.sceneId);
if (response.id.isNotEmpty) {
tasksList = getTaskListFunctionsFromApi(
actions: response.actions, deviceId: response.id);
emit(AddSceneTask(tasksList: tasksList));
} else {
emit(const CreateSceneError(message: 'Something went wrong'));
}
} catch (e) {
emit(CreateSceneError(message: e.toString()));
}
}
}
@@ -59,3 +59,11 @@ class ClearTaskListEvent extends CreateSceneEvent {
@override
List<Object> get props => [];
}
class FetchSceneTasks extends CreateSceneEvent {
final String sceneId;
const FetchSceneTasks({required this.sceneId});
@override
List<Object> get props => [];
}
@@ -3,7 +3,8 @@ import 'dart:async';
import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/scene/bloc/scene_bloc/scene_event.dart';
import 'package:syncrow_app/features/scene/model/scene_model.dart';
import 'package:syncrow_app/features/scene/model/create_scene_model.dart';
import 'package:syncrow_app/features/scene/model/scenes_model.dart';
import 'package:syncrow_app/services/api/scene_api.dart';
part 'scene_state.dart';
@@ -12,7 +12,7 @@ class SceneInitial extends SceneState {}
class SceneLoading extends SceneState {}
class SceneLoaded extends SceneState {
final List<SceneModel> scenes;
final List<ScenesModel> scenes;
final String? loadingSceneId;
const SceneLoaded(this.scenes, {this.loadingSceneId});