mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2026-10-25 23:37:55 +00:00
finished get scene details
This commit is contained in:
@@ -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});
|
||||
|
||||
Reference in New Issue
Block a user