Compare commits

..

3 Commits

Author SHA1 Message Date
dd5fe10a21 removed print 2024-12-09 10:03:40 +04:00
4055265b0a for create 2024-12-09 10:02:57 +04:00
aff7ceeac4 added condition to check parent name 2024-12-09 10:02:20 +04:00
36 changed files with 547 additions and 517 deletions

View File

@ -11,7 +11,7 @@ import 'package:syncrow_web/pages/common/filter/filter_widget.dart';
import 'package:syncrow_web/pages/common/text_field/custom_web_textfield.dart'; import 'package:syncrow_web/pages/common/text_field/custom_web_textfield.dart';
import 'package:syncrow_web/pages/device_managment/shared/navigate_home_grid_view.dart'; import 'package:syncrow_web/pages/device_managment/shared/navigate_home_grid_view.dart';
import 'package:syncrow_web/pages/visitor_password/view/visitor_password_dialog.dart'; import 'package:syncrow_web/pages/visitor_password/view/visitor_password_dialog.dart';
// import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/app_enum.dart'; import 'package:syncrow_web/utils/constants/app_enum.dart';
import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart';
@ -27,7 +27,8 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
final isLargeScreen = isLargeScreenSize(context); final isLargeScreen = isLargeScreenSize(context);
final isSmallScreen = isSmallScreenSize(context); final isSmallScreen = isSmallScreenSize(context);
final isHalfMediumScreen = isHafMediumScreenSize(context); final isHalfMediumScreen = isHafMediumScreenSize(context);
final padding = isLargeScreen ? const EdgeInsets.all(30) : const EdgeInsets.all(15); final padding =
isLargeScreen ? const EdgeInsets.all(30) : const EdgeInsets.all(15);
return WebScaffold( return WebScaffold(
enableMenuSidebar: false, enableMenuSidebar: false,
@ -39,7 +40,8 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
), ),
rightBody: const NavigateHomeGridView(), rightBody: const NavigateHomeGridView(),
scaffoldBody: BlocProvider( scaffoldBody: BlocProvider(
create: (BuildContext context) => AccessBloc()..add(FetchTableData()), create: (BuildContext context) =>
AccessBloc()..add(FetchTableData()),
child: BlocConsumer<AccessBloc, AccessState>( child: BlocConsumer<AccessBloc, AccessState>(
listener: (context, state) {}, listener: (context, state) {},
builder: (context, state) { builder: (context, state) {
@ -93,11 +95,14 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
return [ return [
item.passwordName, item.passwordName,
item.passwordType.value, item.passwordType.value,
accessBloc.timestampToDate(item.effectiveTime), accessBloc
accessBloc.timestampToDate(item.invalidTime), .timestampToDate(item.effectiveTime),
accessBloc
.timestampToDate(item.invalidTime),
item.deviceName.toString(), item.deviceName.toString(),
item.authorizerEmail.toString(), item.authorizerEmail.toString(),
accessBloc.timestampToDate(item.invalidTime), accessBloc
.timestampToDate(item.invalidTime),
item.passwordStatus.value, item.passwordStatus.value,
]; ];
}).toList(), }).toList(),
@ -108,7 +113,8 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
}))); })));
} }
Wrap _buildVisitorAdminPasswords(BuildContext context, AccessBloc accessBloc) { Wrap _buildVisitorAdminPasswords(
BuildContext context, AccessBloc accessBloc) {
return Wrap( return Wrap(
spacing: 10, spacing: 10,
runSpacing: 10, runSpacing: 10,
@ -134,22 +140,23 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
borderRadius: 8, borderRadius: 8,
child: Text( child: Text(
'Create Visitor Password ', 'Create Visitor Password ',
style: context.textTheme.titleSmall!.copyWith(color: Colors.white, fontSize: 12), style: context.textTheme.titleSmall!
.copyWith(color: Colors.white, fontSize: 12),
)),
),
Container(
width: 133,
height: 42,
decoration: containerDecoration,
child: DefaultButton(
borderRadius: 8,
backgroundColor: ColorsManager.whiteColors,
child: Text(
'Admin Password',
style: context.textTheme.titleSmall!
.copyWith(color: Colors.black, fontSize: 12),
)), )),
), ),
// Container(
// width: 133,
// height: 42,
// decoration: containerDecoration,
// child: DefaultButton(
// borderRadius: 8,
// backgroundColor: ColorsManager.whiteColors,
// child: Text(
// 'Admin Password',
// style: context.textTheme.titleSmall!
// .copyWith(color: Colors.black, fontSize: 12),
// )),
// ),
], ],
); );
} }
@ -172,8 +179,10 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
description: '', description: '',
onSubmitted: (value) { onSubmitted: (value) {
accessBloc.add(FilterDataEvent( accessBloc.add(FilterDataEvent(
emailAuthorizer: accessBloc.emailAuthorizer.text.toLowerCase(), emailAuthorizer:
selectedTabIndex: BlocProvider.of<AccessBloc>(context).selectedIndex, accessBloc.emailAuthorizer.text.toLowerCase(),
selectedTabIndex:
BlocProvider.of<AccessBloc>(context).selectedIndex,
passwordName: accessBloc.passwordName.text.toLowerCase(), passwordName: accessBloc.passwordName.text.toLowerCase(),
startTime: accessBloc.effectiveTimeTimeStamp, startTime: accessBloc.effectiveTimeTimeStamp,
endTime: accessBloc.expirationTimeTimeStamp)); endTime: accessBloc.expirationTimeTimeStamp));
@ -191,8 +200,10 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
description: '', description: '',
onSubmitted: (value) { onSubmitted: (value) {
accessBloc.add(FilterDataEvent( accessBloc.add(FilterDataEvent(
emailAuthorizer: accessBloc.emailAuthorizer.text.toLowerCase(), emailAuthorizer:
selectedTabIndex: BlocProvider.of<AccessBloc>(context).selectedIndex, accessBloc.emailAuthorizer.text.toLowerCase(),
selectedTabIndex:
BlocProvider.of<AccessBloc>(context).selectedIndex,
passwordName: accessBloc.passwordName.text.toLowerCase(), passwordName: accessBloc.passwordName.text.toLowerCase(),
startTime: accessBloc.effectiveTimeTimeStamp, startTime: accessBloc.effectiveTimeTimeStamp,
endTime: accessBloc.expirationTimeTimeStamp)); endTime: accessBloc.expirationTimeTimeStamp));
@ -221,7 +232,8 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
onSearch: () { onSearch: () {
accessBloc.add(FilterDataEvent( accessBloc.add(FilterDataEvent(
emailAuthorizer: accessBloc.emailAuthorizer.text.toLowerCase(), emailAuthorizer: accessBloc.emailAuthorizer.text.toLowerCase(),
selectedTabIndex: BlocProvider.of<AccessBloc>(context).selectedIndex, selectedTabIndex:
BlocProvider.of<AccessBloc>(context).selectedIndex,
passwordName: accessBloc.passwordName.text.toLowerCase(), passwordName: accessBloc.passwordName.text.toLowerCase(),
startTime: accessBloc.effectiveTimeTimeStamp, startTime: accessBloc.effectiveTimeTimeStamp,
endTime: accessBloc.expirationTimeTimeStamp)); endTime: accessBloc.expirationTimeTimeStamp));
@ -249,8 +261,10 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
description: '', description: '',
onSubmitted: (value) { onSubmitted: (value) {
accessBloc.add(FilterDataEvent( accessBloc.add(FilterDataEvent(
emailAuthorizer: accessBloc.emailAuthorizer.text.toLowerCase(), emailAuthorizer:
selectedTabIndex: BlocProvider.of<AccessBloc>(context).selectedIndex, accessBloc.emailAuthorizer.text.toLowerCase(),
selectedTabIndex:
BlocProvider.of<AccessBloc>(context).selectedIndex,
passwordName: accessBloc.passwordName.text.toLowerCase(), passwordName: accessBloc.passwordName.text.toLowerCase(),
startTime: accessBloc.effectiveTimeTimeStamp, startTime: accessBloc.effectiveTimeTimeStamp,
endTime: accessBloc.expirationTimeTimeStamp)); endTime: accessBloc.expirationTimeTimeStamp));
@ -274,7 +288,8 @@ class AccessManagementPage extends StatelessWidget with HelperResponsiveLayout {
onSearch: () { onSearch: () {
accessBloc.add(FilterDataEvent( accessBloc.add(FilterDataEvent(
emailAuthorizer: accessBloc.emailAuthorizer.text.toLowerCase(), emailAuthorizer: accessBloc.emailAuthorizer.text.toLowerCase(),
selectedTabIndex: BlocProvider.of<AccessBloc>(context).selectedIndex, selectedTabIndex:
BlocProvider.of<AccessBloc>(context).selectedIndex,
passwordName: accessBloc.passwordName.text.toLowerCase(), passwordName: accessBloc.passwordName.text.toLowerCase(),
startTime: accessBloc.effectiveTimeTimeStamp, startTime: accessBloc.effectiveTimeTimeStamp,
endTime: accessBloc.expirationTimeTimeStamp)); endTime: accessBloc.expirationTimeTimeStamp));

View File

@ -31,7 +31,8 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
////////////////////////////// forget password ////////////////////////////////// ////////////////////////////// forget password //////////////////////////////////
final TextEditingController forgetEmailController = TextEditingController(); final TextEditingController forgetEmailController = TextEditingController();
final TextEditingController forgetPasswordController = TextEditingController(); final TextEditingController forgetPasswordController =
TextEditingController();
final TextEditingController forgetOtp = TextEditingController(); final TextEditingController forgetOtp = TextEditingController();
final forgetFormKey = GlobalKey<FormState>(); final forgetFormKey = GlobalKey<FormState>();
final forgetEmailKey = GlobalKey<FormState>(); final forgetEmailKey = GlobalKey<FormState>();
@ -48,12 +49,12 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
return; return;
} }
_remainingTime = 1; _remainingTime = 1;
add(UpdateTimerEvent(remainingTime: _remainingTime, isButtonEnabled: false)); add(UpdateTimerEvent(
remainingTime: _remainingTime, isButtonEnabled: false));
try { try {
forgetEmailValidate = ''; forgetEmailValidate = '';
_remainingTime = (await AuthenticationAPI.sendOtp( _remainingTime = (await AuthenticationAPI.sendOtp(
email: forgetEmailController.text, email: forgetEmailController.text, regionUuid: regionUuid))!;
))!;
} on DioException catch (e) { } on DioException catch (e) {
if (e.response!.statusCode == 400) { if (e.response!.statusCode == 400) {
final errorData = e.response!.data; final errorData = e.response!.data;
@ -85,7 +86,8 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
_timer?.cancel(); _timer?.cancel();
add(const UpdateTimerEvent(remainingTime: 0, isButtonEnabled: true)); add(const UpdateTimerEvent(remainingTime: 0, isButtonEnabled: true));
} else { } else {
add(UpdateTimerEvent(remainingTime: _remainingTime, isButtonEnabled: false)); add(UpdateTimerEvent(
remainingTime: _remainingTime, isButtonEnabled: false));
} }
}); });
} }
@ -95,7 +97,8 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
emit(const TimerState(isButtonEnabled: true, remainingTime: 0)); emit(const TimerState(isButtonEnabled: true, remainingTime: 0));
} }
Future<void> changePassword(ChangePasswordEvent event, Emitter<AuthState> emit) async { Future<void> changePassword(
ChangePasswordEvent event, Emitter<AuthState> emit) async {
emit(LoadingForgetState()); emit(LoadingForgetState());
try { try {
var response = await AuthenticationAPI.verifyOtp( var response = await AuthenticationAPI.verifyOtp(
@ -111,7 +114,8 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
} }
} on DioException catch (e) { } on DioException catch (e) {
final errorData = e.response!.data; final errorData = e.response!.data;
String errorMessage = errorData['error']['message'] ?? 'something went wrong'; String errorMessage =
errorData['error']['message'] ?? 'something went wrong';
validate = errorMessage; validate = errorMessage;
emit(AuthInitialState()); emit(AuthInitialState());
} }
@ -125,14 +129,16 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
} }
void _onUpdateTimer(UpdateTimerEvent event, Emitter<AuthState> emit) { void _onUpdateTimer(UpdateTimerEvent event, Emitter<AuthState> emit) {
emit(TimerState(isButtonEnabled: event.isButtonEnabled, remainingTime: event.remainingTime)); emit(TimerState(
isButtonEnabled: event.isButtonEnabled,
remainingTime: event.remainingTime));
} }
///////////////////////////////////// login ///////////////////////////////////// ///////////////////////////////////// login /////////////////////////////////////
final TextEditingController loginEmailController = TextEditingController(); final TextEditingController loginEmailController = TextEditingController();
final TextEditingController loginPasswordController = TextEditingController(); final TextEditingController loginPasswordController = TextEditingController();
final loginFormKey = GlobalKey<FormState>(); final loginFormKey = GlobalKey<FormState>();
bool isChecked = true; bool isChecked = false;
bool obscureText = true; bool obscureText = true;
String newPassword = ''; String newPassword = '';
String maskedEmail = ''; String maskedEmail = '';
@ -140,7 +146,7 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
String validate = ''; String validate = '';
String forgetValidate = ''; String forgetValidate = '';
String forgetEmailValidate = ''; String forgetEmailValidate = '';
// String regionUuid = ''; String regionUuid = '';
static Token token = Token.emptyConstructor(); static Token token = Token.emptyConstructor();
static UserModel? user; static UserModel? user;
bool showValidationMessage = false; bool showValidationMessage = false;
@ -157,9 +163,9 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
token = await AuthenticationAPI.loginWithEmail( token = await AuthenticationAPI.loginWithEmail(
model: LoginWithEmailModel( model: LoginWithEmailModel(
email: event.username, email: event.username,
password: event.password, password: event.password,
), regionUuid: event.regionUuid),
); );
} catch (failure) { } catch (failure) {
validate = 'Invalid Credentials!'; validate = 'Invalid Credentials!';
@ -169,7 +175,8 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
if (token.accessTokenIsNotEmpty) { if (token.accessTokenIsNotEmpty) {
FlutterSecureStorage storage = const FlutterSecureStorage(); FlutterSecureStorage storage = const FlutterSecureStorage();
await storage.write(key: Token.loginAccessTokenKey, value: token.accessToken); await storage.write(
key: Token.loginAccessTokenKey, value: token.accessToken);
const FlutterSecureStorage().write( const FlutterSecureStorage().write(
key: UserModel.userUuidKey, key: UserModel.userUuidKey,
value: Token.decodeToken(token.accessToken)['uuid'].toString()); value: Token.decodeToken(token.accessToken)['uuid'].toString());
@ -327,12 +334,14 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
static Future<String> getTokenAndValidate() async { static Future<String> getTokenAndValidate() async {
try { try {
const storage = FlutterSecureStorage(); const storage = FlutterSecureStorage();
final firstLaunch = final firstLaunch = await SharedPreferencesHelper.readBoolFromSP(
await SharedPreferencesHelper.readBoolFromSP(StringsManager.firstLaunch) ?? true; StringsManager.firstLaunch) ??
true;
if (firstLaunch) { if (firstLaunch) {
storage.deleteAll(); storage.deleteAll();
} }
await SharedPreferencesHelper.saveBoolToSP(StringsManager.firstLaunch, false); await SharedPreferencesHelper.saveBoolToSP(
StringsManager.firstLaunch, false);
final value = await storage.read(key: Token.loginAccessTokenKey) ?? ''; final value = await storage.read(key: Token.loginAccessTokenKey) ?? '';
if (value.isEmpty) { if (value.isEmpty) {
return 'Token not found'; return 'Token not found';
@ -367,7 +376,7 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
Future selectRegion(SelectRegionEvent event, Emitter<AuthState> emit) async { Future selectRegion(SelectRegionEvent event, Emitter<AuthState> emit) async {
try { try {
emit(AuthLoading()); emit(AuthLoading());
// regionUuid = event.val; regionUuid = event.val;
add(CheckEnableEvent()); add(CheckEnableEvent());
emit(AuthInitialState()); emit(AuthInitialState());
} catch (e) { } catch (e) {
@ -385,7 +394,9 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
final String formattedTime = [ final String formattedTime = [
if (days > 0) '${days}d', // Append 'd' for days if (days > 0) '${days}d', // Append 'd' for days
if (days > 0 || hours > 0) if (days > 0 || hours > 0)
hours.toString().padLeft(2, '0'), // Show hours if there are days or hours hours
.toString()
.padLeft(2, '0'), // Show hours if there are days or hours
minutes.toString().padLeft(2, '0'), minutes.toString().padLeft(2, '0'),
seconds.toString().padLeft(2, '0'), seconds.toString().padLeft(2, '0'),
].join(':'); ].join(':');
@ -400,7 +411,8 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> {
emit(AuthLoading()); emit(AuthLoading());
checkValidate = isChecked == true && checkValidate = isChecked == true &&
loginPasswordController.text.isNotEmpty && loginPasswordController.text.isNotEmpty &&
loginEmailController.text.isNotEmpty; loginEmailController.text.isNotEmpty &&
regionUuid != '';
emit(LoginInitial()); emit(LoginInitial());
return checkValidate; return checkValidate;
} }

View File

@ -10,16 +10,16 @@ abstract class AuthEvent extends Equatable {
class LoginButtonPressed extends AuthEvent { class LoginButtonPressed extends AuthEvent {
final String username; final String username;
final String password; final String password;
// final String regionUuid; final String regionUuid;
const LoginButtonPressed({ const LoginButtonPressed({
required this.username, required this.username,
required this.password, required this.password,
// required this.regionUuid, required this.regionUuid,
}); });
@override @override
List<Object> get props => [username, password]; List<Object> get props => [username, password, regionUuid];
} }
class CheckBoxEvent extends AuthEvent { class CheckBoxEvent extends AuthEvent {
@ -49,9 +49,13 @@ class UpdateTimerEvent extends AuthEvent {
const UpdateTimerEvent({required this.remainingTime, required this.isButtonEnabled}); const UpdateTimerEvent({required this.remainingTime, required this.isButtonEnabled});
} }
class ChangePasswordEvent extends AuthEvent {} class ChangePasswordEvent extends AuthEvent {
class SendOtpEvent extends AuthEvent {} }
class SendOtpEvent extends AuthEvent {
}
class PasswordVisibleEvent extends AuthEvent { class PasswordVisibleEvent extends AuthEvent {
final bool? newValue; final bool? newValue;

View File

@ -1,19 +1,19 @@
class LoginWithEmailModel { class LoginWithEmailModel {
final String email; final String email;
final String password; final String password;
// final String regionUuid; final String regionUuid;
LoginWithEmailModel({ LoginWithEmailModel({
required this.email, required this.email,
required this.password, required this.password,
// required this.regionUuid, required this.regionUuid,
}); });
factory LoginWithEmailModel.fromJson(Map<String, dynamic> json) { factory LoginWithEmailModel.fromJson(Map<String, dynamic> json) {
return LoginWithEmailModel( return LoginWithEmailModel(
email: json['email'], email: json['email'],
password: json['password'], password: json['password'],
// regionUuid: json['regionUuid'], regionUuid: json['regionUuid'],
); );
} }
@ -21,7 +21,7 @@ class LoginWithEmailModel {
return { return {
'email': email, 'email': email,
'password': password, 'password': password,
// 'regionUuid': regionUuid, 'regionUuid': regionUuid,
}; };
} }
} }

View File

@ -124,18 +124,18 @@ class ForgetPasswordWebPage extends StatelessWidget {
.copyWith(fontSize: 14, fontWeight: FontWeight.w400), .copyWith(fontSize: 14, fontWeight: FontWeight.w400),
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
// Column( Column(
// crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
// children: [ children: [
// const SizedBox(height: 10), const SizedBox(height: 10),
// Form( Form(
// key: forgetBloc.forgetRegionKey, key: forgetBloc.forgetRegionKey,
// child: SizedBox( child: SizedBox(
// child: child:
// _buildDropdownField(context, forgetBloc, size))) _buildDropdownField(context, forgetBloc, size)))
// ], ],
// ), ),
const SizedBox(height: 20), const SizedBox(height: 20),
Form( Form(
key: forgetBloc.forgetEmailKey, key: forgetBloc.forgetEmailKey,
@ -459,9 +459,9 @@ class ForgetPasswordWebPage extends StatelessWidget {
), ),
); );
}).toList(), }).toList(),
// value: loginBloc.regionList!.any((region) => region.id == loginBloc.regionUuid) value: loginBloc.regionList!.any((region) => region.id == loginBloc.regionUuid)
// ? loginBloc.regionUuid ? loginBloc.regionUuid
// : null, : null,
onChanged: (String? value) { onChanged: (String? value) {
if (value != null) { if (value != null) {
loginBloc.add(SelectRegionEvent(val: value)); loginBloc.add(SelectRegionEvent(val: value));

View File

@ -6,7 +6,7 @@ import 'package:go_router/go_router.dart';
import 'package:syncrow_web/pages/auth/bloc/auth_bloc.dart'; import 'package:syncrow_web/pages/auth/bloc/auth_bloc.dart';
import 'package:syncrow_web/pages/auth/bloc/auth_event.dart'; import 'package:syncrow_web/pages/auth/bloc/auth_event.dart';
import 'package:syncrow_web/pages/auth/bloc/auth_state.dart'; import 'package:syncrow_web/pages/auth/bloc/auth_state.dart';
// import 'package:syncrow_web/pages/auth/model/region_model.dart'; import 'package:syncrow_web/pages/auth/model/region_model.dart';
import 'package:syncrow_web/pages/auth/view/forget_password_page.dart'; import 'package:syncrow_web/pages/auth/view/forget_password_page.dart';
import 'package:syncrow_web/pages/common/buttons/default_button.dart'; import 'package:syncrow_web/pages/common/buttons/default_button.dart';
import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/color_manager.dart';
@ -112,44 +112,44 @@ class LoginMobilePage extends StatelessWidget {
color: Colors.white, fontSize: 24, fontWeight: FontWeight.bold), color: Colors.white, fontSize: 24, fontWeight: FontWeight.bold),
), ),
const SizedBox(height: 30), const SizedBox(height: 30),
// Column( Column(
// crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
// children: [ children: [
// Text( Text(
// "Country/Region", "Country/Region",
// style: Theme.of(context).textTheme.bodySmall, style: Theme.of(context).textTheme.bodySmall,
// ), ),
// SizedBox( SizedBox(
// child: DropdownButtonFormField<String>( child: DropdownButtonFormField<String>(
// validator: loginBloc.validateRegion, validator: loginBloc.validateRegion,
// icon: const Icon( icon: const Icon(
// Icons.keyboard_arrow_down_outlined, Icons.keyboard_arrow_down_outlined,
// ), ),
// decoration: textBoxDecoration()!.copyWith( decoration: textBoxDecoration()!.copyWith(
// hintText: null, hintText: null,
// ), ),
// hint: const Align( hint: const Align(
// alignment: Alignment.centerLeft, alignment: Alignment.centerLeft,
// child: Text( child: Text(
// 'Select your region/country', 'Select your region/country',
// textAlign: TextAlign.center, textAlign: TextAlign.center,
// ), ),
// ), ),
// isDense: true, isDense: true,
// style: const TextStyle(color: Colors.black), style: const TextStyle(color: Colors.black),
// items: loginBloc.regionList!.map((RegionModel region) { items: loginBloc.regionList!.map((RegionModel region) {
// return DropdownMenuItem<String>( return DropdownMenuItem<String>(
// value: region.name, value: region.name,
// child: Text(region.name), child: Text(region.name),
// ); );
// }).toList(), }).toList(),
// onChanged: (String? value) {}, onChanged: (String? value) {},
// ), ),
// ) )
// ], ],
// ), ),
// const SizedBox(height: 20.0), const SizedBox(height: 20.0),
Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
@ -207,10 +207,7 @@ class LoginMobilePage extends StatelessWidget {
}, },
child: Text( child: Text(
"Forgot Password?", "Forgot Password?",
style: Theme.of(context) style: Theme.of(context).textTheme.bodySmall,
.textTheme
.bodySmall!
.copyWith(color: ColorsManager.blackColor),
), ),
), ),
], ],
@ -279,6 +276,7 @@ class LoginMobilePage extends StatelessWidget {
if (loginBloc.loginFormKey.currentState!.validate()) { if (loginBloc.loginFormKey.currentState!.validate()) {
loginBloc.add( loginBloc.add(
LoginButtonPressed( LoginButtonPressed(
regionUuid: '',
username: loginBloc.loginEmailController.text, username: loginBloc.loginEmailController.text,
password: loginBloc.loginPasswordController.text, password: loginBloc.loginPasswordController.text,
), ),

View File

@ -155,16 +155,16 @@ class _LoginWebPageState extends State<LoginWebPage> with HelperResponsiveLayout
children: <Widget>[ children: <Widget>[
const SizedBox(height: 40), const SizedBox(height: 40),
Text('Login', style: Theme.of(context).textTheme.headlineLarge), Text('Login', style: Theme.of(context).textTheme.headlineLarge),
// SizedBox(height: size.height * 0.03), SizedBox(height: size.height * 0.03),
// _buildDropdownField(context, loginBloc, size), _buildDropdownField(context, loginBloc, size),
const SizedBox(height: 20.0), const SizedBox(height: 20.0),
_buildEmailField(context, loginBloc), _buildEmailField(context, loginBloc),
const SizedBox(height: 20.0), const SizedBox(height: 20.0),
_buildPasswordField(context, loginBloc), _buildPasswordField(context, loginBloc),
const SizedBox(height: 20), const SizedBox(height: 20),
_buildForgotPassword(context), _buildForgotPassword(context),
// const SizedBox(height: 20), const SizedBox(height: 20),
// _buildCheckbox(context, loginBloc, size), _buildCheckbox(context, loginBloc, size),
const SizedBox(height: 20.0), const SizedBox(height: 20.0),
_buildSignInButton(context, loginBloc, size), _buildSignInButton(context, loginBloc, size),
const SizedBox(height: 15.0), const SizedBox(height: 15.0),
@ -219,11 +219,11 @@ class _LoginWebPageState extends State<LoginWebPage> with HelperResponsiveLayout
), ),
); );
}).toList(), }).toList(),
// value: loginBloc.regionList!.any( value: loginBloc.regionList!.any(
// (region) => region.id == loginBloc.regionUuid, (region) => region.id == loginBloc.regionUuid,
// ) )
// ? loginBloc.regionUuid ? loginBloc.regionUuid
// : null, : null,
onChanged: (String? value) { onChanged: (String? value) {
if (value != null) { if (value != null) {
loginBloc.add(CheckEnableEvent()); loginBloc.add(CheckEnableEvent());
@ -462,7 +462,7 @@ class _LoginWebPageState extends State<LoginWebPage> with HelperResponsiveLayout
onPressed: () { onPressed: () {
if (loginBloc.loginFormKey.currentState!.validate()) { if (loginBloc.loginFormKey.currentState!.validate()) {
loginBloc.add(LoginButtonPressed( loginBloc.add(LoginButtonPressed(
// regionUuid: loginBloc.regionUuid, regionUuid: loginBloc.regionUuid,
username: loginBloc.loginEmailController.text, username: loginBloc.loginEmailController.text,
password: loginBloc.loginPasswordController.text, password: loginBloc.loginPasswordController.text,
)); ));

View File

@ -8,7 +8,7 @@ import 'package:syncrow_web/pages/device_managment/ac/view/batch_control_list/ba
import 'package:syncrow_web/pages/device_managment/ac/view/batch_control_list/batch_fan_speed.dart'; import 'package:syncrow_web/pages/device_managment/ac/view/batch_control_list/batch_fan_speed.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/constants/assets.dart';
@ -26,8 +26,7 @@ class AcDeviceBatchControlView extends StatelessWidget with HelperResponsiveLayo
final isLarge = isLargeScreenSize(context); final isLarge = isLargeScreenSize(context);
final isMedium = isMediumScreenSize(context); final isMedium = isMediumScreenSize(context);
return BlocProvider( return BlocProvider(
create: (context) => create: (context) => AcBloc(deviceId: devicesIds.first)..add(AcFetchBatchStatusEvent(devicesIds)),
AcBloc(deviceId: devicesIds.first)..add(AcFetchBatchStatusEvent(devicesIds)),
child: BlocBuilder<AcBloc, AcsState>( child: BlocBuilder<AcBloc, AcsState>(
builder: (context, state) { builder: (context, state) {
if (state is ACStatusLoaded) { if (state is ACStatusLoaded) {
@ -99,8 +98,7 @@ class AcDeviceBatchControlView extends StatelessWidget with HelperResponsiveLayo
), ),
Text( Text(
'h', 'h',
style: style: context.textTheme.bodySmall!.copyWith(color: ColorsManager.blackColor),
context.textTheme.bodySmall!.copyWith(color: ColorsManager.blackColor),
), ),
Text( Text(
'30', '30',
@ -109,9 +107,7 @@ class AcDeviceBatchControlView extends StatelessWidget with HelperResponsiveLayo
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
), ),
Text('m', Text('m', style: context.textTheme.bodySmall!.copyWith(color: ColorsManager.blackColor)),
style: context.textTheme.bodySmall!
.copyWith(color: ColorsManager.blackColor)),
IconButton( IconButton(
onPressed: () {}, onPressed: () {},
icon: const Icon( icon: const Icon(
@ -142,7 +138,7 @@ class AcDeviceBatchControlView extends StatelessWidget with HelperResponsiveLayo
)); ));
}, },
), ),
// FirmwareUpdateWidget(deviceId: devicesIds.first, version: 5), FirmwareUpdateWidget(deviceId: devicesIds.first, version: 5),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<AcBloc>().add(AcFactoryResetEvent( context.read<AcBloc>().add(AcFactoryResetEvent(

View File

@ -6,7 +6,7 @@ import 'package:syncrow_web/pages/device_managment/ceiling_sensor/bloc/ceiling_e
import 'package:syncrow_web/pages/device_managment/ceiling_sensor/bloc/ceiling_state.dart'; import 'package:syncrow_web/pages/device_managment/ceiling_sensor/bloc/ceiling_state.dart';
import 'package:syncrow_web/pages/device_managment/ceiling_sensor/model/ceiling_sensor_model.dart'; import 'package:syncrow_web/pages/device_managment/ceiling_sensor/model/ceiling_sensor_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_space_type.dart'; import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_space_type.dart';
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart'; import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart';
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presense_nobody_time.dart'; import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presense_nobody_time.dart';
@ -110,7 +110,7 @@ class CeilingSensorBatchControlView extends StatelessWidget with HelperResponsiv
), ),
), ),
), ),
// FirmwareUpdateWidget(deviceId: devicesIds.first, version: 4), FirmwareUpdateWidget(deviceId: devicesIds.first, version: 4),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<CeilingSensorBloc>().add( context.read<CeilingSensorBloc>().add(

View File

@ -6,10 +6,11 @@ import 'package:syncrow_web/pages/device_managment/curtain/bloc/curtain_bloc.dar
import 'package:syncrow_web/pages/device_managment/curtain/bloc/curtain_event.dart'; import 'package:syncrow_web/pages/device_managment/curtain/bloc/curtain_event.dart';
import 'package:syncrow_web/pages/device_managment/curtain/bloc/curtain_state.dart'; import 'package:syncrow_web/pages/device_managment/curtain/bloc/curtain_state.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class CurtainBatchStatusView extends StatelessWidget with HelperResponsiveLayout { class CurtainBatchStatusView extends StatelessWidget
with HelperResponsiveLayout {
const CurtainBatchStatusView({super.key, required this.devicesIds}); const CurtainBatchStatusView({super.key, required this.devicesIds});
final List<String> devicesIds; final List<String> devicesIds;
@ -17,8 +18,8 @@ class CurtainBatchStatusView extends StatelessWidget with HelperResponsiveLayout
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (context) => create: (context) => CurtainBloc(deviceId: devicesIds.first)
CurtainBloc(deviceId: devicesIds.first)..add(CurtainFetchBatchStatus(devicesIds)), ..add(CurtainFetchBatchStatus(devicesIds)),
child: BlocBuilder<CurtainBloc, CurtainState>( child: BlocBuilder<CurtainBloc, CurtainState>(
builder: (context, state) { builder: (context, state) {
if (state is CurtainStatusLoading) { if (state is CurtainStatusLoading) {
@ -67,7 +68,7 @@ class CurtainBatchStatusView extends StatelessWidget with HelperResponsiveLayout
)); ));
}, },
), ),
// FirmwareUpdateWidget(deviceId: devicesIds.first, version: 5), FirmwareUpdateWidget(deviceId: devicesIds.first, version: 5),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<CurtainBloc>().add( context.read<CurtainBloc>().add(

View File

@ -4,10 +4,11 @@ import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_re
import 'package:syncrow_web/pages/device_managment/door_lock/bloc/door_lock_bloc.dart'; import 'package:syncrow_web/pages/device_managment/door_lock/bloc/door_lock_bloc.dart';
import 'package:syncrow_web/pages/device_managment/door_lock/bloc/door_lock_event.dart'; import 'package:syncrow_web/pages/device_managment/door_lock/bloc/door_lock_event.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class DoorLockBatchControlView extends StatelessWidget with HelperResponsiveLayout { class DoorLockBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
const DoorLockBatchControlView({super.key, required this.devicesIds}); const DoorLockBatchControlView({super.key, required this.devicesIds});
final List<String> devicesIds; final List<String> devicesIds;
@ -17,17 +18,17 @@ class DoorLockBatchControlView extends StatelessWidget with HelperResponsiveLayo
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
// SizedBox( SizedBox(
// width: 170, width: 170,
// height: 140, height: 140,
// child: FirmwareUpdateWidget( child: FirmwareUpdateWidget(
// deviceId: devicesIds.first, deviceId: devicesIds.first,
// version: 12, version: 12,
// ), ),
// ), ),
// const SizedBox( const SizedBox(
// width: 12, width: 12,
// ), ),
SizedBox( SizedBox(
width: 170, width: 170,
height: 140, height: 140,

View File

@ -6,15 +6,17 @@ import 'package:syncrow_web/pages/device_managment/garage_door/bloc/garage_door_
import 'package:syncrow_web/pages/device_managment/garage_door/bloc/garage_door_state.dart'; import 'package:syncrow_web/pages/device_managment/garage_door/bloc/garage_door_state.dart';
import 'package:syncrow_web/pages/device_managment/garage_door/models/garage_door_model.dart'; import 'package:syncrow_web/pages/device_managment/garage_door/models/garage_door_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class GarageDoorBatchControlView extends StatelessWidget with HelperResponsiveLayout { class GarageDoorBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
final List<String> deviceIds; final List<String> deviceIds;
const GarageDoorBatchControlView({Key? key, required this.deviceIds}) : super(key: key); const GarageDoorBatchControlView({Key? key, required this.deviceIds})
: super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -37,7 +39,8 @@ class GarageDoorBatchControlView extends StatelessWidget with HelperResponsiveLa
); );
} }
Widget _buildStatusControls(BuildContext context, GarageDoorStatusModel status) { Widget _buildStatusControls(
BuildContext context, GarageDoorStatusModel status) {
final isExtraLarge = isExtraLargeScreenSize(context); final isExtraLarge = isExtraLargeScreenSize(context);
final isLarge = isLargeScreenSize(context); final isLarge = isLargeScreenSize(context);
final isMedium = isMediumScreenSize(context); final isMedium = isMediumScreenSize(context);
@ -72,10 +75,10 @@ class GarageDoorBatchControlView extends StatelessWidget with HelperResponsiveLa
); );
}, },
), ),
// FirmwareUpdateWidget( FirmwareUpdateWidget(
// deviceId: deviceIds.first, deviceId: deviceIds.first,
// version: 12, version: 12,
// ), ),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<GarageDoorBloc>().add( context.read<GarageDoorBloc>().add(

View File

@ -3,10 +3,11 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/gateway/bloc/gate_way_bloc.dart'; import 'package:syncrow_web/pages/device_managment/gateway/bloc/gate_way_bloc.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class GatewayBatchControlView extends StatelessWidget with HelperResponsiveLayout { class GatewayBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
const GatewayBatchControlView({super.key, required this.gatewayIds}); const GatewayBatchControlView({super.key, required this.gatewayIds});
final List<String> gatewayIds; final List<String> gatewayIds;
@ -23,13 +24,14 @@ class GatewayBatchControlView extends StatelessWidget with HelperResponsiveLayou
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
// SizedBox( SizedBox(
// width: 170, width: 170,
// height: 140, height: 140,
// child: FirmwareUpdateWidget(deviceId: gatewayIds.first, version: 2)), child: FirmwareUpdateWidget(
// const SizedBox( deviceId: gatewayIds.first, version: 2)),
// width: 12, const SizedBox(
// ), width: 12,
),
SizedBox( SizedBox(
width: 170, width: 170,
height: 140, height: 140,
@ -38,7 +40,8 @@ class GatewayBatchControlView extends StatelessWidget with HelperResponsiveLayou
context.read<GateWayBloc>().add( context.read<GateWayBloc>().add(
GateWayFactoryReset( GateWayFactoryReset(
deviceId: gatewayIds.first, deviceId: gatewayIds.first,
factoryReset: FactoryResetModel(devicesUuid: gatewayIds), factoryReset:
FactoryResetModel(devicesUuid: gatewayIds),
), ),
); );
}, },

View File

@ -4,7 +4,7 @@ import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_re
import 'package:syncrow_web/pages/device_managment/main_door_sensor/bloc/main_door_sensor_bloc.dart'; import 'package:syncrow_web/pages/device_managment/main_door_sensor/bloc/main_door_sensor_bloc.dart';
import 'package:syncrow_web/pages/device_managment/main_door_sensor/bloc/main_door_sensor_event.dart'; import 'package:syncrow_web/pages/device_managment/main_door_sensor/bloc/main_door_sensor_event.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
class MainDoorSensorBatchView extends StatelessWidget { class MainDoorSensorBatchView extends StatelessWidget {
const MainDoorSensorBatchView({super.key, required this.devicesIds}); const MainDoorSensorBatchView({super.key, required this.devicesIds});
@ -16,17 +16,17 @@ class MainDoorSensorBatchView extends StatelessWidget {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
// SizedBox( SizedBox(
// width: 170, width: 170,
// height: 140, height: 140,
// child: FirmwareUpdateWidget( child: FirmwareUpdateWidget(
// deviceId: devicesIds.first, deviceId: devicesIds.first,
// version: 12, version: 12,
// ), ),
// ), ),
// const SizedBox( const SizedBox(
// width: 12, width: 12,
// ), ),
SizedBox( SizedBox(
width: 170, width: 170,
height: 140, height: 140,

View File

@ -4,14 +4,16 @@ import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_re
import 'package:syncrow_web/pages/device_managment/one_g_glass_switch/bloc/one_gang_glass_switch_bloc.dart'; import 'package:syncrow_web/pages/device_managment/one_g_glass_switch/bloc/one_gang_glass_switch_bloc.dart';
import 'package:syncrow_web/pages/device_managment/one_g_glass_switch/models/once_gang_glass_status_model.dart'; import 'package:syncrow_web/pages/device_managment/one_g_glass_switch/models/once_gang_glass_status_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class OneGangGlassSwitchBatchControlView extends StatelessWidget with HelperResponsiveLayout { class OneGangGlassSwitchBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
final List<String> deviceIds; final List<String> deviceIds;
const OneGangGlassSwitchBatchControlView({required this.deviceIds, super.key}); const OneGangGlassSwitchBatchControlView(
{required this.deviceIds, super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -34,7 +36,8 @@ class OneGangGlassSwitchBatchControlView extends StatelessWidget with HelperResp
); );
} }
Widget _buildStatusControls(BuildContext context, OneGangGlassStatusModel status) { Widget _buildStatusControls(
BuildContext context, OneGangGlassStatusModel status) {
final isExtraLarge = isExtraLargeScreenSize(context); final isExtraLarge = isExtraLargeScreenSize(context);
final isLarge = isLargeScreenSize(context); final isLarge = isLargeScreenSize(context);
final isMedium = isMediumScreenSize(context); final isMedium = isMediumScreenSize(context);
@ -68,10 +71,10 @@ class OneGangGlassSwitchBatchControlView extends StatelessWidget with HelperResp
); );
}, },
), ),
// FirmwareUpdateWidget( FirmwareUpdateWidget(
// deviceId: deviceIds.first, deviceId: deviceIds.first,
// version: 12, version: 12,
// ), ),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<OneGangGlassSwitchBloc>().add( context.read<OneGangGlassSwitchBloc>().add(

View File

@ -6,11 +6,12 @@ import 'package:syncrow_web/pages/device_managment/one_gang_switch/bloc/wall_lig
import 'package:syncrow_web/pages/device_managment/one_gang_switch/bloc/wall_light_switch_state.dart'; import 'package:syncrow_web/pages/device_managment/one_gang_switch/bloc/wall_light_switch_state.dart';
import 'package:syncrow_web/pages/device_managment/one_gang_switch/models/wall_light_status_model.dart'; import 'package:syncrow_web/pages/device_managment/one_gang_switch/models/wall_light_status_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class WallLightBatchControlView extends StatelessWidget with HelperResponsiveLayout { class WallLightBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
const WallLightBatchControlView({super.key, required this.deviceIds}); const WallLightBatchControlView({super.key, required this.deviceIds});
final List<String> deviceIds; final List<String> deviceIds;
@ -26,7 +27,8 @@ class WallLightBatchControlView extends StatelessWidget with HelperResponsiveLay
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
} else if (state is WallLightSwitchStatusLoaded) { } else if (state is WallLightSwitchStatusLoaded) {
return _buildStatusControls(context, state.status); return _buildStatusControls(context, state.status);
} else if (state is WallLightSwitchError || state is WallLightSwitchControlError) { } else if (state is WallLightSwitchError ||
state is WallLightSwitchControlError) {
return const Center(child: Text('Error fetching status')); return const Center(child: Text('Error fetching status'));
} else { } else {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
@ -36,7 +38,8 @@ class WallLightBatchControlView extends StatelessWidget with HelperResponsiveLay
); );
} }
Widget _buildStatusControls(BuildContext context, WallLightStatusModel status) { Widget _buildStatusControls(
BuildContext context, WallLightStatusModel status) {
final isExtraLarge = isExtraLargeScreenSize(context); final isExtraLarge = isExtraLargeScreenSize(context);
final isLarge = isLargeScreenSize(context); final isLarge = isLargeScreenSize(context);
final isMedium = isMediumScreenSize(context); final isMedium = isMediumScreenSize(context);
@ -71,14 +74,15 @@ class WallLightBatchControlView extends StatelessWidget with HelperResponsiveLay
); );
}, },
), ),
// FirmwareUpdateWidget( FirmwareUpdateWidget(
// deviceId: deviceIds.first, deviceId: deviceIds.first,
// version: 12, version: 12,
// ), ),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<WallLightSwitchBloc>().add(WallLightFactoryReset( context.read<WallLightSwitchBloc>().add(WallLightFactoryReset(
deviceId: status.uuid, factoryReset: FactoryResetModel(devicesUuid: deviceIds))); deviceId: status.uuid,
factoryReset: FactoryResetModel(devicesUuid: deviceIds)));
}, },
), ),
], ],

