diff --git a/app/src/main/java/org/futo/circles/feature/timeline/list/TimelineAdapter.kt b/app/src/main/java/org/futo/circles/feature/timeline/list/TimelineAdapter.kt
index 10e4bc942918402032c170e78c92a3e9bcef3299..5d6f5407f5bf9c95ab97ee7b6cfbc14660e57092 100644
--- a/app/src/main/java/org/futo/circles/feature/timeline/list/TimelineAdapter.kt
+++ b/app/src/main/java/org/futo/circles/feature/timeline/list/TimelineAdapter.kt
@@ -1,10 +1,9 @@
 package org.futo.circles.feature.timeline.list
 
 import android.annotation.SuppressLint
-import android.content.Context
 import android.view.ViewGroup
 import org.futo.circles.core.base.list.BaseRvAdapter
-import org.futo.circles.core.feature.markdown.MarkdownParser
+import org.futo.circles.core.feature.timeline.data_source.BaseTimelineDataSource
 import org.futo.circles.core.model.Post
 import org.futo.circles.core.model.PostContentType
 import org.futo.circles.model.PostItemPayload
@@ -47,7 +46,7 @@ class TimelineAdapter(
 
     override fun onBindViewHolder(holder: PostViewHolder, position: Int) {
         holder.bind(getItem(position), userPowerLevel)
-        if (position >= itemCount - LOAD_MORE_THRESHOLD) onLoadMore()
+        if (position >= itemCount - BaseTimelineDataSource.LOAD_MORE_THRESHOLD) onLoadMore()
     }
 
     override fun onBindViewHolder(
@@ -71,8 +70,4 @@ class TimelineAdapter(
         (holder as? UploadMediaViewHolder)?.uploadMediaTracker?.unTrack()
     }
 
-    companion object {
-        private const val LOAD_MORE_THRESHOLD = 15
-    }
-
 }
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/feature/timeline/data_source/BaseTimelineDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/timeline/data_source/BaseTimelineDataSource.kt
index 490612ebb47214b8364694ce71e8f577c8167638..0cceea12806916a6ccc0be4a95af5b7d4e65cd80 100644
--- a/core/src/main/java/org/futo/circles/core/feature/timeline/data_source/BaseTimelineDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/timeline/data_source/BaseTimelineDataSource.kt
@@ -59,7 +59,7 @@ abstract class BaseTimelineDataSource(
     }.flowOn(Dispatchers.IO)
         .mapLatest {
             val items = timelineBuilder.build(it, isThread)
-            if (it.isNotEmpty() && items.isEmpty()) loadMore()
+            if (it.isNotEmpty() && items.size <= LOAD_MORE_THRESHOLD) loadMore()
             items
         }
         .distinctUntilChanged()
@@ -94,5 +94,6 @@ abstract class BaseTimelineDataSource(
 
     companion object {
         private const val MESSAGES_PER_PAGE = 50
+        const val LOAD_MORE_THRESHOLD = 15
     }
 }
\ No newline at end of file