From 58e6aa32983625ead91c836a5649f6c4bb6465d7 Mon Sep 17 00:00:00 2001 From: Wilson Date: Tue, 2 Sep 2025 09:07:22 -0400 Subject: [PATCH] fix: add authorization header and web image fetch method for activity suggestion cards (#3839) * add authorization header and web image fetch method for all activity images * formatting --------- Co-authored-by: ggurdin Co-authored-by: ggurdin <46800240+ggurdin@users.noreply.github.com> --- .../activity_plan_card.dart | 17 +++++++++ .../activity_suggestion_card.dart | 10 ++++++ .../activity_suggestion_dialog_content.dart | 16 +++++++++ .../course_plans/course_plans_repo.dart | 35 ++++++++----------- .../course_settings/course_settings.dart | 11 ++++++ 5 files changed, 69 insertions(+), 20 deletions(-) diff --git a/lib/pangea/activity_generator/activity_plan_card.dart b/lib/pangea/activity_generator/activity_plan_card.dart index 95e4d6c9d..8ff6d621a 100644 --- a/lib/pangea/activity_generator/activity_plan_card.dart +++ b/lib/pangea/activity_generator/activity_plan_card.dart @@ -1,6 +1,9 @@ +// ignore_for_file: depend_on_referenced_packages + import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; +import 'package:cached_network_image_platform_interface/cached_network_image_platform_interface.dart'; import 'package:go_router/go_router.dart'; import 'package:material_symbols_icons/symbols.dart'; @@ -13,6 +16,7 @@ import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_en import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/mxc_image.dart'; class ActivityPlanCard extends StatelessWidget { @@ -95,6 +99,12 @@ class ActivityPlanCard extends StatelessWidget { ? CachedNetworkImage( fit: BoxFit.cover, imageUrl: controller.imageURL!, + imageRenderMethodForWeb: + ImageRenderMethodForWeb.HttpGet, + httpHeaders: { + 'Authorization': + 'Bearer ${MatrixState.pangeaController.userController.accessToken}', + }, placeholder: (context, url) { return const Center( child: @@ -186,8 +196,15 @@ class ActivityPlanCard extends StatelessWidget { fit: BoxFit.cover, ) : CachedNetworkImage( + imageRenderMethodForWeb: + ImageRenderMethodForWeb + .HttpGet, imageUrl: controller .updatedActivity.imageURL!, + httpHeaders: { + 'Authorization': + 'Bearer ${MatrixState.pangeaController.userController.accessToken}', + }, fit: BoxFit.cover, width: 24.0, height: 24.0, diff --git a/lib/pangea/activity_suggestions/activity_suggestion_card.dart b/lib/pangea/activity_suggestions/activity_suggestion_card.dart index 7096175f8..bc79c938f 100644 --- a/lib/pangea/activity_suggestions/activity_suggestion_card.dart +++ b/lib/pangea/activity_suggestions/activity_suggestion_card.dart @@ -1,9 +1,13 @@ +// ignore_for_file: depend_on_referenced_packages + import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; +import 'package:cached_network_image_platform_interface/cached_network_image_platform_interface.dart'; import 'package:fluffychat/pangea/activity_planner/activity_plan_model.dart'; import 'package:fluffychat/pangea/activity_planner/activity_planner_builder.dart'; +import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/mxc_image.dart'; class ActivitySuggestionCard extends StatelessWidget { @@ -63,6 +67,12 @@ class ActivitySuggestionCard extends StatelessWidget { ) : CachedNetworkImage( imageUrl: activity.imageURL!, + imageRenderMethodForWeb: + ImageRenderMethodForWeb.HttpGet, + httpHeaders: { + 'Authorization': + 'Bearer ${MatrixState.pangeaController.userController.accessToken}', + }, placeholder: (context, url) => const Center( child: CircularProgressIndicator(), ), diff --git a/lib/pangea/activity_suggestions/activity_suggestion_dialog_content.dart b/lib/pangea/activity_suggestions/activity_suggestion_dialog_content.dart index 7dce265f7..f5154d4e9 100644 --- a/lib/pangea/activity_suggestions/activity_suggestion_dialog_content.dart +++ b/lib/pangea/activity_suggestions/activity_suggestion_dialog_content.dart @@ -1,6 +1,9 @@ +// ignore_for_file: depend_on_referenced_packages + import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; +import 'package:cached_network_image_platform_interface/cached_network_image_platform_interface.dart'; import 'package:collection/collection.dart'; import 'package:material_symbols_icons/symbols.dart'; @@ -12,6 +15,7 @@ import 'package:fluffychat/pangea/chat_settings/widgets/language_level_dropdown. import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/widgets/avatar.dart'; +import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/mxc_image.dart'; class ActivitySuggestionDialogContent extends StatelessWidget { @@ -68,6 +72,12 @@ class _ActivitySuggestionDialogImage extends StatelessWidget { fit: BoxFit.cover, ) : CachedNetworkImage( + imageRenderMethodForWeb: + ImageRenderMethodForWeb.HttpGet, + httpHeaders: { + 'Authorization': + 'Bearer ${MatrixState.pangeaController.userController.accessToken}', + }, imageUrl: activityController.updatedActivity.imageURL!, fit: BoxFit.cover, placeholder: ( @@ -628,6 +638,12 @@ class _ActivitySuggestionLaunchContent extends StatelessWidget { fit: BoxFit.cover, ) : CachedNetworkImage( + imageRenderMethodForWeb: + ImageRenderMethodForWeb.HttpGet, + httpHeaders: { + 'Authorization': + 'Bearer ${MatrixState.pangeaController.userController.accessToken}', + }, imageUrl: activityController.updatedActivity.imageURL!, fit: BoxFit.cover, width: 24.0, diff --git a/lib/pangea/course_plans/course_plans_repo.dart b/lib/pangea/course_plans/course_plans_repo.dart index 51bf3bfb1..5f31fd383 100644 --- a/lib/pangea/course_plans/course_plans_repo.dart +++ b/lib/pangea/course_plans/course_plans_repo.dart @@ -1,3 +1,5 @@ +import 'package:get_storage/get_storage.dart'; + import 'package:fluffychat/pangea/common/config/environment.dart'; import 'package:fluffychat/pangea/course_plans/course_plan_model.dart'; import 'package:fluffychat/pangea/learning_settings/enums/language_level_type_enum.dart'; @@ -10,7 +12,6 @@ import 'package:fluffychat/pangea/payload_client/models/course_plan/cms_course_p import 'package:fluffychat/pangea/payload_client/models/course_plan/cms_course_plan_topic_location.dart'; import 'package:fluffychat/pangea/payload_client/payload_client.dart'; import 'package:fluffychat/widgets/matrix.dart'; -import 'package:get_storage/get_storage.dart'; class CourseFilter { final LanguageModel? targetLanguage; @@ -195,25 +196,19 @@ class CoursePlansRepo { static Future _fromCmsCoursePlan( CmsCoursePlan cmsCoursePlan, ) async { - try { - final medias = await _getMedia(cmsCoursePlan); - final topics = await _getTopics(cmsCoursePlan); - final locations = await _getTopicLocations(topics ?? []); - final activities = await _getTopicActivities(topics ?? []); - final activityMedias = await _getActivityMedia(activities ?? []); - return CoursePlanModel.fromCmsDocs( - cmsCoursePlan, - medias, - topics, - locations, - activities, - activityMedias, - ); - } catch (e, stack) { - print(e); - print(stack); - rethrow; - } + final medias = await _getMedia(cmsCoursePlan); + final topics = await _getTopics(cmsCoursePlan); + final locations = await _getTopicLocations(topics ?? []); + final activities = await _getTopicActivities(topics ?? []); + final activityMedias = await _getActivityMedia(activities ?? []); + return CoursePlanModel.fromCmsDocs( + cmsCoursePlan, + medias, + topics, + locations, + activities, + activityMedias, + ); } static Future?> _getMedia( diff --git a/lib/pangea/course_settings/course_settings.dart b/lib/pangea/course_settings/course_settings.dart index 7ee84c419..bd947215f 100644 --- a/lib/pangea/course_settings/course_settings.dart +++ b/lib/pangea/course_settings/course_settings.dart @@ -1,6 +1,9 @@ +// ignore_for_file: depend_on_referenced_packages + import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; +import 'package:cached_network_image_platform_interface/cached_network_image_platform_interface.dart'; import 'package:collection/collection.dart'; import 'package:matrix/matrix.dart'; @@ -15,6 +18,7 @@ import 'package:fluffychat/pangea/course_plans/course_plan_builder.dart'; import 'package:fluffychat/pangea/course_plans/course_plan_room_extension.dart'; import 'package:fluffychat/pangea/course_settings/pin_clipper.dart'; import 'package:fluffychat/pangea/course_settings/topic_participant_list.dart'; +import 'package:fluffychat/widgets/matrix.dart'; class CourseSettings extends StatelessWidget { final Room room; @@ -89,6 +93,13 @@ class CourseSettings extends StatelessWidget { clipper: PinClipper(), child: topic.imageUrl != null ? CachedNetworkImage( + imageRenderMethodForWeb: + ImageRenderMethodForWeb + .HttpGet, + httpHeaders: { + 'Authorization': + 'Bearer ${MatrixState.pangeaController.userController.accessToken}', + }, width: 54.0, height: 54.0, fit: BoxFit.cover,