From 52d114ff498602bd77b97c98f9210df15a2a6e5d Mon Sep 17 00:00:00 2001 From: TriptiMirani Date: Tue, 22 Apr 2025 18:03:43 +0530 Subject: [PATCH] fix: assessment list screen icons rendering --- patient/assets/illustrations/i9n_adhd.png | Bin 0 -> 8491 bytes patient/assets/illustrations/i9n_aq10.png | Bin 0 -> 7259 bytes patient/assets/illustrations/i9n_autism.png | Bin 0 -> 7326 bytes patient/lib/gen/assets.gen.dart | 20 ++-- .../assessments/assessment_screen.dart | 106 ++++++++---------- .../assessments/widgets/assessment_card.dart | 60 +++++----- .../assessments/widgets/assessment_icon.dart | 28 ++++- patient/lib/provider/assessment_provider.dart | 29 +++-- .../supabase_assessments_repository.dart | 54 ++++++++- 9 files changed, 174 insertions(+), 123 deletions(-) create mode 100644 patient/assets/illustrations/i9n_adhd.png create mode 100644 patient/assets/illustrations/i9n_aq10.png create mode 100644 patient/assets/illustrations/i9n_autism.png diff --git a/patient/assets/illustrations/i9n_adhd.png b/patient/assets/illustrations/i9n_adhd.png new file mode 100644 index 0000000000000000000000000000000000000000..5f12c349e33880b1b8d4d7992586b999e2379d62 GIT binary patch literal 8491 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 Z{{e~+5Al0Y`LO^1002ovPDHLkV1l1VWZVD% literal 0 HcmV?d00001 diff --git a/patient/assets/illustrations/i9n_aq10.png b/patient/assets/illustrations/i9n_aq10.png new file mode 100644 index 0000000000000000000000000000000000000000..4c85cf8ffcaa25aad9162cfcf0d5966a44294c43 GIT binary patch literal 7259 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 literal 0 HcmV?d00001 diff --git a/patient/assets/illustrations/i9n_autism.png b/patient/assets/illustrations/i9n_autism.png new file mode 100644 index 0000000000000000000000000000000000000000..fef969609267207f81b16ad03479f7a244129688 GIT binary patch literal 7326 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 literal 0 HcmV?d00001 diff --git a/patient/lib/gen/assets.gen.dart b/patient/lib/gen/assets.gen.dart index 3f9b8d6..3185966 100644 --- a/patient/lib/gen/assets.gen.dart +++ b/patient/lib/gen/assets.gen.dart @@ -63,17 +63,17 @@ class $AssetsIllustrationsGen { SvgGenImage get i9nActivities => const SvgGenImage('assets/illustrations/i9n_activities.svg'); - /// File path: assets/illustrations/i9n_adhd.svg - SvgGenImage get i9nAdhd => - const SvgGenImage('assets/illustrations/i9n_adhd.svg'); + /// File path: assets/illustrations/i9n_adhd.png + AssetGenImage get i9nAdhd => + const AssetGenImage('assets/illustrations/i9n_adhd.png'); - /// File path: assets/illustrations/i9n_aq10.svg - SvgGenImage get i9nAq10 => - const SvgGenImage('assets/illustrations/i9n_aq10.svg'); + /// File path: assets/illustrations/i9n_aq10.png + AssetGenImage get i9nAq10 => + const AssetGenImage('assets/illustrations/i9n_aq10.png'); - /// File path: assets/illustrations/i9n_autism.svg - SvgGenImage get i9nAutism => - const SvgGenImage('assets/illustrations/i9n_autism.svg'); + /// File path: assets/illustrations/i9n_autism.png + AssetGenImage get i9nAutism => + const AssetGenImage('assets/illustrations/i9n_autism.png'); /// File path: assets/illustrations/i9n_goals.svg SvgGenImage get i9nGoals => @@ -88,7 +88,7 @@ class $AssetsIllustrationsGen { const SvgGenImage('assets/illustrations/i9n_milestones.svg'); /// List of all assets - List get values => [ + List get values => [ i9nActivities, i9nAdhd, i9nAq10, diff --git a/patient/lib/presentation/assessments/assessment_screen.dart b/patient/lib/presentation/assessments/assessment_screen.dart index 3f4fe6d..7f8971e 100644 --- a/patient/lib/presentation/assessments/assessment_screen.dart +++ b/patient/lib/presentation/assessments/assessment_screen.dart @@ -5,8 +5,6 @@ import 'package:patient/model/assessment_models/assessment_models.dart'; import 'package:patient/presentation/widgets/snackbar_service.dart'; import 'package:patient/provider/assessment_provider.dart'; import 'package:provider/provider.dart'; -import 'package:patient/presentation/result/result.dart'; - class AssessmentScreen extends StatefulWidget { const AssessmentScreen({ @@ -26,25 +24,22 @@ class AssessmentScreenState extends State { super.initState(); } - @override - void didChangeDependencies() { - super.didChangeDependencies(); - WidgetsBinding.instance.addPostFrameCallback((_) { - final assessmentProvider = context.read(); - if (assessmentProvider.submitAssessmentStatus.isSuccess) { - SnackbarService.showSuccess( - '${assessmentProvider.assessmentResultModel?.message}'); - } else if (assessmentProvider.submitAssessmentStatus.isFailure) { - SnackbarService.showError( - 'Something went wrong. Please try again later.'); - } - }); + void _handleSubmit() async { + final assessmentProvider = context.read(); + await assessmentProvider.submitAssessment(); + + if (assessmentProvider.submitAssessmentStatus.isSuccess) { + SnackbarService.showSuccess( + '${assessmentProvider.assessmentResultModel?.message}'); + } else if (assessmentProvider.submitAssessmentStatus.isFailure) { + final errorMessage = assessmentProvider.errorMessage ?? + 'Something went wrong. Please try again later.'; + SnackbarService.showError(errorMessage); + } } @override Widget build(BuildContext context) { - Provider.of(context, listen: true) - .submitAssessmentStatus; return Scaffold( body: SafeArea( child: Consumer( @@ -98,36 +93,33 @@ class AssessmentScreenState extends State { ), const SizedBox(height: 20), Center( - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 25), - child: SizedBox( - width: double.infinity, - height: 50, - child: ElevatedButton( - onPressed: () { - - context.read().submitAssessment(); - - }, - style: ElevatedButton.styleFrom( - backgroundColor: AppTheme.secondaryColor, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(30), + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 25), + child: SizedBox( + width: double.infinity, + height: 50, + child: ElevatedButton( + onPressed: _handleSubmit, + style: ElevatedButton.styleFrom( + backgroundColor: AppTheme.secondaryColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30), + ), + elevation: 2, + padding: const EdgeInsets.symmetric(vertical: 12), ), - elevation: 2, // Small shadow effect - padding: const EdgeInsets.symmetric(vertical: 12), - ), - child: const Text( - 'Submit Assessment', - style: TextStyle( - fontSize: 17, - color: Colors.white, - fontWeight: FontWeight.bold, + child: const Text( + 'Submit Assessment', + style: TextStyle( + fontSize: 17, + color: Colors.white, + fontWeight: FontWeight.bold, + ), ), ), ), ), - )), + ), ], ), ); @@ -152,7 +144,6 @@ class QuestionCard extends StatelessWidget { @override Widget build(BuildContext context) { - return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -195,23 +186,22 @@ class QuestionCard extends StatelessWidget { side: const BorderSide( color: Color(0xFF666666), width: 1.5, - ), - Expanded( - child: Text( - optionText, - style: const TextStyle( - fontSize: 14, - color: AppTheme.subtitleColor, - ), + ), + Expanded( + child: Text( + optionText, + style: const TextStyle( + fontSize: 14, + color: AppTheme.subtitleColor, ), ), - ], - ), - ); - }), - ], - ), + ), + ], + ), + ); + }), + ], ); } -} \ No newline at end of file +} diff --git a/patient/lib/presentation/assessments/widgets/assessment_card.dart b/patient/lib/presentation/assessments/widgets/assessment_card.dart index b34c217..acc0ecd 100644 --- a/patient/lib/presentation/assessments/widgets/assessment_card.dart +++ b/patient/lib/presentation/assessments/widgets/assessment_card.dart @@ -24,40 +24,36 @@ class AssessmentCard extends StatelessWidget { borderRadius: BorderRadius.circular(16), ), child: Padding( - padding: const EdgeInsets.only(top: 18.0, left: 18.0, right: 18.0), - child: Row( + padding: const EdgeInsets.all(18.0), + child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - assessment.name, - style: const TextStyle( - fontSize: 16, - fontWeight: FontWeight.w700, - color: AppTheme.primaryColor, - ), - ), - const SizedBox(height: 8), - Text( - assessment.description, - style: const TextStyle( - fontSize: 12, - fontWeight: FontWeight.w500, - color: Colors.black, - ), - ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - AssessmentIcon( - icon: assessment.imageUrl, - ), - ], - ), - ], + Text( + assessment.name, + style: const TextStyle( + fontSize: 16, + fontWeight: FontWeight.w700, + color: AppTheme.primaryColor, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 8), + Text( + assessment.description, + style: const TextStyle( + fontSize: 12, + fontWeight: FontWeight.w500, + color: Colors.black, + ), + maxLines: 3, + overflow: TextOverflow.ellipsis, + ), + const SizedBox(height: 16), + Align( + alignment: Alignment.centerRight, + child: AssessmentIcon( + icon: assessment.imageUrl, ), ), ], diff --git a/patient/lib/presentation/assessments/widgets/assessment_icon.dart b/patient/lib/presentation/assessments/widgets/assessment_icon.dart index 34e8b28..a55ecdb 100644 --- a/patient/lib/presentation/assessments/widgets/assessment_icon.dart +++ b/patient/lib/presentation/assessments/widgets/assessment_icon.dart @@ -10,11 +10,27 @@ class AssessmentIcon extends StatelessWidget { @override Widget build(BuildContext context) { - return Image.network( - icon, - width: 80, - height: 80, - fit: BoxFit.contain, - ); + // Check if the icon is a network URL or an asset path + if (icon.startsWith('http')) { + return Image.network( + icon, + width: 80, + height: 80, + fit: BoxFit.contain, + errorBuilder: (context, error, stackTrace) { + return const Icon(Icons.error_outline, size: 80); + }, + ); + } else { + return Image.asset( + icon, + width: 80, + height: 80, + fit: BoxFit.contain, + errorBuilder: (context, error, stackTrace) { + return const Icon(Icons.error_outline, size: 80); + }, + ); + } } } diff --git a/patient/lib/provider/assessment_provider.dart b/patient/lib/provider/assessment_provider.dart index 005bca9..5ad4f5f 100644 --- a/patient/lib/provider/assessment_provider.dart +++ b/patient/lib/provider/assessment_provider.dart @@ -15,34 +15,38 @@ class AssessmentProvider with ChangeNotifier { String _selectedAssesssmentId = ''; - AssessmentAnswerModel _assessmentAnswerModel = AssessmentAnswerModel(questions: [], assessmentId: ''); + AssessmentAnswerModel _assessmentAnswerModel = + AssessmentAnswerModel(questions: [], assessmentId: ''); AssessmentAnswerModel? get assessmentAnswerModel => _assessmentAnswerModel; - ApiStatus _submitAssessmentStatus = ApiStatus.initial; + ApiStatus _submitAssessmentStatus = ApiStatus.initial; ApiStatus get submitAssessmentStatus => _submitAssessmentStatus; + String? _errorMessage; + String? get errorMessage => _errorMessage; + AssessmentResultModel? _assessmentResultModel; AssessmentResultModel? get assessmentResultModel => _assessmentResultModel; - - set assessmentAnswers(AssessmentQuestionAnswerModel answers) { - final index = _assessmentAnswerModel.questions.indexWhere((element) => element.questionId == answers.questionId); - if(index != -1) { + set assessmentAnswers(AssessmentQuestionAnswerModel answers) { + final index = _assessmentAnswerModel.questions + .indexWhere((element) => element.questionId == answers.questionId); + if (index != -1) { _assessmentAnswerModel.questions[index] = answers; } else { _assessmentAnswerModel.questions.add(answers); } notifyListeners(); - } + } String get selectedAssessmentId => _selectedAssesssmentId; set selectedAssessmentId(String value) { _selectedAssesssmentId = value; - _assessmentAnswerModel = _assessmentAnswerModel.copyWith(assessmentId: value, questions: []); + _assessmentAnswerModel = + _assessmentAnswerModel.copyWith(assessmentId: value, questions: []); notifyListeners(); } - void fetchAllAssessments() async { final result = await _repository.fetchAllAssessments(); if (result is ActionResultSuccess) { @@ -54,15 +58,18 @@ class AssessmentProvider with ChangeNotifier { //implement the submitAssessment method to submit the assessment when the submitted_assessment table is created Future submitAssessment() async { _submitAssessmentStatus = ApiStatus.initial; + _errorMessage = null; notifyListeners(); - final result = await _repository.submitAssessment(_assessmentAnswerModel.toEntity()); + + final result = + await _repository.submitAssessment(_assessmentAnswerModel.toEntity()); if (result is ActionResultSuccess) { _submitAssessmentStatus = ApiStatus.success; _assessmentResultModel = result.data; } else { _submitAssessmentStatus = ApiStatus.failure; + _errorMessage = (result as ActionResultFailure).errorMessage; } notifyListeners(); } - } diff --git a/patient/lib/repository/supabase_assessments_repository.dart b/patient/lib/repository/supabase_assessments_repository.dart index c41b0b4..5bf105c 100644 --- a/patient/lib/repository/supabase_assessments_repository.dart +++ b/patient/lib/repository/supabase_assessments_repository.dart @@ -19,7 +19,7 @@ class SupabaseAssessmentsRepository implements AssessmentsRepository { .eq('id', id) .limit(1) .maybeSingle(); -print('Response: $response'); + print('Response: $response'); return response != null ? [response] : []; } @@ -39,8 +39,26 @@ print('Response: $response'); @override Future submitAssessment(AssessmentAnswerEntity answers) async { try { + // Validate that all questions have been answered + if (answers.questions.isEmpty) { + return ActionResultFailure( + errorMessage: 'Please answer all questions before submitting', + statusCode: 400, + ); + } + + // Check for unanswered questions + final unansweredQuestions = + answers.questions.where((q) => q.answerId.isEmpty).toList(); + if (unansweredQuestions.isNotEmpty) { + return ActionResultFailure( + errorMessage: 'Please answer all questions before submitting', + statusCode: 400, + ); + } + final jwtToken = dotenv.env['SUPABASE_ANON_KEY']!; - final resposne = await _supabase.functions.invoke( + final response = await _supabase.functions.invoke( 'evaluate-assessments', headers: { 'Content-Type': 'application/json', @@ -48,15 +66,39 @@ print('Response: $response'); }, body: answers.toMap(), ); - if (resposne.data != null) { - final data = AssessmentResultEntityMapper.fromMap(resposne.data); + + if (response.data != null) { + final data = AssessmentResultEntityMapper.fromMap(response.data); return ActionResultSuccess(data: data.toModel(), statusCode: 200); } else { return ActionResultFailure( - errorMessage: 'Some error Occurred', statusCode: 400); + errorMessage: 'Failed to evaluate assessment. Please try again.', + statusCode: 400, + ); } } catch (e) { - return ActionResultFailure(errorMessage: e.toString(), statusCode: 500); + if (e.toString().contains('NetworkError')) { + return ActionResultFailure( + errorMessage: 'Network error. Please check your internet connection.', + statusCode: 500, + ); + } else if (e.toString().contains('401')) { + return ActionResultFailure( + errorMessage: 'Authentication error. Please log in again.', + statusCode: 401, + ); + } else if (e.toString().contains('404')) { + return ActionResultFailure( + errorMessage: + 'Server error: Assessment evaluation service is not available. Please try again later.', + statusCode: 404, + ); + } else { + return ActionResultFailure( + errorMessage: 'An unexpected error occurred: ${e.toString()}', + statusCode: 500, + ); + } } } }