Skip to content

Commit

Permalink
Work in progress list of addons
Browse files Browse the repository at this point in the history
  • Loading branch information
cdedreuille committed Jul 18, 2024
1 parent 68857c7 commit 686690f
Show file tree
Hide file tree
Showing 8 changed files with 535 additions and 12 deletions.
11 changes: 6 additions & 5 deletions apps/addon-catalog/app/[...addonName]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@ import { fetchAddonDetailsData } from '../../lib/fetch-addon-details-data';
import { AddonHero } from '../../components/addon/addon-hero';
import { AddonSidebar } from '../../components/addon/addon-sidebar';
import { Highlight } from '../../components/highlight';
import { fetchAddonsData } from '../../lib/fetch-addons-data';

interface AddonDetailsProps {
params: {
addonName: string[];
};
}

// export async function generateStaticParams() {
// const addons = (await fetchAddonsData()) || [];
// return addons.map((name) => ({ params: { addonName: name?.split('/') } }));
// }
export async function generateStaticParams() {
const addons = (await fetchAddonsData()) || [];
return addons.map((name) => ({ addonName: name?.split('/') }));
}

export default async function AddonDetails({ params }: AddonDetailsProps) {
// TODO: Better decoding?
Expand All @@ -30,7 +31,7 @@ export default async function AddonDetails({ params }: AddonDetailsProps) {
<SubHeader leftLabel="Back to integrations" leftHref="/" />
<AddonHero addon={addon} />
<div className="flex flex-col gap-12 lg:flex-row">
<div className="min-w-0 flex-1">
<div className="flex-1 min-w-0">
{addon.readme ? (
<Highlight withHTMLChildren={false}>
<div
Expand Down
12 changes: 12 additions & 0 deletions apps/addon-catalog/app/api/addons/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { NextResponse } from 'next/server';
import { fetchAllAddons } from '../../../lib/fetch-all-addons';

export async function GET() {
try {
const { addons } = await fetchAllAddons();

return NextResponse.json({ count: addons.length, addons });
} catch (error) {
return NextResponse.json({ error });
}
}
17 changes: 17 additions & 0 deletions apps/addon-catalog/app/test/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
export default async function Page() {
const fetchAddonsData = async () => {
const res = await fetch('http://localhost:3001/addons/api/addons');
const addons = await res.json();
return addons;
};

const addons = await fetchAddonsData();

return (
<div>
{addons.map((addon) => (
<div>Hello</div>
))}
</div>
);
}
54 changes: 54 additions & 0 deletions apps/addon-catalog/lib/fetch-all-addons.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { database } from './mongodb-client';

interface Addon {
name: string;
disabled?: boolean;
}

export const fetchAllAddons = async () => {
try {
const query = {};
const crawledAddonsCollection = database.collection<Addon>('crawledAddons');
const crawledAddons = crawledAddonsCollection.find<Addon>(query, {});
const curatedAddonsCollection = database.collection<Addon>('curatedAddons');
const curatedAddons = curatedAddonsCollection.find<Addon>(query, {});

const allCuratedAddons: Addon[] = [];
const allAddons: Addon[] = [];

const count = await crawledAddonsCollection.countDocuments(query);

console.log(count);

for await (const doc of curatedAddons) {
allCuratedAddons.push(doc);
}

for await (const doc of crawledAddons) {
allAddons.push(doc);
}

const allAddonsWithCurated = allAddons.map((addon) => {
const curatedAddon = allCuratedAddons.find((c) => c.name === addon.name);
if (curatedAddon) {
return {
...addon,
disabled: curatedAddon.disabled,
};
}
return addon;
});

return {
addons: allAddonsWithCurated
.filter((addon) => !addon.disabled)
.map((addon) => ({
name: addon.name,
disabled: addon.disabled,
})),
error: null,
};
} catch (error) {
return { addons: [], error };
}
};
7 changes: 7 additions & 0 deletions apps/addon-catalog/lib/mongodb-client.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import { MongoClient } from 'mongodb';

const uri = process.env.MONGODB_URI!;

const client = new MongoClient(uri);

export const database = client.db('Cluster0');
2 changes: 2 additions & 0 deletions apps/addon-catalog/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@
"framer-motion": "^11.2.12",
"graphql-request": "^7.1.0",
"human-format": "^1.2.0",
"mongodb": "^6.8.0",
"mongoose": "^8.5.1",
"next": "^14.2.4",
"next-plausible": "^3.12.0",
"next-themes": "^0.3.0",
Expand Down
Loading

0 comments on commit 686690f

Please sign in to comment.