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<SaveSelectionEvent>(_onSaveSelection);
on<SelectOptionEvent>(_onOptionSelected);
on<AddDeviceToGroup>(_addDeviceToGroup); // Register handler here
on<AddDeviceToGroup>(_addDeviceToGroup);
on<RemoveDeviceFromGroup>(_removeDeviceFromGroup);
on<SexSceneSwitchInitial>(_fetchFourSceneSwitches);
on<AssignDeviceScene>(assignScene);
@ -45,6 +45,7 @@ class SixSceneBloc extends Bloc<SixSceneEvent, SixSceneState> {
on<AssignRoomEvent>(_assignDevice);
on<FetchRoomsEvent>(_fetchRoomsAndDevices);
on<SixSceneInitialQuestion>(_onSixSceneInitial);
on<DeleteDeviceEvent>(deleteDevice);
}
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(
SaveNameEvent event, Emitter<SixSceneState> emit) async {
if (_validateInputs()) return;
@ -358,11 +370,14 @@ class SixSceneBloc extends Bloc<SixSceneEvent, SixSceneState> {
sixSceneId);
deviceStatus.switch_backlight = switchStatus;
add(const SixSceneInitial());
add(const SexSceneSwitchInitial());
Future.delayed(const Duration(milliseconds: 250), () {
add(const SexSceneSwitchInitial());
});
emit(ChangeSwitchState(isEnable: switchStatus));
emit(UpdateState(device: deviceStatus));
Future.delayed(const Duration(milliseconds: 250), () {
emit(ChangeSwitchState(isEnable: switchStatus));
emit(UpdateState(device: deviceStatus));
});
} catch (_) {
emit(const SixSceneFailedState(errorMessage: 'Something went wrong'));
}

View File

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

View File

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

View File

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

View File

@ -89,57 +89,58 @@ class FaqSixScenePage extends StatelessWidget {
fontSize: 12,
fontColor: ColorsManager.grayColor,
),
Expanded(
child: DefaultContainer(
child: ListView.builder(
shrinkWrap: true,
itemCount: displayedQuestions.length,
itemBuilder: (context, index) {
final faq = displayedQuestions[index];
return InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => QuestionPage(
questionModel: faq,
)),
displayedQuestions.isEmpty
? const SizedBox()
: DefaultContainer(
child: ListView.builder(
shrinkWrap: true,
itemCount: displayedQuestions.length,
itemBuilder: (context, index) {
final faq = displayedQuestions[index];
return InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => QuestionPage(
questionModel: faq,
)),
);
},
child: SizedBox(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Expanded(
child: BodyMedium(
fontSize: 14,
fontWeight: FontWeight.w400,
text: faq.question,
),
),
const Icon(
Icons.keyboard_arrow_right,
color: ColorsManager.textGray,
),
],
),
),
const Divider(
color: ColorsManager.dividerColor,
),
],
),
),
);
},
child: SizedBox(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Expanded(
child: BodyMedium(
fontSize: 14,
fontWeight: FontWeight.w400,
text: faq.question,
),
),
const Icon(
Icons.keyboard_arrow_right,
color: ColorsManager.textGray,
),
],
),
),
const Divider(
color: ColorsManager.dividerColor,
),
],
),
),
);
},
)),
),
)),
],
),
);

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/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/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_info_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();
},
confirmTab: () {
// context
// .read<
// CreateSceneBloc>()
// .add(DeleteSceneEvent(
// sceneId: sceneId,
// unitUuid: HomeCubit
// .getInstance()
// .selectedSpace!
// .id!,
// ));
Navigator.of(context).pop();
_bloc.add(
DeleteDeviceEvent());
},
);
},

View File

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

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(
crossAxisAlignment:

View File

@ -89,57 +89,59 @@ class FaqFourScenePage extends StatelessWidget {
fontSize: 12,
fontColor: ColorsManager.grayColor,
),
Expanded(
child: DefaultContainer(
child: ListView.builder(
shrinkWrap: true,
itemCount: displayedQuestions.length,
itemBuilder: (context, index) {
final faq = displayedQuestions[index];
return InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => QuestionPageFourScene(
questionModel: faq,
)),
displayedQuestions.isEmpty
? const SizedBox()
: DefaultContainer(
child: ListView.builder(
shrinkWrap: true,
itemCount: displayedQuestions.length,
itemBuilder: (context, index) {
final faq = displayedQuestions[index];
return InkWell(
onTap: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) =>
QuestionPageFourScene(
questionModel: faq,
)),
);
},
child: SizedBox(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Expanded(
child: BodyMedium(
fontSize: 14,
fontWeight: FontWeight.w400,
text: faq.question,
),
),
const Icon(
Icons.keyboard_arrow_right,
color: ColorsManager.textGray,
),
],
),
),
const Divider(
color: ColorsManager.dividerColor,
),
],
),
),
);
},
child: SizedBox(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: Row(
children: [
Expanded(
child: BodyMedium(
fontSize: 14,
fontWeight: FontWeight.w400,
text: faq.question,
),
),
const Icon(
Icons.keyboard_arrow_right,
color: ColorsManager.textGray,
),
],
),
),
const Divider(
color: ColorsManager.dividerColor,
),
],
),
),
);
},
)),
),
)),
],
),
);

View File

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

View File

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

View File

@ -1118,6 +1118,4 @@ class Assets {
static const String minusIcon = "assets/icons/minus_icon.svg";
static const String addDevicesIcon = "assets/icons/add_devices_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 =
'/device/{deviceUuid}/scenes?switchName={switchName}';
static const String resetDevice =
'/factory/reset/{deviceUuid}';
}

View File

@ -513,4 +513,20 @@ class DevicesAPI {
);
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(
String unitId, String communityId) async {
final response = await _httpService.get(