4 and 6 scene

This commit is contained in:
mohammad
2024-11-24 10:48:25 +03:00
parent 9f02ce8a31
commit 3d17c588c5
15 changed files with 210 additions and 164 deletions

View File

@ -34,7 +34,7 @@ class SixSceneBloc extends Bloc<SixSceneEvent, SixSceneState> {
on<SearchScenesEvent>(searchScene); on<SearchScenesEvent>(searchScene);
on<SaveSelectionEvent>(_onSaveSelection); on<SaveSelectionEvent>(_onSaveSelection);
on<SelectOptionEvent>(_onOptionSelected); on<SelectOptionEvent>(_onOptionSelected);
on<AddDeviceToGroup>(_addDeviceToGroup); // Register handler here on<AddDeviceToGroup>(_addDeviceToGroup);
on<RemoveDeviceFromGroup>(_removeDeviceFromGroup); on<RemoveDeviceFromGroup>(_removeDeviceFromGroup);
on<SexSceneSwitchInitial>(_fetchFourSceneSwitches); on<SexSceneSwitchInitial>(_fetchFourSceneSwitches);
on<AssignDeviceScene>(assignScene); on<AssignDeviceScene>(assignScene);
@ -45,6 +45,7 @@ class SixSceneBloc extends Bloc<SixSceneEvent, SixSceneState> {
on<AssignRoomEvent>(_assignDevice); on<AssignRoomEvent>(_assignDevice);
on<FetchRoomsEvent>(_fetchRoomsAndDevices); on<FetchRoomsEvent>(_fetchRoomsAndDevices);
on<SixSceneInitialQuestion>(_onSixSceneInitial); on<SixSceneInitialQuestion>(_onSixSceneInitial);
on<DeleteDeviceEvent>(deleteDevice);
} }
final TextEditingController nameController = final TextEditingController nameController =
@ -138,6 +139,17 @@ class SixSceneBloc extends Bloc<SixSceneEvent, SixSceneState> {
} }
} }
deleteDevice(DeleteDeviceEvent event, Emitter<SixSceneState> emit) async {
try {
emit(SixSceneLoadingState());
var response = await DevicesAPI.resetDevise(devicesUuid: sixSceneId);
add(const SixSceneInitialInfo());
CustomSnackBar.displaySnackBar('Reset Successfully');
} catch (e) {
emit(SixSceneFailedState(errorMessage: e.toString()));
}
}
Future<void> saveName( Future<void> saveName(
SaveNameEvent event, Emitter<SixSceneState> emit) async { SaveNameEvent event, Emitter<SixSceneState> emit) async {
if (_validateInputs()) return; if (_validateInputs()) return;
@ -358,11 +370,14 @@ class SixSceneBloc extends Bloc<SixSceneEvent, SixSceneState> {
sixSceneId); sixSceneId);
deviceStatus.switch_backlight = switchStatus; deviceStatus.switch_backlight = switchStatus;
add(const SixSceneInitial()); Future.delayed(const Duration(milliseconds: 250), () {
add(const SexSceneSwitchInitial()); add(const SexSceneSwitchInitial());
});
Future.delayed(const Duration(milliseconds: 250), () {
emit(ChangeSwitchState(isEnable: switchStatus)); emit(ChangeSwitchState(isEnable: switchStatus));
emit(UpdateState(device: deviceStatus)); emit(UpdateState(device: deviceStatus));
});
} catch (_) { } catch (_) {
emit(const SixSceneFailedState(errorMessage: 'Something went wrong')); emit(const SixSceneFailedState(errorMessage: 'Something went wrong'));
} }

View File

