feat: automatically generate showcase data
This commit is contained in:
parent
65ec562707
commit
763eefeedb
|
|
@ -1,18 +0,0 @@
|
|||
[
|
||||
10, 33446, 572, 45, 153, 12, 506, 30, 595, 45899, 22033, 51494, 51124, 51232,
|
||||
40669, 45828, 26375, 49041, 48952, 51408, 51470, 51072, 496, 38034, 47359,
|
||||
33335, 50701, 50161, 470, 50312, 21052, 32022, 274, 77, 50168, 51145, 47328,
|
||||
630, 383, 51383, 723, 51172, 4583, 50472, 32179, 51316, 33210, 45089, 51094,
|
||||
31132, 50140, 37137, 42839, 50114, 51006, 51191, 50843, 46648, 887, 51126,
|
||||
51197, 32085, 1407, 51154, 51104, 40675, 4381, 43051, 50622, 51056, 33483, 19,
|
||||
50877, 33420, 50094, 49213, 33276, 50351, 42993, 50216, 50132, 50143, 43754,
|
||||
32168, 500, 47399, 33538, 48951, 33471, 33396, 37223, 33458, 39133, 20004,
|
||||
43625, 42787, 43258, 33462, 47109, 46939, 45701, 33233, 37346, 40671, 51552,
|
||||
51585, 48937, 51379, 51460, 51084, 51509, 51478, 51639, 48910, 51139, 39329,
|
||||
51683, 51077, 51374, 49120, 47356, 17096, 50708, 51430, 51935, 51756, 6558,
|
||||
49392, 52186, 52055, 52282, 52270, 5825, 51351, 52233, 51308, 52388, 52280,
|
||||
52718, 52951, 52103, 52314, 52336, 52816, 52766, 52760, 660, 52728, 52683,
|
||||
51617, 53087, 53081, 52184, 43000, 53444, 53470, 50141, 52947, 51406, 53563,
|
||||
52800, 53637, 1361, 53518, 53584, 51803, 53387, 53731, 54169, 53657, 51540,
|
||||
54050, 53827, 54187, 52319, 517, 52323, 54613, 54513, 50181, 54575, 53710, 54245, 19489, 54515, 54315, 54641
|
||||
]
|
||||
|
|
@ -11,15 +11,14 @@ import { UniLink } from "~/components/ui/UniLink"
|
|||
import { getSiteLink } from "~/lib/helpers"
|
||||
import {
|
||||
useAccountSites,
|
||||
useGetSites,
|
||||
useGetShowcase,
|
||||
useSubscribeToSites,
|
||||
} from "~/queries/site"
|
||||
|
||||
import showcase from "../../../data/showcase.json"
|
||||
import topics from "../../../data/topics.json"
|
||||
|
||||
export function MainSidebar({ hideSearch }: { hideSearch?: boolean }) {
|
||||
const showcaseSites = useGetSites(showcase)
|
||||
const showcaseSites = useGetShowcase()
|
||||
const { t } = useTranslation("index")
|
||||
|
||||
const userSite = useAccountSites()
|
||||
|
|
|
|||
|
|
@ -91,17 +91,34 @@ export const getSite = async (input: string, customUnidata?: Unidata) => {
|
|||
return site
|
||||
}
|
||||
|
||||
export const getSites = async (input: number[]) => {
|
||||
export const getShowcase = async () => {
|
||||
const client = createClient({
|
||||
url: "https://indexer.crossbell.io/v1/graphql",
|
||||
exchanges: [cacheExchange, fetchExchange],
|
||||
})
|
||||
const oneMonthAgo = dayjs().subtract(15, "day").toISOString()
|
||||
const oneMonthAgo = dayjs().subtract(10, "day").toISOString()
|
||||
|
||||
const listResponse = await client
|
||||
.query(
|
||||
`
|
||||
query getCharacters {
|
||||
characters( where: { notes: { some: { stat: { viewDetailCount: { gte: 100 } }, metadata: { content: { path: "sources", array_contains: "xlog" }, AND: { content: { path: "tags", array_contains: "post" } } } } } } ) {
|
||||
characterId
|
||||
}
|
||||
}
|
||||
`,
|
||||
{},
|
||||
)
|
||||
.toPromise()
|
||||
const characterList = listResponse.data?.characters.map((c: any) =>
|
||||
parseInt(c.characterId),
|
||||
)
|
||||
|
||||
const result = await client
|
||||
.query(
|
||||
`
|
||||
query getCharacters($identities: [Int!], $limit: Int) {
|
||||
characters( where: { characterId: { in: $identities } }, orderBy: [{ updatedAt: desc }], take: $limit ) {
|
||||
query getCharacters($identities: [Int!]) {
|
||||
characters( where: { characterId: { in: $identities } }, orderBy: [{ updatedAt: desc }] ) {
|
||||
handle
|
||||
characterId
|
||||
metadata {
|
||||
|
|
@ -115,7 +132,7 @@ export const getSites = async (input: number[]) => {
|
|||
}
|
||||
}`,
|
||||
{
|
||||
identities: input,
|
||||
identities: characterList,
|
||||
},
|
||||
)
|
||||
.toPromise()
|
||||
|
|
@ -157,6 +174,7 @@ export const getSites = async (input: number[]) => {
|
|||
.sort((a: any, b: any) => {
|
||||
return b.createdAt > a.createdAt ? 1 : -1
|
||||
})
|
||||
.slice(0, 100)
|
||||
|
||||
return list
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,11 +14,9 @@ import type { FeedType } from "~/models/home.model"
|
|||
import { prefetchGetFeed } from "~/queries/home.server"
|
||||
import { prefetchGetSites } from "~/queries/site.server"
|
||||
|
||||
import showcase from "../../data/showcase.json"
|
||||
|
||||
export const getServerSideProps: GetServerSideProps = async (ctx) => {
|
||||
const queryClient = new QueryClient()
|
||||
await prefetchGetSites(showcase, queryClient)
|
||||
await prefetchGetSites(queryClient)
|
||||
await prefetchGetFeed(
|
||||
{
|
||||
type: "latest",
|
||||
|
|
|
|||
|
|
@ -14,9 +14,7 @@ import { DISCORD_LINK, GITHUB_LINK, TWITTER_LINK } from "~/lib/env"
|
|||
import { getSiteLink } from "~/lib/helpers"
|
||||
import { serverSidePropsHandler } from "~/lib/server-side-props"
|
||||
import { useGetPagesBySite } from "~/queries/page"
|
||||
import { useGetSite, useGetSites, useGetStat } from "~/queries/site"
|
||||
|
||||
import showcase from "../../../../data/showcase.json"
|
||||
import { useGetShowcase, useGetSite, useGetStat } from "~/queries/site"
|
||||
|
||||
export const getServerSideProps: GetServerSideProps = serverSidePropsHandler(
|
||||
async (ctx) => {
|
||||
|
|
@ -72,7 +70,7 @@ export default function SubdomainIndex() {
|
|||
take: 4,
|
||||
})
|
||||
|
||||
const showcaseSites = useGetSites(showcase)
|
||||
const showcaseSites = useGetShowcase()
|
||||
|
||||
return (
|
||||
<DashboardMain title="Dashboard" className="max-w-screen-2xl">
|
||||
|
|
|
|||
|
|
@ -29,16 +29,14 @@ import { getSiteLink } from "~/lib/helpers"
|
|||
import { languageDetector } from "~/lib/language-detector"
|
||||
import {
|
||||
useAccountSites,
|
||||
useGetSites,
|
||||
useGetShowcase,
|
||||
useSubscribeToSites,
|
||||
} from "~/queries/site"
|
||||
import { prefetchGetSites } from "~/queries/site.server"
|
||||
|
||||
import showcase from "../../data/showcase.json"
|
||||
|
||||
export const getServerSideProps: GetServerSideProps = async (ctx) => {
|
||||
const queryClient = new QueryClient()
|
||||
await prefetchGetSites(showcase, queryClient)
|
||||
await prefetchGetSites(queryClient)
|
||||
|
||||
return {
|
||||
props: {
|
||||
|
|
@ -54,7 +52,7 @@ export const getServerSideProps: GetServerSideProps = async (ctx) => {
|
|||
function Home() {
|
||||
const isConnected = useAccountState((s) => !!s.computed.account)
|
||||
const router = useRouter()
|
||||
const showcaseSites = useGetSites(showcase)
|
||||
const showcaseSites = useGetShowcase()
|
||||
const { t } = useTranslation("index")
|
||||
|
||||
const tryNow = () => {
|
||||
|
|
|
|||
|
|
@ -12,11 +12,9 @@ import { MainSidebar } from "~/components/main/MainSidebar"
|
|||
import { languageDetector } from "~/lib/language-detector"
|
||||
import { prefetchGetSites } from "~/queries/site.server"
|
||||
|
||||
import showcase from "../../data/showcase.json"
|
||||
|
||||
export const getServerSideProps: GetServerSideProps = async (ctx) => {
|
||||
const queryClient = new QueryClient()
|
||||
await prefetchGetSites(showcase, queryClient)
|
||||
await prefetchGetSites(queryClient)
|
||||
|
||||
return {
|
||||
props: {
|
||||
|
|
|
|||
|
|
@ -11,12 +11,11 @@ import { MainSidebar } from "~/components/main/MainSidebar"
|
|||
import { languageDetector } from "~/lib/language-detector"
|
||||
import { prefetchGetSites } from "~/queries/site.server"
|
||||
|
||||
import showcase from "../../../data/showcase.json"
|
||||
import topics from "../../../data/topics.json"
|
||||
|
||||
export const getServerSideProps: GetServerSideProps = async (ctx) => {
|
||||
const queryClient = new QueryClient()
|
||||
await prefetchGetSites(showcase, queryClient)
|
||||
await prefetchGetSites(queryClient)
|
||||
|
||||
return {
|
||||
props: {
|
||||
|
|
|
|||
|
|
@ -70,15 +70,12 @@ export const prefetchGetSiteToSubscriptions = async (
|
|||
})
|
||||
}
|
||||
|
||||
export const prefetchGetSites = async (
|
||||
input: number[],
|
||||
queryClient: QueryClient,
|
||||
) => {
|
||||
const key = ["getSites", input]
|
||||
export const prefetchGetSites = async (queryClient: QueryClient) => {
|
||||
const key = ["getShowcase"]
|
||||
await queryClient.fetchQuery(key, async () => {
|
||||
return cacheGet({
|
||||
key,
|
||||
getValueFun: () => siteModel.getSites(input),
|
||||
getValueFun: () => siteModel.getShowcase(),
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,12 +41,9 @@ export const useGetSite = (input?: string) => {
|
|||
})
|
||||
}
|
||||
|
||||
export const useGetSites = (input: number[]) => {
|
||||
return useQuery(["getSites", input], async () => {
|
||||
if (!input) {
|
||||
return null
|
||||
}
|
||||
return siteModel.getSites(input)
|
||||
export const useGetShowcase = () => {
|
||||
return useQuery(["getShowcase"], async () => {
|
||||
return siteModel.getShowcase()
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue