remove warnings

This commit is contained in:
mohammad
2025-01-06 15:15:01 +03:00
parent d721f6f774
commit 8fd1259f9c
14 changed files with 67 additions and 84 deletions

View File

@ -13,6 +13,7 @@ final class RolesLoadingState extends RolesPermissionState {
@override @override
List<Object> get props => []; List<Object> get props => [];
} }
final class UsersLoadingState extends RolesPermissionState { final class UsersLoadingState extends RolesPermissionState {
@override @override
List<Object> get props => []; List<Object> get props => [];
@ -22,6 +23,7 @@ final class RolesLoadedState extends RolesPermissionState {
@override @override
List<Object> get props => []; List<Object> get props => [];
} }
final class UsersLoadedState extends RolesPermissionState { final class UsersLoadedState extends RolesPermissionState {
@override @override
List<Object> get props => []; List<Object> get props => [];
@ -68,9 +70,9 @@ final class SosAutomationReportErrorState extends RolesPermissionState {
} }
final class ChangeTapStatus extends RolesPermissionState { final class ChangeTapStatus extends RolesPermissionState {
bool select = true; final bool select;
ChangeTapStatus({required this.select}); const ChangeTapStatus({required this.select});
@override @override
List<Object> get props => [select]; List<Object> get props => [select];

View File

@ -149,8 +149,8 @@ class EditUserModel {
final String createdTime; // e.g. "8:41:43 AM" final String createdTime; // e.g. "8:41:43 AM"
final String status; // e.g. "invited" final String status; // e.g. "invited"
final String invitedBy; // e.g. "SUPER_ADMIN" final String invitedBy; // e.g. "SUPER_ADMIN"
final String phoneNumber; // can be empty final String? phoneNumber; // can be empty
final String jobTitle; // can be empty final String? jobTitle; // can be empty
final String roleType; // e.g. "ADMIN" final String roleType; // e.g. "ADMIN"
final List<UserSpaceModel> spaces; final List<UserSpaceModel> spaces;

View File

@ -29,7 +29,7 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
on<GetUserByIdEvent>(getUserById); on<GetUserByIdEvent>(getUserById);
on<ToggleNodeExpansion>(_onToggleNodeExpansion); on<ToggleNodeExpansion>(_onToggleNodeExpansion);
on<ToggleNodeCheck>(_onToggleNodeCheck); on<ToggleNodeCheck>(_onToggleNodeCheck);
on<EditInviteUsers>(_editInvitUser); on<EditInviteUsers>(_editInviteUser);
} }
void _validateBasicsStep(ValidateBasicsStep event, Emitter<UsersState> emit) { void _validateBasicsStep(ValidateBasicsStep event, Emitter<UsersState> emit) {
@ -88,7 +88,6 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
await CommunitySpaceManagementApi().fetchCommunities(); await CommunitySpaceManagementApi().fetchCommunities();
updatedCommunities = await Future.wait( updatedCommunities = await Future.wait(
communities.map((community) async { communities.map((community) async {
print(community.uuid);
List<SpaceModel> spaces = List<SpaceModel> spaces =
await _fetchSpacesForCommunity(community.uuid); await _fetchSpacesForCommunity(community.uuid);
spacesNodes = _buildTreeNodes(spaces); spacesNodes = _buildTreeNodes(spaces);
@ -102,7 +101,7 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
); );
}).toList(), }).toList(),
); );
emit(SpacesLoadedState()); emit(const SpacesLoadedState());
return updatedCommunities; return updatedCommunities;
} catch (e) { } catch (e) {
emit(ErrorState('Error loading communities and spaces: $e')); emit(ErrorState('Error loading communities and spaces: $e'));
@ -112,7 +111,7 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
List<TreeNode> _buildTreeNodes(List<SpaceModel> spaces) { List<TreeNode> _buildTreeNodes(List<SpaceModel> spaces) {
return spaces.map((space) { return spaces.map((space) {
List<TreeNode> childNodes = List<TreeNode> childNodes =
space.children != null ? _buildTreeNodes(space.children) : []; space.children.isNotEmpty ? _buildTreeNodes(space.children) : [];
return TreeNode( return TreeNode(
uuid: space.uuid!, uuid: space.uuid!,
title: space.name, title: space.name,
@ -212,7 +211,7 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
_sendInvitUser(SendInviteUsers event, Emitter<UsersState> emit) async { _sendInvitUser(SendInviteUsers event, Emitter<UsersState> emit) async {
try { try {
emit(UsersLoadingState()); emit(UsersLoadingState());
List<String> selectedIds = getSelectedIds(updatedCommunities) ?? []; List<String> selectedIds = getSelectedIds(updatedCommunities);
bool res = await UserPermissionApi().sendInviteUser( bool res = await UserPermissionApi().sendInviteUser(
email: emailController.text, email: emailController.text,
firstName: firstNameController.text, firstName: firstNameController.text,
@ -249,10 +248,10 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
} }
} }
_editInvitUser(EditInviteUsers event, Emitter<UsersState> emit) async { _editInviteUser(EditInviteUsers event, Emitter<UsersState> emit) async {
try { try {
emit(UsersLoadingState()); emit(UsersLoadingState());
List<String> selectedIds = getSelectedIds(updatedCommunities) ?? []; List<String> selectedIds = getSelectedIds(updatedCommunities);
bool res = await UserPermissionApi().editInviteUser( bool res = await UserPermissionApi().editInviteUser(
userId: event.userId, userId: event.userId,
firstName: firstNameController.text, firstName: firstNameController.text,
@ -383,8 +382,6 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
// Print all IDs and mark nodes in updatedCommunities // Print all IDs and mark nodes in updatedCommunities
debugPrint('Printing and marking nodes in updatedCommunities:'); debugPrint('Printing and marking nodes in updatedCommunities:');
_printAndMarkNodes(updatedCommunities, uuidsToMark); _printAndMarkNodes(updatedCommunities, uuidsToMark);
} else {
print('updatedCommunities is empty!');
} }
final roleId = roles final roleId = roles
.firstWhere((element) => .firstWhere((element) =>
@ -397,9 +394,7 @@ class UsersBloc extends Bloc<UsersEvent, UsersState> {
emit(ChangeStatusSteps()); emit(ChangeStatusSteps());
} else {} } else {}
} else {} } else {}
} catch (e) { } catch (_) {}
print("Failed to fetch user data: $e");
}
} }
void _printAndMarkNodes(List<TreeNode> nodes, List<String> uuidsToMark, void _printAndMarkNodes(List<TreeNode> nodes, List<String> uuidsToMark,

View File

@ -63,31 +63,31 @@ class GetBatchStatus extends UsersEvent {
//isEditUser:widget.userId!=''? false:true //isEditUser:widget.userId!=''? false:true
class CheckStepStatus extends UsersEvent { class CheckStepStatus extends UsersEvent {
final int? steps; final int? steps;
bool? isEditUser = false; final bool? isEditUser;
CheckStepStatus({this.steps, required this.isEditUser}); const CheckStepStatus({this.steps, required this.isEditUser});
@override @override
List<Object?> get props => [steps]; List<Object?> get props => [steps];
} }
class SearchAnode extends UsersEvent { class SearchAnode extends UsersEvent {
List<TreeNode>? nodes; final List<TreeNode>? nodes;
String? searchTerm; final String? searchTerm;
SearchAnode({this.nodes, this.searchTerm}); const SearchAnode({this.nodes, this.searchTerm});
@override @override
List<Object?> get props => [nodes, searchTerm]; List<Object?> get props => [nodes, searchTerm];
} }
class SearchPermission extends UsersEvent { class SearchPermission extends UsersEvent {
List<PermissionOption>? nodes; final List<PermissionOption>? nodes;
String? searchTerm; final String? searchTerm;
SearchPermission({this.nodes, this.searchTerm}); const SearchPermission({this.nodes, this.searchTerm});
@override @override
List<Object?> get props => [nodes, searchTerm]; List<Object?> get props => [nodes, searchTerm];
} }
class SelecteId extends UsersEvent { class SelectedId extends UsersEvent {
List<TreeNode>? nodes; final List<TreeNode>? nodes;
SelecteId({ const SelectedId({
this.nodes, this.nodes,
}); });
@override @override
@ -95,7 +95,7 @@ class SelecteId extends UsersEvent {
} }
class ValidateBasicsStep extends UsersEvent { class ValidateBasicsStep extends UsersEvent {
ValidateBasicsStep(); const ValidateBasicsStep();
@override @override
List<Object?> get props => []; List<Object?> get props => [];
} }
@ -116,7 +116,7 @@ class GetUserByIdEvent extends UsersEvent {
class ToggleNodeExpansion extends UsersEvent { class ToggleNodeExpansion extends UsersEvent {
final TreeNode node; final TreeNode node;
ToggleNodeExpansion({required this.node}); const ToggleNodeExpansion({required this.node});
@override @override
List<Object?> get props => [node]; List<Object?> get props => [node];
@ -125,14 +125,15 @@ class ToggleNodeExpansion extends UsersEvent {
class UpdateNodeCheckStatus extends UsersEvent { class UpdateNodeCheckStatus extends UsersEvent {
final TreeNode node; final TreeNode node;
UpdateNodeCheckStatus({required this.node}); const UpdateNodeCheckStatus({required this.node});
@override @override
List<Object?> get props => [node]; List<Object?> get props => [node];
} }
class ToggleNodeHighlightEvent extends UsersEvent { class ToggleNodeHighlightEvent extends UsersEvent {
final TreeNode node; final TreeNode node;
ToggleNodeHighlightEvent(this.node); const ToggleNodeHighlightEvent(this.node);
@override @override
List<Object?> get props => [node]; List<Object?> get props => [node];
} }
@ -155,14 +156,15 @@ class ClearSelectionsEvent extends UsersEvent {
class ToggleNodeCheckEvent extends UsersEvent { class ToggleNodeCheckEvent extends UsersEvent {
final TreeNode node; final TreeNode node;
ToggleNodeCheckEvent(this.node); const ToggleNodeCheckEvent(this.node);
@override @override
List<Object?> get props => []; List<Object?> get props => [];
} }
class ToggleNodeCheck extends UsersEvent { class ToggleNodeCheck extends UsersEvent {
final TreeNode node; final TreeNode node;
ToggleNodeCheck(this.node); const ToggleNodeCheck(this.node);
@override @override
List<Object?> get props => []; List<Object?> get props => [];
} }
@ -172,5 +174,3 @@ class EditUserEvent extends UsersEvent {
@override @override
List<Object?> get props => []; List<Object?> get props => [];
} }

View File

@ -1,5 +1,4 @@
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:syncrow_web/pages/roles_and_permission/model/roles_user_model.dart';
import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/model/tree_node_model.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/model/tree_node_model.dart';
sealed class UsersState extends Equatable { sealed class UsersState extends Equatable {
@ -32,7 +31,7 @@ final class SaveState extends UsersState {
} }
final class SpacesLoadedState extends UsersState { final class SpacesLoadedState extends UsersState {
SpacesLoadedState(); const SpacesLoadedState();
@override @override
List<Object> get props => []; List<Object> get props => [];
} }
@ -58,9 +57,9 @@ final class RolesErrorState extends UsersState {
/// automation reports /// automation reports
final class ChangeTapStatus extends UsersState { final class ChangeTapStatus extends UsersState {
bool select = true; final bool select;
ChangeTapStatus({required this.select}); const ChangeTapStatus({required this.select});
@override @override
List<Object> get props => [select]; List<Object> get props => [select];
@ -77,14 +76,16 @@ class BasicsStepInvalidState extends UsersState {
@override @override
List<Object> get props => []; List<Object> get props => [];
} }
final class ValidateBasics extends UsersState { final class ValidateBasics extends UsersState {
@override @override
List<Object> get props => []; List<Object> get props => [];
} }
class UsersLoadedState extends UsersState { class UsersLoadedState extends UsersState {
final List<TreeNode> updatedCommunities; final List<TreeNode> updatedCommunities;
UsersLoadedState({required this.updatedCommunities}); const UsersLoadedState({required this.updatedCommunities});
@override @override
List<Object> get props => []; List<Object> get props => [];
} }

View File

@ -16,7 +16,9 @@ class PermissionOption {
factory PermissionOption.fromJson(Map<String, dynamic> json) { factory PermissionOption.fromJson(Map<String, dynamic> json) {
return PermissionOption( return PermissionOption(
id: json['id'] ?? '', id: json['id'] ?? '',
title: json['title'].toString().toLowerCase().replaceAll("_", " ") ?? '', title: json['title'] != null
? json['title'].toString().toLowerCase().replaceAll("_", " ")
: '',
isChecked: json['isChecked'] ?? false, isChecked: json['isChecked'] ?? false,
isHighlighted: json['isHighlighted'] ?? false, isHighlighted: json['isHighlighted'] ?? false,
subOptions: (json['subOptions'] as List?) subOptions: (json['subOptions'] as List?)

View File

@ -11,8 +11,8 @@ import 'package:syncrow_web/utils/extension/build_context_x.dart';
import 'package:syncrow_web/utils/style.dart'; import 'package:syncrow_web/utils/style.dart';
class BasicsView extends StatelessWidget { class BasicsView extends StatelessWidget {
String? userId = ''; final String? userId;
BasicsView({super.key, this.userId}); const BasicsView({super.key, this.userId = ''});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocBuilder<UsersBloc, UsersState>(builder: (context, state) { return BlocBuilder<UsersBloc, UsersState>(builder: (context, state) {
@ -185,11 +185,12 @@ class BasicsView extends StatelessWidget {
Padding( Padding(
padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.all(8.0),
child: TextFormField( child: TextFormField(
enabled: userId!=''? false:true, enabled: userId != '' ? false : true,
onChanged: (value) { onChanged: (value) {
Future.delayed(const Duration(milliseconds: 200), () { Future.delayed(const Duration(milliseconds: 200), () {
_blocRole.add(CheckStepStatus(isEditUser:userId!=''? false:true)); _blocRole.add(CheckStepStatus(
_blocRole.add( ValidateBasicsStep()); isEditUser: userId != '' ? false : true));
_blocRole.add(ValidateBasicsStep());
}); });
}, },
controller: _blocRole.emailController, controller: _blocRole.emailController,

View File

@ -1,8 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.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/style.dart'; import 'package:syncrow_web/utils/style.dart';
Future<void> showPopUpFilterMenu({ Future<void> showPopUpFilterMenu({
@ -12,7 +10,6 @@ Future<void> showPopUpFilterMenu({
Function()? cancelButton, Function()? cancelButton,
required Map<String, bool> checkboxStates, required Map<String, bool> checkboxStates,
required RelativeRect position, required RelativeRect position,
// Function(String)? onTextFieldChanged,
Function()? onOkPressed, Function()? onOkPressed,
List<String>? list, List<String>? list,
}) async { }) async {

View File

@ -15,8 +15,6 @@ class RolesAndPermission extends StatelessWidget {
const RolesAndPermission({super.key}); const RolesAndPermission({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
return BlocBuilder<UsersBloc, UsersState>(builder: (context, state) { return BlocBuilder<UsersBloc, UsersState>(builder: (context, state) {
final _blocRole = BlocProvider.of<UsersBloc>(context); final _blocRole = BlocProvider.of<UsersBloc>(context);
return Container( return Container(

View File

@ -11,12 +11,10 @@ import 'package:syncrow_web/utils/extension/build_context_x.dart';
import 'package:syncrow_web/utils/style.dart'; import 'package:syncrow_web/utils/style.dart';
class SpacesAccessView extends StatelessWidget { class SpacesAccessView extends StatelessWidget {
String? userId = ''; final String? userId;
SpacesAccessView({super.key, this.userId}); const SpacesAccessView({super.key, this.userId = ''});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final size = MediaQuery.of(context).size;
return BlocBuilder<UsersBloc, UsersState>(builder: (context, state) { return BlocBuilder<UsersBloc, UsersState>(builder: (context, state) {
final _blocRole = BlocProvider.of<UsersBloc>(context); final _blocRole = BlocProvider.of<UsersBloc>(context);
return Container( return Container(

View File

@ -210,7 +210,7 @@ class UserTableBloc extends Bloc<UserTableEvent, UserTableState> {
final query = event.query.toLowerCase(); final query = event.query.toLowerCase();
final filteredUsers = initialUsers.where((user) { final filteredUsers = initialUsers.where((user) {
final fullName = "${user.firstName} ${user.lastName}".toLowerCase(); final fullName = "${user.firstName} ${user.lastName}".toLowerCase();
final email = user.email?.toLowerCase() ?? ""; final email = user.email.toLowerCase() ;
return fullName.contains(query) || email.contains(query); return fullName.contains(query) || email.contains(query);
}).toList(); }).toList();
emit(UsersLoadedState(users: filteredUsers)); emit(UsersLoadedState(users: filteredUsers));
@ -224,7 +224,7 @@ class UserTableBloc extends Bloc<UserTableEvent, UserTableState> {
final startIndex = (pageNumber - 1) * itemsPerPage; final startIndex = (pageNumber - 1) * itemsPerPage;
final endIndex = startIndex + itemsPerPage; final endIndex = startIndex + itemsPerPage;
if (startIndex >= users.length) { if (startIndex >= users.length) {
emit(UsersLoadedState(users: const [])); emit(const UsersLoadedState(users: []));
return; return;
} }
final paginatedUsers = users.sublist( final paginatedUsers = users.sublist(
@ -235,11 +235,11 @@ class UserTableBloc extends Bloc<UserTableEvent, UserTableState> {
} }
void _handlePageChange(ChangePage event, Emitter<UserTableState> emit) { void _handlePageChange(ChangePage event, Emitter<UserTableState> emit) {
final itemsPerPage = 10; const itemsPerPage = 10;
final startIndex = (event.pageNumber - 1) * itemsPerPage; final startIndex = (event.pageNumber - 1) * itemsPerPage;
final endIndex = startIndex + itemsPerPage; final endIndex = startIndex + itemsPerPage;
if (startIndex >= users.length) { if (startIndex >= users.length) {
emit(UsersLoadedState(users: [])); emit(const UsersLoadedState(users: []));
return; return;
} }
final paginatedUsers = users.sublist( final paginatedUsers = users.sublist(
@ -318,14 +318,3 @@ class UserTableBloc extends Bloc<UserTableEvent, UserTableState> {
emit(UsersLoadedState(users: initialUsers)); emit(UsersLoadedState(users: initialUsers));
} }
} }
// void _filterOptions(FilterOptionsEvent event, Emitter<UserTableState> emit) {
// try {
// final query = event.query.toLowerCase();
// final filteredOptions = event.fullOptions
// .where((option) => option.toLowerCase().contains(query))
// .toList();
// emit(FilterOptionsState(filteredOptions));
// } catch (e) {
// emit(ErrorState(e.toString()));
// }
// }

View File

@ -26,8 +26,8 @@ final class RolesLoadedState extends UserTableState {
} }
final class UsersLoadedState extends UserTableState { final class UsersLoadedState extends UserTableState {
List<RolesUserModel> users = []; final List<RolesUserModel> users;
UsersLoadedState({required this.users}); const UsersLoadedState({required this.users});
@override @override
List<Object> get props => [users]; List<Object> get props => [users];
} }
@ -73,9 +73,9 @@ final class SosAutomationReportErrorState extends UserTableState {
} }
final class ChangeTapStatus extends UserTableState { final class ChangeTapStatus extends UserTableState {
bool select = true; final bool select;
ChangeTapStatus({required this.select}); const ChangeTapStatus({required this.select});
@override @override
List<Object> get props => [select]; List<Object> get props => [select];
@ -84,7 +84,7 @@ final class ChangeTapStatus extends UserTableState {
class FilterOptionsState extends UserTableState { class FilterOptionsState extends UserTableState {
final List<String> filteredOptions; final List<String> filteredOptions;
FilterOptionsState(this.filteredOptions); const FilterOptionsState(this.filteredOptions);
@override @override
List<Object> get props => [filteredOptions]; List<Object> get props => [filteredOptions];

View File

@ -412,7 +412,7 @@ class UsersPage extends StatelessWidget {
rows: state.users.map((user) { rows: state.users.map((user) {
return [ return [
Text('${user.firstName} ${user.lastName}'), Text('${user.firstName} ${user.lastName}'),
Text(user.email ?? ''), Text(user.email ),
Text(user.jobTitle ?? ''), Text(user.jobTitle ?? ''),
Text(user.roleType ?? ''), Text(user.roleType ?? ''),
Text(user.createdDate ?? ''), Text(user.createdDate ?? ''),
@ -430,11 +430,11 @@ class UsersPage extends StatelessWidget {
userId: user.uuid, userId: user.uuid,
onTap: user.status != "invited" onTap: user.status != "invited"
? () { ? () {
final newStatus = user.status == 'active' // final newStatus = user.status == 'active'
? 'disabled' // ? 'disabled'
: user.status == 'disabled' // : user.status == 'disabled'
? 'invited' // ? 'invited'
: 'active'; // : 'active';
context.read<UserTableBloc>().add( context.read<UserTableBloc>().add(
ChangeUserStatus( ChangeUserStatus(
userId: user.uuid, userId: user.uuid,
@ -501,7 +501,7 @@ class UsersPage extends StatelessWidget {
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: [ children: [
Container( SizedBox(
width: 500, width: 500,
child: NumberPagination( child: NumberPagination(
buttonRadius: 10, buttonRadius: 10,

View File

@ -131,7 +131,7 @@ class UserPermissionApi {
} }
} }
Future<EditUserModel> fetchUserById(userUuid) async { Future<EditUserModel?> fetchUserById(userUuid) async {
final response = await _httpService.get( final response = await _httpService.get(
path: ApiEndpoints.getUserById.replaceAll("{userUuid}", userUuid), path: ApiEndpoints.getUserById.replaceAll("{userUuid}", userUuid),
showServerMessage: true, showServerMessage: true,