diff --git a/lib/pangea/activity_planner/activity_plan_model.dart b/lib/pangea/activity_planner/activity_plan_model.dart index 7b72b877e..978d448a6 100644 --- a/lib/pangea/activity_planner/activity_plan_model.dart +++ b/lib/pangea/activity_planner/activity_plan_model.dart @@ -44,8 +44,9 @@ class ActivityPlanModel { _roles = roles, _imageURL = imageURL; - String? get imageURL => - _imageURL != null ? "${Environment.cmsApi}$_imageURL" : null; + Uri? get imageURL => _imageURL != null + ? Uri.tryParse("${Environment.cmsApi}$_imageURL") + : null; Map get roles { if (_roles != null) return _roles!; diff --git a/lib/pangea/chat_settings/pages/edit_course.dart b/lib/pangea/chat_settings/pages/edit_course.dart index fea6057cf..c8a024ba1 100644 --- a/lib/pangea/chat_settings/pages/edit_course.dart +++ b/lib/pangea/chat_settings/pages/edit_course.dart @@ -204,8 +204,7 @@ class EditCourseController extends State { fit: BoxFit.cover, ) : ImageByUrl( - imageUrl: - _room?.avatar?.toString(), + imageUrl: _room?.avatar, width: 200.0, borderRadius: BorderRadius.circular(0.0), diff --git a/lib/pangea/common/widgets/url_image_widget.dart b/lib/pangea/common/widgets/url_image_widget.dart index 23874ab36..30bff2b9b 100644 --- a/lib/pangea/common/widgets/url_image_widget.dart +++ b/lib/pangea/common/widgets/url_image_widget.dart @@ -11,7 +11,7 @@ import 'package:fluffychat/widgets/matrix.dart'; import 'package:fluffychat/widgets/mxc_image.dart'; class ImageByUrl extends StatelessWidget { - final String? imageUrl; + final Uri? imageUrl; final double width; final BorderRadius borderRadius; final Widget? replacement; @@ -41,19 +41,19 @@ class ImageByUrl extends StatelessWidget { height: width, child: ClipRRect( borderRadius: borderRadius, - child: imageUrl!.startsWith("mxc") + child: imageUrl!.toString().startsWith("mxc") ? MxcImage( - uri: Uri.parse(imageUrl!), + uri: imageUrl, width: width, height: width, - cacheKey: imageUrl, + cacheKey: imageUrl.toString(), fit: BoxFit.cover, ) : CachedNetworkImage( width: width, height: width, fit: BoxFit.cover, - imageUrl: imageUrl!, + imageUrl: imageUrl.toString(), placeholder: ( context, url, diff --git a/lib/pangea/course_creation/selected_course_page.dart b/lib/pangea/course_creation/selected_course_page.dart index 34f913b08..00e40002a 100644 --- a/lib/pangea/course_creation/selected_course_page.dart +++ b/lib/pangea/course_creation/selected_course_page.dart @@ -112,7 +112,7 @@ class SelectedCourseController extends State }, ), ], - avatarUrl: course.imageUrl, + avatarUrl: course.imageUrl.toString(), spaceChild: 0, ) .then((spaceId) => completer.complete(spaceId)) diff --git a/lib/pangea/course_creation/selected_course_view.dart b/lib/pangea/course_creation/selected_course_view.dart index f94832370..dbafe7ac7 100644 --- a/lib/pangea/course_creation/selected_course_view.dart +++ b/lib/pangea/course_creation/selected_course_view.dart @@ -75,9 +75,8 @@ class SelectedCourseView extends StatelessWidget { ClipPath( clipper: MapClipper(), child: ImageByUrl( - imageUrl: controller - .widget.roomChunk?.avatarUrl - ?.toString() ?? + imageUrl: controller.widget + .roomChunk?.avatarUrl ?? course.imageUrl, width: 100.0, borderRadius: diff --git a/lib/pangea/course_plans/course_topics/course_topic_model.dart b/lib/pangea/course_plans/course_topics/course_topic_model.dart index 36e1404d1..aa2f3434d 100644 --- a/lib/pangea/course_plans/course_topics/course_topic_model.dart +++ b/lib/pangea/course_plans/course_topics/course_topic_model.dart @@ -79,9 +79,9 @@ class CourseTopicModel { return allLocationMedia; } - String? get imageUrl => loadedLocationMediaIds.isEmpty + Uri? get imageUrl => loadedLocationMediaIds.isEmpty ? null - : "${Environment.cmsApi}${loadedLocationMediaIds.first}"; + : Uri.tryParse("${Environment.cmsApi}${loadedLocationMediaIds.first}"); bool get activityListComplete => activityIds.length == loadedActivities.length; diff --git a/lib/pangea/course_plans/courses/course_plan_model.dart b/lib/pangea/course_plans/courses/course_plan_model.dart index f696c3a9b..f944739ab 100644 --- a/lib/pangea/course_plans/courses/course_plan_model.dart +++ b/lib/pangea/course_plans/courses/course_plan_model.dart @@ -127,9 +127,11 @@ class CoursePlanModel { uuids: mediaIds, ), ); - String? get imageUrl => loadedMediaUrls.mediaUrls.isEmpty + Uri? get imageUrl => loadedMediaUrls.mediaUrls.isEmpty ? loadedTopics.values .lastWhereOrNull((topic) => topic.imageUrl != null) ?.imageUrl - : "${Environment.cmsApi}${loadedMediaUrls.mediaUrls.first.url}"; + : Uri.tryParse( + "${Environment.cmsApi}${loadedMediaUrls.mediaUrls.first.url}", + ); } diff --git a/lib/pangea/login/pages/public_courses_page.dart b/lib/pangea/login/pages/public_courses_page.dart index 41a10a86a..86fe0e4e8 100644 --- a/lib/pangea/login/pages/public_courses_page.dart +++ b/lib/pangea/login/pages/public_courses_page.dart @@ -293,8 +293,7 @@ class PublicCoursesPageState extends State { spacing: 8.0, children: [ ImageByUrl( - imageUrl: - roomChunk.avatarUrl?.toString(), + imageUrl: roomChunk.avatarUrl, width: 58.0, borderRadius: BorderRadius.circular(10.0), diff --git a/lib/widgets/avatar.dart b/lib/widgets/avatar.dart index ae0e10471..aa1bf8867 100644 --- a/lib/widgets/avatar.dart +++ b/lib/widgets/avatar.dart @@ -106,7 +106,7 @@ class Avatar extends StatelessWidget { // #Pangea : !(mxContent.toString().startsWith('mxc://')) ? ImageByUrl( - imageUrl: mxContent.toString(), + imageUrl: mxContent, width: size, replacement: Center( child: Icon( diff --git a/pubspec.yaml b/pubspec.yaml index 0e30c0b85..0270e844f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ description: Learn a language while texting your friends. # Pangea# publish_to: none # On version bump also increase the build number for F-Droid -version: 4.1.16+2 +version: 4.1.16+3 environment: sdk: ">=3.0.0 <4.0.0"