View File

@ -6,19 +6,21 @@ import 'package:syncrow_web/pages/device_managment/power_clamp/bloc/smart_power_
import 'package:syncrow_web/pages/device_managment/power_clamp/bloc/smart_power_state.dart'; import 'package:syncrow_web/pages/device_managment/power_clamp/bloc/smart_power_state.dart';
import 'package:syncrow_web/pages/device_managment/power_clamp/models/power_clamp_batch_model.dart'; import 'package:syncrow_web/pages/device_managment/power_clamp/models/power_clamp_batch_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class PowerClampBatchControlView extends StatelessWidget with HelperResponsiveLayout { class PowerClampBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
final List<String> deviceIds; final List<String> deviceIds;
const PowerClampBatchControlView({Key? key, required this.deviceIds}) : super(key: key); const PowerClampBatchControlView({Key? key, required this.deviceIds})
: super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (context) => create: (context) => SmartPowerBloc(deviceId: deviceIds.first)
SmartPowerBloc(deviceId: deviceIds.first)..add(SmartPowerFetchBatchEvent(deviceIds)), ..add(SmartPowerFetchBatchEvent(deviceIds)),
child: BlocBuilder<SmartPowerBloc, SmartPowerState>( child: BlocBuilder<SmartPowerBloc, SmartPowerState>(
builder: (context, state) { builder: (context, state) {
if (state is SmartPowerLoading) { if (state is SmartPowerLoading) {
@ -35,17 +37,18 @@ class PowerClampBatchControlView extends StatelessWidget with HelperResponsiveLa
); );
} }
Widget _buildStatusControls(BuildContext context, PowerClampBatchModel status) { Widget _buildStatusControls(
BuildContext context, PowerClampBatchModel status) {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
// SizedBox( SizedBox(
// width: 170, width: 170,
// // height: 140, // height: 140,
// child: FirmwareUpdateWidget(deviceId: deviceIds.first, version: 2)), child: FirmwareUpdateWidget(deviceId: deviceIds.first, version: 2)),
// const SizedBox( const SizedBox(
// width: 12, width: 12,
// ), ),
SizedBox( SizedBox(
width: 170, width: 170,
height: 140, height: 140,

View File

@ -1,128 +1,128 @@
// import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
// import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
// import 'package:syncrow_web/pages/common/buttons/default_button.dart'; import 'package:syncrow_web/pages/common/buttons/default_button.dart';
// import 'package:syncrow_web/pages/device_managment/shared/device_controls_container.dart'; import 'package:syncrow_web/pages/device_managment/shared/device_controls_container.dart';
// import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/color_manager.dart';
// import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/constants/assets.dart';
// import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart';
// class FirmwareUpdateWidget extends StatefulWidget { class FirmwareUpdateWidget extends StatefulWidget {
// const FirmwareUpdateWidget({super.key, required this.deviceId, required this.version}); const FirmwareUpdateWidget({super.key, required this.deviceId, required this.version});
// final String deviceId; final String deviceId;
// final int version; final int version;
// @override @override
// State<FirmwareUpdateWidget> createState() => _FirmwareUpdateWidgetState(); State<FirmwareUpdateWidget> createState() => _FirmwareUpdateWidgetState();
// } }
// class _FirmwareUpdateWidgetState extends State<FirmwareUpdateWidget> { class _FirmwareUpdateWidgetState extends State<FirmwareUpdateWidget> {
// bool _showConfirmation = false; bool _showConfirmation = false;
// void _toggleConfirmation() { void _toggleConfirmation() {
// setState(() { setState(() {
// _showConfirmation = !_showConfirmation; _showConfirmation = !_showConfirmation;
// }); });
// } }
// @override @override
// Widget build(BuildContext context) { Widget build(BuildContext context) {
// return DeviceControlsContainer( return DeviceControlsContainer(
// child: _showConfirmation child: _showConfirmation
// ? Column( ? Column(
// crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [ children: [
// Column( Column(
// children: [ children: [
// Text( Text(
// 'Firmware Update', 'Firmware Update',
// style: context.textTheme.titleMedium!.copyWith( style: context.textTheme.titleMedium!.copyWith(
// fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
// color: ColorsManager.blackColor, color: ColorsManager.blackColor,
// ), ),
// ), ),
// Text( Text(
// 'Are you sure?', 'Are you sure?',
// style: context.textTheme.bodySmall!.copyWith( style: context.textTheme.bodySmall!.copyWith(
// color: ColorsManager.grayColor, color: ColorsManager.grayColor,
// ), ),
// ), ),
// ], ],
// ), ),
// Row( Row(
// children: [ children: [
// Flexible( Flexible(
// child: DefaultButton( child: DefaultButton(
// height: 20, height: 20,
// elevation: 0, elevation: 0,
// padding: 0, padding: 0,
// onPressed: _toggleConfirmation, onPressed: _toggleConfirmation,
// backgroundColor: ColorsManager.greyColor, backgroundColor: ColorsManager.greyColor,
// child: Text( child: Text(
// 'Cancel', 'Cancel',
// style: context.textTheme.bodyMedium!.copyWith( style: context.textTheme.bodyMedium!.copyWith(
// color: ColorsManager.blackColor, color: ColorsManager.blackColor,
// fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
// fontSize: 12, fontSize: 12,
// ), ),
// ), ),
// ), ),
// ), ),
// const SizedBox(width: 8), const SizedBox(width: 8),
// Flexible( Flexible(
// child: DefaultButton( child: DefaultButton(
// height: 20, height: 20,
// elevation: 0, elevation: 0,
// padding: 0, padding: 0,
// onPressed: () { onPressed: () {
// _toggleConfirmation(); _toggleConfirmation();
// }, },
// backgroundColor: ColorsManager.primaryColor, backgroundColor: ColorsManager.primaryColor,
// child: Text( child: Text(
// 'Update', 'Update',
// style: context.textTheme.bodyMedium!.copyWith( style: context.textTheme.bodyMedium!.copyWith(
// color: ColorsManager.whiteColors, color: ColorsManager.whiteColors,
// fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
// fontSize: 12, fontSize: 12,
// ), ),
// ), ),
// ), ),
// ), ),
// ], ],
// ), ),
// ], ],
// ) )
// : GestureDetector( : GestureDetector(
// onTap: _toggleConfirmation, onTap: _toggleConfirmation,
// child: Column( child: Column(
// crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [ children: [
// ClipOval( ClipOval(
// child: Container( child: Container(
// color: ColorsManager.whiteColors, color: ColorsManager.whiteColors,
// height: 60, height: 60,
// width: 60, width: 60,
// child: Padding( child: Padding(
// padding: const EdgeInsets.all(12.0), padding: const EdgeInsets.all(12.0),
// child: SvgPicture.asset( child: SvgPicture.asset(
// Assets.firmware, Assets.firmware,
// fit: BoxFit.cover, fit: BoxFit.cover,
// ), ),
// ), ),
// ), ),
// ), ),
// Text( Text(
// 'Firmware Update', 'Firmware Update',
// style: context.textTheme.titleMedium!.copyWith( style: context.textTheme.titleMedium!.copyWith(
// fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
// color: ColorsManager.blackColor, color: ColorsManager.blackColor,
// ), ),
// ), ),
// ], ],
// ), ),
// ), ),
// ); );
// } }
// } }

View File

@ -18,21 +18,20 @@ class SOSBatchControlView extends StatelessWidget {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
// SizedBox( SizedBox(
// width: 170, width: 170,
// // height: 140, // height: 140,
// child: FirmwareUpdateWidget(deviceId: deviceIds.first, version: 2)), child: FirmwareUpdateWidget(deviceId: deviceIds.first, version: 2)),
// const SizedBox( const SizedBox(
// width: 12, width: 12,
// ), ),
SizedBox( SizedBox(
width: 170, width: 170,
height: 140, height: 140,
child: FactoryResetWidget( child: FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<SosDeviceBloc>().add(SosFactoryReset( context.read<SosDeviceBloc>().add(
deviceId: deviceIds.first, SosFactoryReset(deviceId: deviceIds.first, factoryReset: FactoryResetModel(devicesUuid: deviceIds)));
factoryReset: FactoryResetModel(devicesUuid: deviceIds)));
}, },
), ),
), ),

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/pages/device_managment/three_g_glass_switch/bloc/three_gang_glass_switch_bloc.dart'; import 'package:syncrow_web/pages/device_managment/three_g_glass_switch/bloc/three_gang_glass_switch_bloc.dart';
import 'package:syncrow_web/pages/device_managment/three_g_glass_switch/models/three_gang_glass_switch.dart'; import 'package:syncrow_web/pages/device_managment/three_g_glass_switch/models/three_gang_glass_switch.dart';
@ -98,10 +98,10 @@ class ThreeGangGlassSwitchBatchControlView extends StatelessWidget with HelperRe
); );
}, },
), ),
// FirmwareUpdateWidget( FirmwareUpdateWidget(
// deviceId: deviceIds.first, deviceId: deviceIds.first,
// version: 12, // adjust the version according to your requirement version: 12, // adjust the version according to your requirement
// ), ),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<ThreeGangGlassSwitchBloc>().add( context.read<ThreeGangGlassSwitchBloc>().add(

