179179 <div v-else-if="posts.length === 0" class="text-sm text-gray-400 py-16 text-center">暂无朋友圈数据</div>
180180
181181 <div v-if="!error && posts.length > 0" class="text-[11px] text-gray-500 mb-2 flex flex-wrap gap-x-3 gap-y-1">
182- <span>已显示:{{ posts.length }}</span>
183182 <span v-if="selectedSnsUserInfo">缓存统计:{{ selectedSnsUserInfo.postCount || 0 }}</span>
184- <span v-if="timelineSource">source: {{ timelineSource }}</span>
185183 <span v-if="!hasMore && !isLoading">(已到末尾)</span>
186184 </div>
187185 <div v-if="showSnsCountMismatchHint" class="text-[11px] text-amber-700 mb-3">
247245 </a>
248246 </div>
249247
250- <div v-else-if="post.type === 28 && post.finderFeed && Object.keys(post.finderFeed).length > 0" class="mt-2 w-full" :class="{ 'privacy-blur': privacyMode }">
251- <!-- 浏览器没有看微信视频号的环境,暂时不进行跳转!! -->
252- <div class="block w-full bg-[#F7F7F7] p-2 rounded-sm">
253- <div class="flex items-center gap-3">
254- <div class="flex-1 min-w-0 flex items-center overflow-hidden h-12">
255- <div class="text-[13px] text-gray-900 leading-tight line-clamp-2">{{ formatFinderFeedCardText(post) }}</div>
256- </div>
257- <div class="relative w-12 h-12 rounded-sm overflow-hidden flex-shrink-0 bg-white">
258- <img
259- v-if="getFinderFeedThumbSrc(post)"
260- :src="getFinderFeedThumbSrc(post)"
261- class="w-full h-full object-cover"
262- alt=""
263- loading="lazy"
264- referrerpolicy="no-referrer"
265- />
266- <div v-else class="w-full h-full flex items-center justify-center bg-gray-200 text-gray-400 text-xs">
267- 视频
268- </div>
269- <div class="absolute inset-0 flex items-center justify-center pointer-events-none">
270- <div class="w-8 h-8 rounded-full bg-black/45 flex items-center justify-center">
271- <svg class="w-4 h-4 text-white" fill="currentColor" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg>
272- </div>
273- </div>
248+ <div v-else-if="post.type === 28 && post.finderFeed && Object.keys(post.finderFeed).length > 0" class="mt-2 w-full max-w-[304px]" :class="{ 'privacy-blur': privacyMode }">
249+ <!-- 浏览器没有看微信视频号的环境,暂时不进行跳转 -->
250+ <div class="relative w-full overflow-hidden rounded-sm bg-[#F7F7F7]">
251+ <img
252+ v-if="getFinderFeedThumbSrc(post)"
253+ :src="getFinderFeedThumbSrc(post)"
254+ class="block w-full aspect-square object-cover"
255+ alt=""
256+ loading="lazy"
257+ referrerpolicy="no-referrer"
258+ />
259+ <div v-else class="w-full aspect-square flex items-center justify-center bg-gray-200">
260+ <span class="line-clamp-3 px-4 text-center text-[13px] leading-5 text-gray-500">{{ formatFinderFeedCardText(post) }}</span>
261+ </div>
262+ <div class="absolute inset-0 flex items-center justify-center pointer-events-none">
263+ <div class="w-12 h-12 rounded-full bg-black/45 flex items-center justify-center">
264+ <svg class="w-6 h-6 text-white" fill="currentColor" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg>
274265 </div>
275266 </div>
276267 </div>
@@ -622,7 +613,6 @@ const seenPostIds = new Set()
622613// NOTE: Backend `/api/sns/timeline` uses SQL OFFSET on the raw timeline rows.
623614// The UI filters out some rows (e.g. type=7 cover), so `posts.length` must NOT be used as the next OFFSET.
624615const timelineOffset = ref(0)
625- const timelineSource = ref('')
626616const hasMore = ref(true)
627617// When timeline API reports `hasMore=false` but cached sidebar count indicates more, keep paging.
628618// If we hit an empty page, stop trying to avoid infinite requests.
@@ -1615,7 +1605,6 @@ const loadPosts = async ({ reset }) => {
16151605 try {
16161606 if (reset) {
16171607 timelineOffset.value = 0
1618- timelineSource.value = ''
16191608 hasMore.value = true
16201609 cachePagingExhausted.value = false
16211610 seenPostIds.clear()
@@ -1633,7 +1622,6 @@ const loadPosts = async ({ reset }) => {
16331622 offset,
16341623 usernames: selectedSnsUser.value ? [String(selectedSnsUser.value).trim()] : []
16351624 })
1636- timelineSource.value = String(resp?.source || '').trim()
16371625 const items = Array.isArray(resp?.timeline) ? resp.timeline : []
16381626 // Advance offset by the number of rows consumed by the backend.
16391627 // When `hasMore` is true, the backend definitely scanned at least `limit` raw rows (even if it filtered some out).
0 commit comments