bug修改

This commit is contained in:
Developer
2026-05-12 20:27:30 +08:00
parent b0929a8094
commit 53c67079a1
23 changed files with 1026 additions and 387 deletions

View File

@@ -1,4 +1,4 @@
import type { VideoItem, LiveRoom } from '../services/types';
import type { VideoItem } from '../services/types';
export interface NormalRow {
type: 'pair';
@@ -11,22 +11,14 @@ export interface BigRow {
item: VideoItem;
}
export interface LiveRow {
type: 'live';
left: LiveRoom;
right?: LiveRoom;
}
export type ListRow = NormalRow | BigRow;
export type ListRow = NormalRow | BigRow | LiveRow;
export function toListRows(pages: VideoItem[][], liveRooms?: LiveRoom[]): ListRow[] {
export function toListRows(pages: VideoItem[][]): ListRow[] {
const rows: ListRow[] = [];
let roomIdx = 0;
for (const chunk of pages) {
if (chunk.length === 0) continue;
// Highest view count becomes BigRow
let bigIdx = 0;
let maxView = chunk[0].stat?.view ?? 0;
for (let i = 1; i < chunk.length; i++) {
@@ -37,36 +29,17 @@ export function toListRows(pages: VideoItem[][], liveRooms?: LiveRoom[]): ListRo
const bigItem = chunk[bigIdx];
const rest = chunk.filter((_, i) => i !== bigIdx);
const pairs: (NormalRow | LiveRow)[] = [];
const pairs: NormalRow[] = [];
for (let i = 0; i < rest.length; i += 2) {
if (rest[i + 1]) {
pairs.push({ type: 'pair', left: rest[i], right: rest[i + 1] ?? null });
}
}
if (liveRooms && liveRooms.length >= 2) {
const a = liveRooms[roomIdx % liveRooms.length];
const b = liveRooms[(roomIdx + 1) % liveRooms.length];
roomIdx += 2;
if (rows.length < 20) {
rows.push({ type: 'big', item: bigItem });
rows.push({ type: 'live', left: a, right: b });
rows.push(...pairs);
} else {
rows.push(...pairs);
rows.push({ type: 'big', item: bigItem });
rows.push({ type: 'live', left: a, right: b });
}
if (rows.length < 20) {
rows.push({ type: 'big', item: bigItem }, ...pairs);
} else {
// No live data, fall back to original logic
if (rows.length < 20) {
rows.push({ type: 'big', item: bigItem }, ...pairs);
} else {
rows.push(...pairs, { type: 'big', item: bigItem });
}
rows.push(...pairs, { type: 'big', item: bigItem });
}
}
return rows;