Add missing repost tag to latest mods on home page #195

Merged
enes merged 2 commits from issues/190-missing-repost-tags into staging 2025-01-15 19:22:07 +00:00
3 changed files with 51 additions and 9 deletions

View File

@ -4,6 +4,7 @@ export * from './useFilteredMods'
export * from './useGames'
export * from './useMuteLists'
export * from './useNSFWList'
export * from './useRepostList'
export * from './useReactions'
export * from './useNDKContext'
export * from './useScrollDisable'

View File

@ -0,0 +1,19 @@
import { useState } from 'react'
import { useDidMount } from './useDidMount'
import { useNDKContext } from './useNDKContext'
import { CurationSetIdentifiers, getReportingSet } from 'utils'
export const useRepostList = () => {
const ndkContext = useNDKContext()
const [repostList, setRepostList] = useState<string[]>([])
useDidMount(async () => {
const list = await getReportingSet(
CurationSetIdentifiers.Repost,
ndkContext
)
setRepostList(list)
})
return repostList
}

View File

@ -14,7 +14,8 @@ import {
useLocalStorage,
useMuteLists,
useNDKContext,
useNSFWList
useNSFWList,
useRepostList
} from '../hooks'
import { appRoutes, getModPageRoute } from '../routes'
import { BlogCardDetails, ModDetails, NSFWFilter, SortBy } from '../types'
@ -257,18 +258,14 @@ const DisplayLatestMods = () => {
const muteLists = useMuteLists()
const nsfwList = useNSFWList()
const repostList = useRepostList()
useDidMount(() => {
fetchMods({ source: window.location.host })
.then((mods) => {
// Sort by the latest (published_at descending)
mods.sort((a, b) => b.published_at - a.published_at)
const wotFilteredMods = mods.filter(
(mod) =>
isInWoT(siteWot, siteWotLevel, mod.author) ||
isInWoT(userWot, userWotLevel, mod.author)
)
setLatestMods(wotFilteredMods)
setLatestMods(mods)
})
.finally(() => {
setIsFetchingLatestMods(false)
@ -287,11 +284,36 @@ const DisplayLatestMods = () => {
!mutedAuthors.includes(mod.author) &&
!mutedEvents.includes(mod.aTag) &&
!nsfwList.includes(mod.aTag) &&
!mod.nsfw
!mod.nsfw &&
(isInWoT(siteWot, siteWotLevel, mod.author) ||
isInWoT(userWot, userWotLevel, mod.author))
)
// Add repost tag if missing
for (let i = 0; i < filtered.length; i++) {
const mod = filtered[i]
const isMissingRepostTag =
!mod.repost && mod.aTag && repostList.includes(mod.aTag)
if (isMissingRepostTag) {
mod.repost = true
}
}
return filtered.slice(0, 4)
}, [muteLists, nsfwList, latestMods])
}, [
latestMods,
muteLists.admin.authors,
muteLists.admin.replaceableEvents,
muteLists.user.authors,
muteLists.user.replaceableEvents,
nsfwList,
repostList,
siteWot,
siteWotLevel,
userWot,
userWotLevel
])
return (
<div className='IBMSecMain IBMSMListWrapper'>