@ -116,6 +116,7 @@ class TickTimer extends SixSceneEvent {
class StopTimer extends SixSceneEvent {} class StopTimer extends SixSceneEvent {}
class OnClose extends SixSceneEvent {} class OnClose extends SixSceneEvent {}
class DeleteDeviceEvent extends SixSceneEvent {}
class ChangeNameEvent extends SixSceneEvent { class ChangeNameEvent extends SixSceneEvent {
final bool? value; final bool? value;

View File

@ -42,11 +42,11 @@ class FourSceneBloc extends Bloc<FourSceneEvent, FourSceneState> {
on<RemoveDeviceFromGroup>(_removeDeviceFromGroup); on<RemoveDeviceFromGroup>(_removeDeviceFromGroup);
on<FourSceneInitialQuestion>(_onFourSceneInitial); on<FourSceneInitialQuestion>(_onFourSceneInitial);
on<FetchDeviceScene>(_fetchDeviceScene); on<FetchDeviceScene>(_fetchDeviceScene);
on<ControlDeviceScene>(_controlDevice);
on<FourSceneSwitchInitial>(_fetchFourSceneSwitches); on<FourSceneSwitchInitial>(_fetchFourSceneSwitches);
on<AssignDeviceScene>(assignScene); on<AssignDeviceScene>(assignScene);
on<GetSceneBySwitchName>(getSceneByName); on<GetSceneBySwitchName>(getSceneByName);
on<SelectSceneEvent>(_selectScene); on<SelectSceneEvent>(_selectScene);
on<DeleteDeviceEvent>(deleteDevice);
} }
final TextEditingController nameController = final TextEditingController nameController =
@ -190,6 +190,18 @@ class FourSceneBloc extends Bloc<FourSceneEvent, FourSceneState> {
} }
} }
deleteDevice(DeleteDeviceEvent event, Emitter<FourSceneState> emit) async {
try {
emit(FourSceneLoadingState());
var response = await DevicesAPI.resetDevise(devicesUuid: fourSceneId);
CustomSnackBar.displaySnackBar('Reset Successfully');
emit(UpdateState(device: deviceStatus));
} catch (e) {
emit(FourSceneFailedState(errorMessage: e.toString()));
return;
}
}
void _fetchDeviceStatus( void _fetchDeviceStatus(
FourSceneInitial event, Emitter<FourSceneState> emit) async { FourSceneInitial event, Emitter<FourSceneState> emit) async {
emit(FourSceneLoadingState()); emit(FourSceneLoadingState());
@ -246,26 +258,26 @@ class FourSceneBloc extends Bloc<FourSceneEvent, FourSceneState> {
} }
} }
void _controlDevice( // void _controlDevice(
ControlDeviceScene event, Emitter<FourSceneState> emit) async { // ControlDeviceScene event, Emitter<FourSceneState> emit) async {
emit(FourSceneLoadingState()); // emit(FourSceneLoadingState());
try { // try {
deviceStatus.switch_backlight = !event.backLight!; // deviceStatus.switch_backlight = !event.backLight!;
emit(UpdateState(device: deviceStatus)); // emit(UpdateState(device: deviceStatus));
final response = await DevicesAPI.controlDevice( // final response = await DevicesAPI.controlDevice(
DeviceControlModel( // DeviceControlModel(
deviceId: fourSceneId, // deviceId: fourSceneId,
code: 'switch_backlight', // code: 'switch_backlight',
value: !event.backLight!), // value: !event.backLight!),
fourSceneId); // fourSceneId);
if (!response['success']) { // if (!response['success']) {
// add(InitialEvent(groupScreen: oneTouchGroup)); // // add(InitialEvent(groupScreen: oneTouchGroup));
} // }
} catch (_) { // } catch (_) {
// add(InitialEvent(groupScreen: oneTouchGroup)); // // add(InitialEvent(groupScreen: oneTouchGroup));
} // }
} // }
Future fetchDeviceInfo( Future fetchDeviceInfo(
FourSceneInitialInfo event, Emitter<FourSceneState> emit) async { FourSceneInitialInfo event, Emitter<FourSceneState> emit) async {
@ -394,9 +406,13 @@ class FourSceneBloc extends Bloc<FourSceneEvent, FourSceneState> {
value: switchStatus), value: switchStatus),
fourSceneId); fourSceneId);
deviceStatus.switch_backlight = switchStatus; deviceStatus.switch_backlight = switchStatus;
add(const FourSceneInitial()); Future.delayed(const Duration(milliseconds: 200), () {
add(const FourSceneSwitchInitial());
});
Future.delayed(const Duration(milliseconds: 200), () {
emit(ChangeSwitchState(isEnable: switchStatus)); emit(ChangeSwitchState(isEnable: switchStatus));
emit(UpdateState(device: deviceStatus));
});
} catch (_) { } catch (_) {
add(const FourSceneInitial()); add(const FourSceneInitial());
} }

