forked from eatvio/eatvio_app
42 lines
1.7 KiB
Dart
42 lines
1.7 KiB
Dart
import 'package:eatvio_app/core/app_config.dart';
|
|
import 'package:eatvio_app/core/locator_service.dart';
|
|
import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart';
|
|
import 'package:eatvio_app/features/feed/models/feed_blog_post_model.dart';
|
|
import 'package:eatvio_app/features/feed/models/post_feed_pagination_model.dart';
|
|
|
|
class PostFeedMapper {
|
|
static FeedBlogPostModel fromPostFeedItem(PostFeedItemModel item, {int? currentUserId}) {
|
|
return FeedBlogPostModel(
|
|
id: item.postId,
|
|
state: item.postState,
|
|
image: resolveMediaUrl(item.postImageUrl),
|
|
description: item.postTextMd ?? item.postShortDescription ?? '',
|
|
author: Author(
|
|
authorSlug: item.postAuthorDetails?.slug ?? '',
|
|
authorName: item.postAuthorName,
|
|
authorProfileIcon: resolveMediaUrl(item.postAuthorImageUrl),
|
|
authorIsMe: currentUserId != null && item.postAuthorId == currentUserId,
|
|
isEntitySubscribedByMe: item.isEntitySubscribedByMe,
|
|
),
|
|
videoUrl: '',
|
|
createdAt: item.postCreatedAt,
|
|
updatedAt: item.updatedAt,
|
|
title: item.postTitle,
|
|
totalLikes: item.postLikesCount,
|
|
totalViews: item.postViewsCount,
|
|
totalComments: item.postCommentsCount,
|
|
wasLikedByMe: item.postIsLikedByUser,
|
|
images: item.images,
|
|
videoEmbedUrl: item.videoEmbedUrl,
|
|
videoUrlThumb: item.videoUrlThumb,
|
|
);
|
|
}
|
|
|
|
static String resolveMediaUrl(String? url) {
|
|
if (url == null || url.isEmpty) return '';
|
|
if (url.startsWith('http://') || url.startsWith('https://')) return url;
|
|
if (url.startsWith('/')) return '${sl<AppConfig>().baseUrl}$url';
|
|
return '${sl<AppConfig>().baseUrl}/storage/$url';
|
|
}
|
|
}
|