import { get } from '../utils/request'; import { PostDetail, CollectionDetail } from './type'; import { RequestTaskQueue } from './fetch-post'; const collectionDetailRequestTaskQueue = new RequestTaskQueue< { collectionId: number }, PostDetail >(async ( collectionIds: { collectionId: number }[] ) => { const res: any = await get( '//www.lofter.com/spread/collectionShowAct/getCollectionDetail', { 'collectionIds': collectionIds.map(({ collectionId }) => collectionId).join(',') } ) const fakePostList = res.data.collections.map((collection: CollectionDetail) => { return { id: collection.id, originType: 'collection', classifyType: 2, firstImage: { orign: collection.coverUrl //此处服务端字段有错误,得延续这个错误 }, collectionCountView: { postCount: collection.postCount, viewCount: collection.viewCount, }, collectionType: collection.collectionType, title: collection.name, digest: collection.description, blogInfo: collection.blogInfo, postPageUrl: `https://www.lofter.com/front/blog/collection/share?collectionId=${collection.id}` } }) const collectionsIdMap = fakePostList.reduce((idMap, detail) => { idMap[detail.id] = detail; return idMap; }, {}); return collectionIds.map(({ collectionId }) => collectionsIdMap[collectionId]); }, 50); export function fetchCollectionDetail (collectionId: number) { return new Promise((resolve) => { collectionDetailRequestTaskQueue.add({ data: { collectionId }, callback: resolve }) }) }