View File

@ -2,13 +2,14 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/three_gang_switch/bloc/living_room_bloc.dart'; import 'package:syncrow_web/pages/device_managment/three_gang_switch/bloc/living_room_bloc.dart';
import 'package:syncrow_web/pages/device_managment/three_gang_switch/models/living_room_model.dart'; import 'package:syncrow_web/pages/device_managment/three_gang_switch/models/living_room_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class LivingRoomBatchControlsView extends StatelessWidget with HelperResponsiveLayout { class LivingRoomBatchControlsView extends StatelessWidget
with HelperResponsiveLayout {
const LivingRoomBatchControlsView({super.key, required this.deviceIds}); const LivingRoomBatchControlsView({super.key, required this.deviceIds});
final List<String> deviceIds; final List<String> deviceIds;
@ -16,15 +17,16 @@ class LivingRoomBatchControlsView extends StatelessWidget with HelperResponsiveL
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (context) => create: (context) => LivingRoomBloc(deviceId: deviceIds.first)
LivingRoomBloc(deviceId: deviceIds.first)..add(LivingRoomFetchBatchEvent(deviceIds)), ..add(LivingRoomFetchBatchEvent(deviceIds)),
child: BlocBuilder<LivingRoomBloc, LivingRoomState>( child: BlocBuilder<LivingRoomBloc, LivingRoomState>(
builder: (context, state) { builder: (context, state) {
if (state is LivingRoomDeviceStatusLoading) { if (state is LivingRoomDeviceStatusLoading) {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
} else if (state is LivingRoomDeviceStatusLoaded) { } else if (state is LivingRoomDeviceStatusLoaded) {
return _buildStatusControls(context, state.status); return _buildStatusControls(context, state.status);
} else if (state is LivingRoomDeviceManagementError || state is LivingRoomControlError) { } else if (state is LivingRoomDeviceManagementError ||
state is LivingRoomControlError) {
return const Center(child: Text('Error fetching status')); return const Center(child: Text('Error fetching status'));
} else { } else {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
@ -34,7 +36,8 @@ class LivingRoomBatchControlsView extends StatelessWidget with HelperResponsiveL
); );
} }
Widget _buildStatusControls(BuildContext context, LivingRoomStatusModel status) { Widget _buildStatusControls(
BuildContext context, LivingRoomStatusModel status) {
final isExtraLarge = isExtraLargeScreenSize(context); final isExtraLarge = isExtraLargeScreenSize(context);
final isLarge = isLargeScreenSize(context); final isLarge = isLargeScreenSize(context);
final isMedium = isMediumScreenSize(context); final isMedium = isMediumScreenSize(context);
@ -99,10 +102,10 @@ class LivingRoomBatchControlsView extends StatelessWidget with HelperResponsiveL
); );
}, },
), ),
// FirmwareUpdateWidget( FirmwareUpdateWidget(
// deviceId: deviceIds.first, deviceId: deviceIds.first,
// version: 12, version: 12,
// ), ),
FactoryResetWidget(callFactoryReset: () { FactoryResetWidget(callFactoryReset: () {
context.read<LivingRoomBloc>().add( context.read<LivingRoomBloc>().add(
LivingRoomFactoryResetEvent( LivingRoomFactoryResetEvent(

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/pages/device_managment/two_g_glass_switch/bloc/two_gang_glass_switch_bloc.dart'; import 'package:syncrow_web/pages/device_managment/two_g_glass_switch/bloc/two_gang_glass_switch_bloc.dart';
import 'package:syncrow_web/pages/device_managment/two_g_glass_switch/models/two_gang_glass_status_model.dart'; import 'package:syncrow_web/pages/device_managment/two_g_glass_switch/models/two_gang_glass_status_model.dart';
@ -16,8 +16,8 @@ class TwoGangGlassSwitchBatchControlView extends StatelessWidget with HelperResp
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (context) => TwoGangGlassSwitchBloc(deviceId: deviceIds.first) create: (context) =>
..add(TwoGangGlassSwitchFetchBatchStatusEvent(deviceIds)), TwoGangGlassSwitchBloc(deviceId: deviceIds.first)..add(TwoGangGlassSwitchFetchBatchStatusEvent(deviceIds)),
child: BlocBuilder<TwoGangGlassSwitchBloc, TwoGangGlassSwitchState>( child: BlocBuilder<TwoGangGlassSwitchBloc, TwoGangGlassSwitchState>(
builder: (context, state) { builder: (context, state) {
if (state is TwoGangGlassSwitchLoading) { if (state is TwoGangGlassSwitchLoading) {
@ -83,10 +83,10 @@ class TwoGangGlassSwitchBatchControlView extends StatelessWidget with HelperResp
); );
}, },
), ),
// FirmwareUpdateWidget( FirmwareUpdateWidget(
// deviceId: deviceIds.first, deviceId: deviceIds.first,
// version: 12, // adjust the version according to your requirement version: 12, // adjust the version according to your requirement
// ), ),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<TwoGangGlassSwitchBloc>().add( context.read<TwoGangGlassSwitchBloc>().add(

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/pages/device_managment/two_gang_switch/bloc/two_gang_switch_bloc.dart'; import 'package:syncrow_web/pages/device_managment/two_gang_switch/bloc/two_gang_switch_bloc.dart';
import 'package:syncrow_web/pages/device_managment/two_gang_switch/bloc/two_gang_switch_event.dart'; import 'package:syncrow_web/pages/device_managment/two_gang_switch/bloc/two_gang_switch_event.dart';
@ -10,7 +10,8 @@ import 'package:syncrow_web/pages/device_managment/two_gang_switch/bloc/two_gang
import 'package:syncrow_web/pages/device_managment/two_gang_switch/models/two_gang_status_model.dart'; import 'package:syncrow_web/pages/device_managment/two_gang_switch/models/two_gang_status_model.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class TwoGangBatchControlView extends StatelessWidget with HelperResponsiveLayout { class TwoGangBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
const TwoGangBatchControlView({super.key, required this.deviceIds}); const TwoGangBatchControlView({super.key, required this.deviceIds});
final List<String> deviceIds; final List<String> deviceIds;
@ -26,7 +27,8 @@ class TwoGangBatchControlView extends StatelessWidget with HelperResponsiveLayou
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
} else if (state is TwoGangSwitchStatusLoaded) { } else if (state is TwoGangSwitchStatusLoaded) {
return _buildStatusControls(context, state.status); return _buildStatusControls(context, state.status);
} else if (state is TwoGangSwitchError || state is TwoGangSwitchControlError) { } else if (state is TwoGangSwitchError ||
state is TwoGangSwitchControlError) {
return const Center(child: Text('Error fetching status')); return const Center(child: Text('Error fetching status'));
} else { } else {
return const Center(child: CircularProgressIndicator()); return const Center(child: CircularProgressIndicator());
@ -82,10 +84,10 @@ class TwoGangBatchControlView extends StatelessWidget with HelperResponsiveLayou
)); ));
}, },
), ),
// FirmwareUpdateWidget( FirmwareUpdateWidget(
// deviceId: deviceIds.first, deviceId: deviceIds.first,
// version: 12, version: 12,
// ), ),
FactoryResetWidget(callFactoryReset: () { FactoryResetWidget(callFactoryReset: () {
context.read<TwoGangSwitchBloc>().add( context.read<TwoGangSwitchBloc>().add(
TwoGangFactoryReset( TwoGangFactoryReset(

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart'; import 'package:syncrow_web/pages/device_managment/shared/sensors_widgets/presence_update_data.dart';
import 'package:syncrow_web/pages/device_managment/wall_sensor/bloc/wall_bloc.dart'; import 'package:syncrow_web/pages/device_managment/wall_sensor/bloc/wall_bloc.dart';
import 'package:syncrow_web/pages/device_managment/wall_sensor/bloc/wall_event.dart'; import 'package:syncrow_web/pages/device_managment/wall_sensor/bloc/wall_event.dart';
@ -113,7 +113,7 @@ class WallSensorBatchControlView extends StatelessWidget with HelperResponsiveLa
), ),
), ),
), ),
// FirmwareUpdateWidget(deviceId: devicesIds.first, version: 2), FirmwareUpdateWidget(deviceId: devicesIds.first, version: 2),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () { callFactoryReset: () {
context.read<WallSensorBloc>().add( context.read<WallSensorBloc>().add(

View File

@ -2,14 +2,15 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart'; import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/pages/device_managment/water_heater/bloc/water_heater_bloc.dart'; import 'package:syncrow_web/pages/device_managment/water_heater/bloc/water_heater_bloc.dart';
import 'package:syncrow_web/pages/device_managment/water_heater/models/water_heater_status_model.dart'; import 'package:syncrow_web/pages/device_managment/water_heater/models/water_heater_status_model.dart';
import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class WaterHEaterBatchControlView extends StatelessWidget with HelperResponsiveLayout { class WaterHEaterBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
const WaterHEaterBatchControlView({super.key, required this.deviceIds}); const WaterHEaterBatchControlView({super.key, required this.deviceIds});
final List<String> deviceIds; final List<String> deviceIds;
@ -17,8 +18,8 @@ class WaterHEaterBatchControlView extends StatelessWidget with HelperResponsiveL
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (context) => create: (context) => WaterHeaterBloc()
WaterHeaterBloc()..add(FetchWaterHeaterBatchStatusEvent(devicesUuid: deviceIds)), ..add(FetchWaterHeaterBatchStatusEvent(devicesUuid: deviceIds)),
child: BlocBuilder<WaterHeaterBloc, WaterHeaterState>( child: BlocBuilder<WaterHeaterBloc, WaterHeaterState>(
builder: (context, state) { builder: (context, state) {
if (state is WaterHeaterLoadingState) { if (state is WaterHeaterLoadingState) {
@ -35,7 +36,8 @@ class WaterHEaterBatchControlView extends StatelessWidget with HelperResponsiveL
); );
} }
Widget _buildStatusControls(BuildContext context, WaterHeaterStatusModel status) { Widget _buildStatusControls(
BuildContext context, WaterHeaterStatusModel status) {
final isExtraLarge = isExtraLargeScreenSize(context); final isExtraLarge = isExtraLargeScreenSize(context);
final isLarge = isLargeScreenSize(context); final isLarge = isLargeScreenSize(context);
final isMedium = isMediumScreenSize(context); final isMedium = isMediumScreenSize(context);
@ -71,10 +73,10 @@ class WaterHEaterBatchControlView extends StatelessWidget with HelperResponsiveL
); );
}, },
), ),
// FirmwareUpdateWidget( FirmwareUpdateWidget(
// deviceId: deviceIds.first, deviceId: deviceIds.first,
// version: 12, version: 12,
// ), ),
FactoryResetWidget( FactoryResetWidget(
callFactoryReset: () {}, callFactoryReset: () {},
), ),

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart'; import 'package:syncrow_web/pages/device_managment/all_devices/models/factory_reset_model.dart';
import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/factory_reset.dart';
// import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart'; import 'package:syncrow_web/pages/device_managment/shared/batch_control/firmware_update.dart';
import 'package:syncrow_web/pages/device_managment/water_leak/bloc/water_leak_bloc.dart'; import 'package:syncrow_web/pages/device_managment/water_leak/bloc/water_leak_bloc.dart';
import 'package:syncrow_web/pages/device_managment/water_leak/bloc/water_leak_event.dart'; import 'package:syncrow_web/pages/device_managment/water_leak/bloc/water_leak_event.dart';
@ -10,16 +10,18 @@ import 'package:syncrow_web/pages/device_managment/water_leak/bloc/water_leak_st
import 'package:syncrow_web/pages/device_managment/water_leak/model/water_leak_status_model.dart'; import 'package:syncrow_web/pages/device_managment/water_leak/model/water_leak_status_model.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart'; import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class WaterLeakBatchControlView extends StatelessWidget with HelperResponsiveLayout { class WaterLeakBatchControlView extends StatelessWidget
with HelperResponsiveLayout {
final List<String> deviceIds; final List<String> deviceIds;
const WaterLeakBatchControlView({Key? key, required this.deviceIds}) : super(key: key); const WaterLeakBatchControlView({Key? key, required this.deviceIds})
: super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocProvider( return BlocProvider(
create: (context) => create: (context) => WaterLeakBloc(deviceIds.first)
WaterLeakBloc(deviceIds.first)..add(FetchWaterLeakBatchStatusEvent(deviceIds)), ..add(FetchWaterLeakBatchStatusEvent(deviceIds)),
child: BlocBuilder<WaterLeakBloc, WaterLeakState>( child: BlocBuilder<WaterLeakBloc, WaterLeakState>(
builder: (context, state) { builder: (context, state) {
if (state is WaterLeakLoadingState) { if (state is WaterLeakLoadingState) {
@ -36,17 +38,18 @@ class WaterLeakBatchControlView extends StatelessWidget with HelperResponsiveLay
); );
} }
Widget _buildStatusControls(BuildContext context, WaterLeakStatusModel status) { Widget _buildStatusControls(
BuildContext context, WaterLeakStatusModel status) {
return Row( return Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
// SizedBox( SizedBox(
// width: 170, width: 170,
// height: 140, height: 140,
// child: FirmwareUpdateWidget(deviceId: deviceIds.first, version: 2)), child: FirmwareUpdateWidget(deviceId: deviceIds.first, version: 2)),
// const SizedBox( const SizedBox(
// width: 12, width: 12,
// ), ),
SizedBox( SizedBox(
width: 170, width: 170,
height: 140, height: 140,

View File

@ -90,40 +90,40 @@ class HomeBloc extends Bloc<HomeEvent, HomeState> {
}, },
color: ColorsManager.primaryColor, color: ColorsManager.primaryColor,
), ),
// HomeItemModel( HomeItemModel(
// title: 'Move in', title: 'Move in',
// icon: Assets.moveinIcon, icon: Assets.moveinIcon,
// active: false, active: false,
// onPress: (context) {}, onPress: (context) {},
// color: ColorsManager.primaryColor, color: ColorsManager.primaryColor,
// ), ),
// HomeItemModel( HomeItemModel(
// title: 'Construction', title: 'Construction',
// icon: Assets.constructionIcon, icon: Assets.constructionIcon,
// active: false, active: false,
// onPress: (context) {}, onPress: (context) {},
// color: ColorsManager.primaryColor, color: ColorsManager.primaryColor,
// ), ),
// HomeItemModel( HomeItemModel(
// title: 'Energy', title: 'Energy',
// icon: Assets.energyIcon, icon: Assets.energyIcon,
// active: false, active: false,
// onPress: (context) {}, onPress: (context) {},
// color: ColorsManager.slidingBlueColor.withOpacity(0.2), color: ColorsManager.slidingBlueColor.withOpacity(0.2),
// ), ),
// HomeItemModel( HomeItemModel(
// title: 'Integrations', title: 'Integrations',
// icon: Assets.integrationsIcon, icon: Assets.integrationsIcon,
// active: false, active: false,
// onPress: (context) {}, onPress: (context) {},
// color: ColorsManager.slidingBlueColor.withOpacity(0.2), color: ColorsManager.slidingBlueColor.withOpacity(0.2),
// ), ),
// HomeItemModel( HomeItemModel(
// title: 'Asset', title: 'Asset',
// icon: Assets.assetIcon, icon: Assets.assetIcon,
// active: false, active: false,
// onPress: (context) {}, onPress: (context) {},
// color: ColorsManager.slidingBlueColor.withOpacity(0.2), color: ColorsManager.slidingBlueColor.withOpacity(0.2),
// ), ),
]; ];
} }

View File

@ -51,7 +51,7 @@ class HomeWebPage extends StatelessWidget {
height: size.height * 0.6, height: size.height * 0.6,
width: size.width * 0.68, width: size.width * 0.68,
child: GridView.builder( child: GridView.builder(
itemCount: 3, //8 itemCount: 8,
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 4, crossAxisCount: 4,
crossAxisSpacing: 20.0, crossAxisSpacing: 20.0,

View File

@ -309,8 +309,6 @@ class SpaceManagementBloc
await _api.deleteSpace(communityUuid, parent.uuid!); await _api.deleteSpace(communityUuid, parent.uuid!);
} }
} catch (e) { } catch (e) {
print(
'Error deleting space ${parent.name} (UUID: ${parent.uuid}, Community UUID: $communityUuid): $e');
rethrow; // Decide whether to stop execution or continue rethrow; // Decide whether to stop execution or continue
} }
} }
@ -342,7 +340,6 @@ class SpaceManagementBloc
space.uuid = response?.uuid; space.uuid = response?.uuid;
} }
} catch (e) { } catch (e) {
print('Error creating space ${space.name}: $e');
rethrow; // Stop further execution on failure rethrow; // Stop further execution on failure
} }
} }

