mirror of
https://github.com/omnivore-app/omnivore.git
synced 2026-03-11 08:54:26 +00:00
fix: home items order is not accurate
This commit is contained in:
parent
3aed295340
commit
5257d95559
3 changed files with 63 additions and 31 deletions
|
|
@ -311,7 +311,8 @@ const mixHomeItems = (rankedHomeItems: Array<Candidate>): Array<Section> => {
|
|||
const authorCount = batch.filter((i) => i.author === item.author).length
|
||||
const siteCount = batch.filter((i) => i.siteName === item.siteName).length
|
||||
const subscriptionCount = batch.filter(
|
||||
(i) => i.subscription?.name === item.subscription?.name
|
||||
(i) =>
|
||||
item.subscription && i.subscription?.name === item.subscription.name
|
||||
).length
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -639,7 +639,9 @@ export const functionResolvers = {
|
|||
_: unknown,
|
||||
ctx: WithDataSourcesContext
|
||||
) {
|
||||
const libraryItemIds = section.items
|
||||
const items = section.items
|
||||
|
||||
const libraryItemIds = items
|
||||
.filter((item) => item.type === 'library_item')
|
||||
.map((item) => item.id)
|
||||
const libraryItems = (
|
||||
|
|
@ -653,10 +655,13 @@ export const functionResolvers = {
|
|||
await ctx.dataLoaders.publicItems.loadMany(publicItemIds)
|
||||
).filter((publicItem) => !isError(publicItem)) as Array<PublicItem>
|
||||
|
||||
return libraryItems
|
||||
.map(
|
||||
(libraryItem) =>
|
||||
({
|
||||
return items
|
||||
.map((item) => {
|
||||
const libraryItem = libraryItems.find(
|
||||
(libraryItem) => item.id === libraryItem.id
|
||||
)
|
||||
if (libraryItem) {
|
||||
return {
|
||||
id: libraryItem.id,
|
||||
title: libraryItem.title,
|
||||
author: libraryItem.author,
|
||||
|
|
@ -667,36 +672,43 @@ export const functionResolvers = {
|
|||
canArchive: !libraryItem.archivedAt,
|
||||
canDelete: !libraryItem.deletedAt,
|
||||
canSave: false,
|
||||
canComment: false,
|
||||
canShare: true,
|
||||
dir: libraryItem.directionality,
|
||||
previewContent: libraryItem.description,
|
||||
subscription: libraryItem.subscription,
|
||||
siteName: libraryItem.siteName,
|
||||
siteIcon: libraryItem.siteIcon,
|
||||
} as HomeItem)
|
||||
)
|
||||
.concat(
|
||||
publicItems.map(
|
||||
(publicItem) =>
|
||||
({
|
||||
id: publicItem.id,
|
||||
title: publicItem.title,
|
||||
author: publicItem.author,
|
||||
dir: publicItem.dir,
|
||||
previewContent: publicItem.previewContent,
|
||||
thumbnail: publicItem.thumbnail,
|
||||
wordCount: publicItem.wordCount,
|
||||
date: publicItem.createdAt,
|
||||
url: publicItem.url,
|
||||
canArchive: false,
|
||||
canDelete: false,
|
||||
canSave: true,
|
||||
broadcastCount: publicItem.stats.broadcastCount,
|
||||
likeCount: publicItem.stats.likeCount,
|
||||
saveCount: publicItem.stats.saveCount,
|
||||
source: publicItem.source,
|
||||
} as HomeItem)
|
||||
}
|
||||
}
|
||||
|
||||
const publicItem = publicItems.find(
|
||||
(publicItem) => item.id === publicItem.id
|
||||
)
|
||||
)
|
||||
if (publicItem) {
|
||||
return {
|
||||
id: publicItem.id,
|
||||
title: publicItem.title,
|
||||
author: publicItem.author,
|
||||
dir: publicItem.dir,
|
||||
previewContent: publicItem.previewContent,
|
||||
thumbnail: publicItem.thumbnail,
|
||||
wordCount: publicItem.wordCount,
|
||||
date: publicItem.createdAt,
|
||||
url: publicItem.url,
|
||||
canArchive: false,
|
||||
canDelete: false,
|
||||
canSave: true,
|
||||
canComment: true,
|
||||
canShare: true,
|
||||
broadcastCount: publicItem.stats.broadcastCount,
|
||||
likeCount: publicItem.stats.likeCount,
|
||||
saveCount: publicItem.stats.saveCount,
|
||||
source: publicItem.source,
|
||||
}
|
||||
}
|
||||
})
|
||||
.filter((item) => !!item)
|
||||
},
|
||||
},
|
||||
HomeItem: {
|
||||
|
|
|
|||
|
|
@ -141,7 +141,26 @@ interface Select {
|
|||
const readingProgressDataSource = new ReadingProgressDataSource()
|
||||
|
||||
export const batchGetLibraryItems = async (ids: readonly string[]) => {
|
||||
return findLibraryItemsByIds(ids as string[])
|
||||
const items = await findLibraryItemsByIds(ids as string[], undefined, {
|
||||
select: [
|
||||
'id',
|
||||
'title',
|
||||
'author',
|
||||
'thumbnail',
|
||||
'wordCount',
|
||||
'savedAt',
|
||||
'originalUrl',
|
||||
'directionality',
|
||||
'description',
|
||||
'subscription',
|
||||
'siteName',
|
||||
'siteIcon',
|
||||
'archivedAt',
|
||||
'deletedAt',
|
||||
],
|
||||
})
|
||||
|
||||
return ids.map((id) => items.find((item) => item.id === id) || null)
|
||||
}
|
||||
|
||||
export const getItemUrl = (id: string) => `${env.client.url}/me/${id}`
|
||||
|
|
|
|||
Loading…
Reference in a new issue