diff --git a/app/src/main/java/com/codekotliners/memify/core/mappers/PostDtoMapper.kt b/app/src/main/java/com/codekotliners/memify/core/mappers/PostDtoMapper.kt index 002dce6a..95a457cc 100644 --- a/app/src/main/java/com/codekotliners/memify/core/mappers/PostDtoMapper.kt +++ b/app/src/main/java/com/codekotliners/memify/core/mappers/PostDtoMapper.kt @@ -15,6 +15,7 @@ fun PostDto.toPost(user: User, isLiked: Boolean): Post = width = width, isLiked = isLiked, author = user, + createdAt = createdAt, ) fun Post.toPostDto(): PostDto = @@ -26,4 +27,5 @@ fun Post.toPostDto(): PostDto = templateId = templateId, height = height, width = width, + createdAt = createdAt, ) diff --git a/app/src/main/java/com/codekotliners/memify/core/models/Post.kt b/app/src/main/java/com/codekotliners/memify/core/models/Post.kt index bf3c63e2..82398127 100644 --- a/app/src/main/java/com/codekotliners/memify/core/models/Post.kt +++ b/app/src/main/java/com/codekotliners/memify/core/models/Post.kt @@ -10,4 +10,5 @@ data class Post( val width: Int, val isLiked: Boolean, val author: User, + val createdAt: Long? = 0L, ) diff --git a/app/src/main/java/com/codekotliners/memify/core/network/models/PostDto.kt b/app/src/main/java/com/codekotliners/memify/core/network/models/PostDto.kt index 0f9c4c40..739dbd1e 100644 --- a/app/src/main/java/com/codekotliners/memify/core/network/models/PostDto.kt +++ b/app/src/main/java/com/codekotliners/memify/core/network/models/PostDto.kt @@ -8,6 +8,7 @@ data class PostDto( val templateId: String, val height: Int, val width: Int, + val createdAt: Long? = null, ) { fun toMap(): Map = mapOf( diff --git a/app/src/main/java/com/codekotliners/memify/core/usecases/PublishImageUseCase.kt b/app/src/main/java/com/codekotliners/memify/core/usecases/PublishImageUseCase.kt index 271e4631..56f08e2e 100644 --- a/app/src/main/java/com/codekotliners/memify/core/usecases/PublishImageUseCase.kt +++ b/app/src/main/java/com/codekotliners/memify/core/usecases/PublishImageUseCase.kt @@ -32,6 +32,7 @@ class PublishImageUseCase @Inject constructor( templateId = "templateId", height = height, width = width, + createdAt = System.currentTimeMillis(), ) if (remoteDatasource.uploadPost(postDto, imageUri)) { Log.d("test", "post uploaded successfully") diff --git a/app/src/main/java/com/codekotliners/memify/features/home/data/repository/LikesRepositoryImpl.kt b/app/src/main/java/com/codekotliners/memify/features/home/data/repository/LikesRepositoryImpl.kt index 1aea1f61..3cb4acbc 100644 --- a/app/src/main/java/com/codekotliners/memify/features/home/data/repository/LikesRepositoryImpl.kt +++ b/app/src/main/java/com/codekotliners/memify/features/home/data/repository/LikesRepositoryImpl.kt @@ -64,6 +64,7 @@ class LikesRepositoryImpl @Inject constructor() : LikesRepository { templateId = doc.getString("templateId") ?: "", height = (doc.getLong("height") ?: 0L).toInt(), width = (doc.getLong("width") ?: 0L).toInt(), + createdAt = doc.getLong("createdAt") ?: 0L, ) } catch (e: Exception) { Log.e("LIKED", "Error mapping post: ${e.message}") diff --git a/app/src/main/java/com/codekotliners/memify/features/home/data/repository/PostsRepositoryImpl.kt b/app/src/main/java/com/codekotliners/memify/features/home/data/repository/PostsRepositoryImpl.kt index 1b4b7aad..25ee8b62 100644 --- a/app/src/main/java/com/codekotliners/memify/features/home/data/repository/PostsRepositoryImpl.kt +++ b/app/src/main/java/com/codekotliners/memify/features/home/data/repository/PostsRepositoryImpl.kt @@ -19,23 +19,24 @@ class PostsRepositoryImpl @Inject constructor( override suspend fun getPosts(): List { val postDtos = remoteDatasource.getPosts() - return postDtos.map { - val user = - when (val userData = userRepository.getUserDataByUid(it.creatorId)) { - is Response.Success -> { - User( - uid = it.creatorId, - profileImageUrl = userData.data["photoUrl"].toString(), - username = userData.data["username"].toString(), - ) - } + return postDtos + .map { + val user = + when (val userData = userRepository.getUserDataByUid(it.creatorId)) { + is Response.Success -> { + User( + uid = it.creatorId, + profileImageUrl = userData.data["photoUrl"].toString(), + username = userData.data["username"].toString(), + ) + } - is Response.Failure -> mockUser - Response.Loading -> mockUser - } + is Response.Failure -> mockUser + Response.Loading -> mockUser + } - it.toPost(user, isPostLiked(it)) - } + it.toPost(user, isPostLiked(it)) + }.sortedByDescending { it.createdAt } } private fun isPostLiked(postDto: PostDto): Boolean {