View File

@ -108,6 +108,7 @@ class TickTimer extends FourSceneEvent {
class StopTimer extends FourSceneEvent {} class StopTimer extends FourSceneEvent {}
class OnClose extends FourSceneEvent {} class OnClose extends FourSceneEvent {}
class DeleteDeviceEvent extends FourSceneEvent {}
class ChangeNameEvent extends FourSceneEvent { class ChangeNameEvent extends FourSceneEvent {
final bool? value; final bool? value;
@ -206,10 +207,6 @@ class AssignRoomEvent extends FourSceneEvent {
class FetchDeviceScene extends FourSceneEvent {} class FetchDeviceScene extends FourSceneEvent {}
class ControlDeviceScene extends FourSceneEvent {
final bool? backLight;
const ControlDeviceScene({this.backLight});
}
class FourSceneSwitchInitial extends FourSceneEvent { class FourSceneSwitchInitial extends FourSceneEvent {
const FourSceneSwitchInitial(); const FourSceneSwitchInitial();

View File

@ -89,8 +89,9 @@ class FaqSixScenePage extends StatelessWidget {
fontSize: 12, fontSize: 12,
fontColor: ColorsManager.grayColor, fontColor: ColorsManager.grayColor,
), ),
Expanded( displayedQuestions.isEmpty
child: DefaultContainer( ? const SizedBox()
: DefaultContainer(
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
itemCount: displayedQuestions.length, itemCount: displayedQuestions.length,
@ -108,7 +109,8 @@ class FaqSixScenePage extends StatelessWidget {
child: SizedBox( child: SizedBox(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
@ -139,7 +141,6 @@ class FaqSixScenePage extends StatelessWidget {
); );
}, },
)), )),
),
], ],
), ),
); );

View File

@ -9,7 +9,6 @@ import 'package:syncrow_app/features/devices/model/device_model.dart';
import 'package:syncrow_app/features/devices/model/six_scene_model.dart'; import 'package:syncrow_app/features/devices/model/six_scene_model.dart';
import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/faq_six_scene_page.dart'; import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/faq_six_scene_page.dart';
import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/share_six_scene_page.dart'; import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/share_six_scene_page.dart';
import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/six_scene_create_group.dart';
import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/six_scene_delete_dialog.dart'; import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/six_scene_delete_dialog.dart';
import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/six_scene_info_page.dart'; import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/six_scene_info_page.dart';
import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/six_scene_profile_page.dart'; import 'package:syncrow_app/features/devices/view/widgets/6_scene_switch/6_scene_setting/six_scene_profile_page.dart';
@ -382,17 +381,8 @@ class SixSceneSettings extends StatelessWidget {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
confirmTab: () { confirmTab: () {
// context _bloc.add(
// .read< DeleteDeviceEvent());
// CreateSceneBloc>()
// .add(DeleteSceneEvent(
// sceneId: sceneId,
// unitUuid: HomeCubit
// .getInstance()
// .selectedSpace!
// .id!,
// ));
Navigator.of(context).pop();
}, },
); );
}, },

View File