View File

@ -133,13 +133,7 @@ class CreateSpaceDialogState extends State<CreateSpaceDialog> {
isNameFieldInvalid = value.isEmpty; isNameFieldInvalid = value.isEmpty;
if (!isNameFieldInvalid) { if (!isNameFieldInvalid) {
if ((widget.parentSpace?.children.any( if (_isNameConflict(value)) {
(child) => child.name == value) ??
false) ||
(widget.parentSpace?.name == value) ||
(widget.editSpace?.children.any(
(child) => child.name == value) ??
false)) {
isNameFieldExist = true; isNameFieldExist = true;
isOkButtonEnabled = false; isOkButtonEnabled = false;
} else { } else {
@ -387,7 +381,14 @@ class CreateSpaceDialogState extends State<CreateSpaceDialog> {
); );
} }
bool _isNameConflict(String value) {
return (widget.parentSpace?.children.any((child) => child.name == value) ??
false) ||
(widget.parentSpace?.name == value) ||
(widget.editSpace?.parent?.name == value) ||
(widget.editSpace?.children.any((child) => child.name == value) ??
false);
}
String _mapIconToProduct(String uuid, List<ProductModel> products) { String _mapIconToProduct(String uuid, List<ProductModel> products) {
// Find the product with the matching UUID // Find the product with the matching UUID

View File

@ -22,16 +22,16 @@ class AuthenticationAPI {
}) async { }) async {
final response = await HTTPService().post( final response = await HTTPService().post(
path: ApiEndpoints.forgetPassword, path: ApiEndpoints.forgetPassword,
body: {"email": email, "password": password, "otpCode": otpCode}, body: {"email": email, "password": password,"otpCode": otpCode},
showServerMessage: true, showServerMessage: true,
expectedResponseModel: (json) {}); expectedResponseModel: (json) {});
return response; return response;
} }
static Future<int?> sendOtp({required String email}) async { static Future<int?> sendOtp({required String email, required String regionUuid}) async {
final response = await HTTPService().post( final response = await HTTPService().post(
path: ApiEndpoints.sendOtp, path: ApiEndpoints.sendOtp,
body: {"email": email, "type": "PASSWORD"}, body: {"email": email, "type": "PASSWORD", "regionUuid": regionUuid},
showServerMessage: true, showServerMessage: true,
expectedResponseModel: (json) { expectedResponseModel: (json) {
return json['data']['cooldown']; return json['data']['cooldown'];

View File

@ -6,7 +6,6 @@ import 'package:syncrow_web/pages/routiens/models/routine_details_model.dart';
import 'package:syncrow_web/pages/routiens/models/routine_model.dart'; import 'package:syncrow_web/pages/routiens/models/routine_model.dart';
import 'package:syncrow_web/services/api/http_service.dart'; import 'package:syncrow_web/services/api/http_service.dart';
import 'package:syncrow_web/utils/constants/api_const.dart'; import 'package:syncrow_web/utils/constants/api_const.dart';
import 'package:syncrow_web/utils/constants/temp_const.dart';
class SceneApi { class SceneApi {
static final HTTPService _httpService = HTTPService(); static final HTTPService _httpService = HTTPService();
@ -77,8 +76,7 @@ class SceneApi {
final response = await _httpService.get( final response = await _httpService.get(
path: ApiEndpoints.getUnitScenes path: ApiEndpoints.getUnitScenes
.replaceAll('{spaceUuid}', unitId) .replaceAll('{spaceUuid}', unitId)
.replaceAll('{communityUuid}', communityId) .replaceAll('{communityUuid}', communityId),
.replaceAll('{projectId}', TempConst.projectId),
queryParameters: {'showInHomePage': showInDevice}, queryParameters: {'showInHomePage': showInDevice},
showServerMessage: false, showServerMessage: false,
expectedResponseModel: (json) { expectedResponseModel: (json) {

View File

@ -5,7 +5,6 @@ import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_model
import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_response_model.dart'; import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_response_model.dart';
import 'package:syncrow_web/services/api/http_service.dart'; import 'package:syncrow_web/services/api/http_service.dart';
import 'package:syncrow_web/utils/constants/api_const.dart'; import 'package:syncrow_web/utils/constants/api_const.dart';
import 'package:syncrow_web/utils/constants/temp_const.dart';
class CommunitySpaceManagementApi { class CommunitySpaceManagementApi {
// Community Management APIs // Community Management APIs
@ -16,8 +15,7 @@ class CommunitySpaceManagementApi {
while (hasNext) { while (hasNext) {
await HTTPService().get( await HTTPService().get(
path: ApiEndpoints.getCommunityList path: ApiEndpoints.getCommunityList,
.replaceAll('{projectId}', TempConst.projectId),
queryParameters: {'page': page}, queryParameters: {'page': page},
expectedResponseModel: (json) { expectedResponseModel: (json) {
List<dynamic> jsonData = json['data']; List<dynamic> jsonData = json['data'];
@ -61,8 +59,7 @@ class CommunitySpaceManagementApi {
String name, String description) async { String name, String description) async {
try { try {
final response = await HTTPService().post( final response = await HTTPService().post(
path: ApiEndpoints.createCommunity path: ApiEndpoints.createCommunity,
.replaceAll('{projectId}', TempConst.projectId),
body: { body: {
'name': name, 'name': name,
'description': description, 'description': description,
@ -82,8 +79,7 @@ class CommunitySpaceManagementApi {
try { try {
final response = await HTTPService().put( final response = await HTTPService().put(
path: ApiEndpoints.updateCommunity path: ApiEndpoints.updateCommunity
.replaceAll('{communityId}', communityId) .replaceAll('{communityId}', communityId),
.replaceAll('{projectId}', TempConst.projectId),
body: { body: {
'name': name, 'name': name,
}, },
@ -102,8 +98,7 @@ class CommunitySpaceManagementApi {
try { try {
final response = await HTTPService().delete( final response = await HTTPService().delete(
path: ApiEndpoints.deleteCommunity path: ApiEndpoints.deleteCommunity
.replaceAll('{communityId}', communityId) .replaceAll('{communityId}', communityId),
.replaceAll('{projectId}', TempConst.projectId),
expectedResponseModel: (json) { expectedResponseModel: (json) {
return json['success'] ?? false; return json['success'] ?? false;
}, },
@ -118,9 +113,7 @@ class CommunitySpaceManagementApi {
Future<SpacesResponse> fetchSpaces(String communityId) async { Future<SpacesResponse> fetchSpaces(String communityId) async {
try { try {
final response = await HTTPService().get( final response = await HTTPService().get(
path: ApiEndpoints.listSpaces path: ApiEndpoints.listSpaces.replaceAll('{communityId}', communityId),
.replaceAll('{communityId}', communityId)
.replaceAll('{projectId}', TempConst.projectId),
expectedResponseModel: (json) { expectedResponseModel: (json) {
return SpacesResponse.fromJson(json); return SpacesResponse.fromJson(json);
}, },
@ -146,8 +139,7 @@ class CommunitySpaceManagementApi {
final response = await HTTPService().get( final response = await HTTPService().get(
path: ApiEndpoints.getSpace path: ApiEndpoints.getSpace
.replaceAll('{communityId}', communityId) .replaceAll('{communityId}', communityId)
.replaceAll('{spaceId}', spaceId) .replaceAll('{spaceId}', spaceId),
.replaceAll('{projectId}', TempConst.projectId),
expectedResponseModel: (json) { expectedResponseModel: (json) {
return SpaceModel.fromJson(json); return SpaceModel.fromJson(json);
}, },
@ -183,9 +175,7 @@ class CommunitySpaceManagementApi {
body['parentUuid'] = parentId; body['parentUuid'] = parentId;
} }
final response = await HTTPService().post( final response = await HTTPService().post(
path: ApiEndpoints.createSpace path: ApiEndpoints.createSpace.replaceAll('{communityId}', communityId),
.replaceAll('{communityId}', communityId)
.replaceAll('{projectId}', TempConst.projectId),
body: body, body: body,
expectedResponseModel: (json) { expectedResponseModel: (json) {
return SpaceModel.fromJson(json['data']); return SpaceModel.fromJson(json['data']);
@ -226,8 +216,7 @@ class CommunitySpaceManagementApi {
final response = await HTTPService().put( final response = await HTTPService().put(
path: ApiEndpoints.updateSpace path: ApiEndpoints.updateSpace
.replaceAll('{communityId}', communityId) .replaceAll('{communityId}', communityId)
.replaceAll('{spaceId}', spaceId) .replaceAll('{spaceId}', spaceId),
.replaceAll('{projectId}', TempConst.projectId),
body: body, body: body,
expectedResponseModel: (json) { expectedResponseModel: (json) {
return SpaceModel.fromJson(json['data']); return SpaceModel.fromJson(json['data']);
@ -245,8 +234,7 @@ class CommunitySpaceManagementApi {
final response = await HTTPService().delete( final response = await HTTPService().delete(
path: ApiEndpoints.deleteSpace path: ApiEndpoints.deleteSpace
.replaceAll('{communityId}', communityId) .replaceAll('{communityId}', communityId)
.replaceAll('{spaceId}', spaceId) .replaceAll('{spaceId}', spaceId),
.replaceAll('{projectId}', TempConst.projectId),
expectedResponseModel: (json) { expectedResponseModel: (json) {
return json['success'] ?? false; return json['success'] ?? false;
}, },
@ -262,8 +250,7 @@ class CommunitySpaceManagementApi {
try { try {
final response = await HTTPService().get( final response = await HTTPService().get(
path: ApiEndpoints.getSpaceHierarchy path: ApiEndpoints.getSpaceHierarchy
.replaceAll('{communityId}', communityId) .replaceAll('{communityId}', communityId),
.replaceAll('{projectId}', TempConst.projectId),
expectedResponseModel: (json) { expectedResponseModel: (json) {
final spaceModels = (json['data'] as List) final spaceModels = (json['data'] as List)
.map((spaceJson) => SpaceModel.fromJson(spaceJson)) .map((spaceJson) => SpaceModel.fromJson(spaceJson))

View File

@ -36,21 +36,21 @@ abstract class ApiEndpoints {
static const String getDeviceLogs = '/device/report-logs/{uuid}?code={code}'; static const String getDeviceLogs = '/device/report-logs/{uuid}?code={code}';
// Space Module // Space Module
static const String createSpace = '/projects/{projectId}/communities/{communityId}/spaces'; static const String createSpace = '/communities/{communityId}/spaces';
static const String listSpaces = '/projects/{projectId}/communities/{communityId}/spaces'; static const String listSpaces = '/communities/{communityId}/spaces';
static const String deleteSpace = '/projects/{projectId}/communities/{communityId}/spaces/{spaceId}'; static const String deleteSpace = '/communities/{communityId}/spaces/{spaceId}';
static const String updateSpace = '/projects/{projectId}/communities/{communityId}/spaces/{spaceId}'; static const String updateSpace = '/communities/{communityId}/spaces/{spaceId}';
static const String getSpace = '/projects/{projectId}/communities/{communityId}/spaces/{spaceId}'; static const String getSpace = '/communities/{communityId}/spaces/{spaceId}';
static const String getSpaceHierarchy = '/projects/{projectId}/communities/{communityId}/spaces'; static const String getSpaceHierarchy = '/communities/{communityId}/spaces';
// Community Module // Community Module
static const String createCommunity = '/projects/{projectId}/communities'; static const String createCommunity = '/communities';
static const String getCommunityList = '/projects/{projectId}/communities'; static const String getCommunityList = '/communities';
static const String getCommunityById = '/projects/{projectId}/communities/{communityId}'; static const String getCommunityById = '/communities/{communityId}';
static const String updateCommunity = '/projects/{projectId}/communities/{communityId}'; static const String updateCommunity = '/communities/{communityId}';
static const String deleteCommunity = '/projects/{projectId}communities/{communityId}'; static const String deleteCommunity = '/communities/{communityId}';
static const String getUserCommunities = '/projects/{projectId}/communities/user/{userUuid}'; static const String getUserCommunities = '/communities/user/{userUuid}';
static const String createUserCommunity = '/projects/{projectId}/communities/user'; static const String createUserCommunity = '/communities/user';
static const String getDeviceLogsByDate = static const String getDeviceLogsByDate =
'/device/report-logs/{uuid}?code={code}&startTime={startTime}&endTime={endTime}'; '/device/report-logs/{uuid}?code={code}&startTime={startTime}&endTime={endTime}';
@ -68,7 +68,7 @@ abstract class ApiEndpoints {
static const String getIconScene = '/scene/icon'; static const String getIconScene = '/scene/icon';
static const String createScene = '/scene/tap-to-run'; static const String createScene = '/scene/tap-to-run';
static const String createAutomation = '/automation'; static const String createAutomation = '/automation';
static const String getUnitScenes = '/projects/{projectId}/communities/{communityUuid}/spaces/{spaceUuid}/scenes'; static const String getUnitScenes = '/communities/{communityUuid}/spaces/{spaceUuid}/scenes';
static const String getAutomationDetails = '/automation/details/{automationId}'; static const String getAutomationDetails = '/automation/details/{automationId}';
static const String getScene = '/scene/tap-to-run/{sceneId}'; static const String getScene = '/scene/tap-to-run/{sceneId}';
static const String deleteScene = '/scene/tap-to-run/{sceneId}'; static const String deleteScene = '/scene/tap-to-run/{sceneId}';

View File

@ -1,3 +0,0 @@
class TempConst {
static const projectId = '0e62577c-06fa-41b9-8a92-99a21fbaf51c';
}

View File

@ -75,26 +75,26 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
), ),
), ),
items: <PopupMenuEntry>[ items: <PopupMenuEntry>[
// PopupMenuItem( PopupMenuItem(
// onTap: () {}, onTap: () {},
// child: ListTile( child: ListTile(
// leading: SvgPicture.asset(Assets.accountSetting), leading: SvgPicture.asset(Assets.accountSetting),
// title: Text( title: Text(
// "Account Settings", "Account Settings",
// style: context.textTheme.bodyMedium, style: context.textTheme.bodyMedium,
// ), ),
// ), ),
// ), ),
// PopupMenuItem( PopupMenuItem(
// onTap: () {}, onTap: () {},
// child: ListTile( child: ListTile(
// leading: SvgPicture.asset(Assets.settings), leading: SvgPicture.asset(Assets.settings),
// title: Text( title: Text(
// "Settings", "Settings",
// style: context.textTheme.bodyMedium, style: context.textTheme.bodyMedium,
// ), ),
// ), ),
// ), ),
PopupMenuItem( PopupMenuItem(
onTap: () { onTap: () {
showDialog( showDialog(
@ -211,10 +211,8 @@ class _UserDropdownMenuState extends State<UserDropdownMenu> {
elevation: 1, elevation: 1,
child: Text( child: Text(
'Logout', 'Logout',
style: Theme.of(context) style:
.textTheme Theme.of(context).textTheme.bodyMedium!.copyWith(fontSize: 12, color: Colors.white),
.bodyMedium!
.copyWith(fontSize: 12, color: Colors.white),
), ),
), ),
), ),