@ -100,12 +100,15 @@ class _SelectSwitchDialogState extends State<SelectSwitchDialog> {
], ],
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
const Center( const Padding(
padding: EdgeInsets.only(bottom: 15, left: 5, right: 5, top: 10),
child: Center(
child: Text( child: Text(
'Please select one of the switches available to continue', 'Please select one of the switches available to continue',
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
), ),
),
Row( Row(
children: [ children: [
Expanded( Expanded(

View File

@ -198,6 +198,13 @@ class SixSceneScreen extends StatelessWidget {
); );
}, },
); );
if (value == true) {
_bloc.add(const SixSceneInitial());
_bloc.add(
const SixSceneInitialInfo());
_bloc.add(
const SexSceneSwitchInitial());
}
}, },
child: Column( child: Column(
crossAxisAlignment: crossAxisAlignment:

View File

@ -89,8 +89,9 @@ class FaqFourScenePage extends StatelessWidget {
fontSize: 12, fontSize: 12,
fontColor: ColorsManager.grayColor, fontColor: ColorsManager.grayColor,
), ),
Expanded( displayedQuestions.isEmpty
child: DefaultContainer( ? const SizedBox()
: DefaultContainer(
child: ListView.builder( child: ListView.builder(
shrinkWrap: true, shrinkWrap: true,
itemCount: displayedQuestions.length, itemCount: displayedQuestions.length,
@ -100,7 +101,8 @@ class FaqFourScenePage extends StatelessWidget {
onTap: () { onTap: () {
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (context) => QuestionPageFourScene( builder: (context) =>
QuestionPageFourScene(
questionModel: faq, questionModel: faq,
)), )),
); );
@ -108,7 +110,8 @@ class FaqFourScenePage extends StatelessWidget {
child: SizedBox( child: SizedBox(
child: Column( child: Column(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
children: [ children: [
@ -139,7 +142,6 @@ class FaqFourScenePage extends StatelessWidget {
); );
}, },
)), )),
),
], ],
), ),
); );

View File

@ -395,17 +395,8 @@ class FourSceneSettings extends StatelessWidget {
Navigator.of(context).pop(); Navigator.of(context).pop();
}, },
confirmTab: () { confirmTab: () {
// context _bloc.add(
// .read< DeleteDeviceEvent());
// CreateSceneBloc>()
// .add(DeleteSceneEvent(
// sceneId: sceneId,
// unitUuid: HomeCubit
// .getInstance()
// .selectedSpace!
// .id!,
// ));
Navigator.of(context).pop();
}, },
); );
}, },

View File

@ -84,12 +84,15 @@ class _FourSelectSwitchDialogState extends State<FourSelectSwitchDialog> {
], ],
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
const Center( const Padding(
padding: EdgeInsets.only(bottom: 15, left: 5, right: 5, top: 10),
child: Center(
child: Text( child: Text(
'Please select one of the switches available to continue', 'Please select one of the switches available to continue',
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
), ),
),
Row( Row(
children: [ children: [
Expanded( Expanded(

View File

@ -1118,6 +1118,4 @@ class Assets {
static const String minusIcon = "assets/icons/minus_icon.svg"; static const String minusIcon = "assets/icons/minus_icon.svg";
static const String addDevicesIcon = "assets/icons/add_devices_icon.svg"; static const String addDevicesIcon = "assets/icons/add_devices_icon.svg";
static const String fourSceneIcon = "assets/icons/four_scene_icon.svg"; static const String fourSceneIcon = "assets/icons/four_scene_icon.svg";
//powerClampIcon
} }

View File

@ -217,4 +217,8 @@ abstract class ApiEndpoints {
static const String fourSceneByName = static const String fourSceneByName =
'/device/{deviceUuid}/scenes?switchName={switchName}'; '/device/{deviceUuid}/scenes?switchName={switchName}';
static const String resetDevice =
'/factory/reset/{deviceUuid}';
} }

View File

@ -513,4 +513,20 @@ class DevicesAPI {
); );
return response; return response;
} }
static Future resetDevise({
String? devicesUuid,
}) async {
final response = await _httpService.post(
path: ApiEndpoints.resetDevice.replaceAll('{deviceUuid}', devicesUuid!),
showServerMessage: false,
body: {
"devicesUuid": [devicesUuid]
},
expectedResponseModel: (json) {
return json;
},
);
return response;
}
} }

View File

@ -60,6 +60,8 @@ class SpacesAPI {
} }
} }
//factory/reset/{deviceUuid}
static Future<String> generateInvitationCode( static Future<String> generateInvitationCode(
String unitId, String communityId) async { String unitId, String communityId) async {
final response = await _httpService.get( final response = await _httpService.get(