Commit 41beed25 authored by tom's avatar tom

remove node.js api endpoint

parent 03e278e1
...@@ -14,8 +14,4 @@ for file in `git diff --diff-filter=ACMRT --cached --name-only | grep ".svg\$"` ...@@ -14,8 +14,4 @@ for file in `git diff --diff-filter=ACMRT --cached --name-only | grep ".svg\$"`
git add $file git add $file
done done
# format svg
echo 🧿 Running marketplace config validator...
./deploy/scripts/validate_marketplace_config.sh
echo ✅ All pre-commit jobs are done echo ✅ All pre-commit jobs are done
...@@ -86,7 +86,7 @@ const config = Object.freeze({ ...@@ -86,7 +86,7 @@ const config = Object.freeze({
featuredNetworks: parseEnvJson<Array<FeaturedNetwork>>(getEnvValue(process.env.NEXT_PUBLIC_FEATURED_NETWORKS)) || [], featuredNetworks: parseEnvJson<Array<FeaturedNetwork>>(getEnvValue(process.env.NEXT_PUBLIC_FEATURED_NETWORKS)) || [],
blockScoutVersion: getEnvValue(process.env.NEXT_PUBLIC_BLOCKSCOUT_VERSION), blockScoutVersion: getEnvValue(process.env.NEXT_PUBLIC_BLOCKSCOUT_VERSION),
isAccountSupported: getEnvValue(process.env.NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED) === 'true', isAccountSupported: getEnvValue(process.env.NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED) === 'true',
isMarketplaceAvailable: Boolean(getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_CONFIG_URL)), marketplaceConfigUrl: getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_CONFIG_URL),
marketplaceSubmitForm: getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM), marketplaceSubmitForm: getEnvValue(process.env.NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM),
protocol: appSchema, protocol: appSchema,
host: appHost, host: appHost,
......
...@@ -10,7 +10,7 @@ NEXT_PUBLIC_BLOCKSCOUT_VERSION=v4.1.7-beta ...@@ -10,7 +10,7 @@ NEXT_PUBLIC_BLOCKSCOUT_VERSION=v4.1.7-beta
NEXT_PUBLIC_FOOTER_GITHUB_LINK=https://github.com/blockscout/blockscout NEXT_PUBLIC_FOOTER_GITHUB_LINK=https://github.com/blockscout/blockscout
NEXT_PUBLIC_FOOTER_TWITTER_LINK=https://www.twitter.com/blockscoutcom NEXT_PUBLIC_FOOTER_TWITTER_LINK=https://www.twitter.com/blockscoutcom
NEXT_PUBLIC_API_SPEC_URL=https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml NEXT_PUBLIC_API_SPEC_URL=https://raw.githubusercontent.com/blockscout/blockscout-api-v2-swagger/main/swagger.yaml
NEXT_PUBLIC_MARKETPLACE_CONFIG_URL=https://raw.githubusercontent.com/blockscout/frontend-configs/main/configs/marketplace/eth-goerli.json
# api config # api config
NEXT_PUBLIC_API_HOST=blockscout.com NEXT_PUBLIC_API_HOST=blockscout.com
......
...@@ -64,7 +64,7 @@ export function isInternalItem(item: NavItem): item is NavItemInternal { ...@@ -64,7 +64,7 @@ export function isInternalItem(item: NavItem): item is NavItemInternal {
} }
export default function useNavItems(): ReturnType { export default function useNavItems(): ReturnType {
const isMarketplaceAvailable = appConfig.isMarketplaceAvailable && appConfig.network.rpcUrl; const isMarketplaceAvailable = Boolean(appConfig.marketplaceConfigUrl && appConfig.network.rpcUrl);
const hasAPIDocs = appConfig.apiDoc.specUrl; const hasAPIDocs = appConfig.apiDoc.specUrl;
const router = useRouter(); const router = useRouter();
......
import type { NextApiRequest, NextApiResponse } from 'next';
import config from 'configs/marketplace/eth-goerli.json';
import { httpLogger } from 'lib/api/logger';
export default async function marketplaceAppIdHandler(_req: NextApiRequest, res: NextApiResponse) {
httpLogger(_req, res);
const id = _req.query.id;
const app = config.find(app => app.id === id);
if (!app) {
return res.status(404).json({ error: 'Not found' });
}
res.status(200).json(app);
}
import type { NextApiRequest, NextApiResponse } from 'next';
import config from 'configs/marketplace/eth-goerli.json';
import { httpLogger } from 'lib/api/logger';
export default async function marketplaceIndexHandler(_req: NextApiRequest, res: NextApiResponse) {
httpLogger(_req, res);
res.status(200).json(config);
}
...@@ -15,8 +15,6 @@ declare module "nextjs-routes" { ...@@ -15,8 +15,6 @@ declare module "nextjs-routes" {
| DynamicRoute<"/address/[hash]/contract_verification", { "hash": string }> | DynamicRoute<"/address/[hash]/contract_verification", { "hash": string }>
| DynamicRoute<"/address/[hash]", { "hash": string }> | DynamicRoute<"/address/[hash]", { "hash": string }>
| StaticRoute<"/api/csrf"> | StaticRoute<"/api/csrf">
| DynamicRoute<"/api/marketplace/[id]", { "id": string }>
| StaticRoute<"/api/marketplace">
| StaticRoute<"/api/media-type"> | StaticRoute<"/api/media-type">
| StaticRoute<"/api/proxy"> | StaticRoute<"/api/proxy">
| StaticRoute<"/api-docs"> | StaticRoute<"/api-docs">
......
...@@ -3,6 +3,7 @@ import React, { useCallback, useEffect, useState } from 'react'; ...@@ -3,6 +3,7 @@ import React, { useCallback, useEffect, useState } from 'react';
import type { AppItemOverview, MarketplaceCategoriesIds } from 'types/client/apps'; import type { AppItemOverview, MarketplaceCategoriesIds } from 'types/client/apps';
import appConfig from 'configs/app/config';
import type { ResourceError } from 'lib/api/resources'; import type { ResourceError } from 'lib/api/resources';
import useDebounce from 'lib/hooks/useDebounce'; import useDebounce from 'lib/hooks/useDebounce';
import useApiFetch from 'lib/hooks/useFetch'; import useApiFetch from 'lib/hooks/useFetch';
...@@ -36,7 +37,7 @@ export default function useMarketplaceApps() { ...@@ -36,7 +37,7 @@ export default function useMarketplaceApps() {
const apiFetch = useApiFetch(); const apiFetch = useApiFetch();
const { isLoading, isError, error, data } = useQuery<unknown, ResourceError<unknown>, Array<AppItemOverview>>( const { isLoading, isError, error, data } = useQuery<unknown, ResourceError<unknown>, Array<AppItemOverview>>(
[ 'marketplace-apps' ], [ 'marketplace-apps' ],
async() => apiFetch('/node-api/marketplace'), async() => apiFetch(appConfig.marketplaceConfigUrl || ''),
{ {
select: (data) => (data as Array<AppItemOverview>).sort((a, b) => a.title.localeCompare(b.title)), select: (data) => (data as Array<AppItemOverview>).sort((a, b) => a.title.localeCompare(b.title)),
}); });
......
...@@ -27,8 +27,20 @@ const MarketplaceApp = () => { ...@@ -27,8 +27,20 @@ const MarketplaceApp = () => {
const id = getQueryParamString(router.query.id); const id = getQueryParamString(router.query.id);
const { isLoading, isError, error, data } = useQuery<unknown, ResourceError<unknown>, AppItemOverview>( const { isLoading, isError, error, data } = useQuery<unknown, ResourceError<unknown>, AppItemOverview>(
[ 'marketplace-app', { id } ], [ 'marketplace-apps' ],
async() => apiFetch(`/node-api/marketplace/${ id }`), async() => {
const result = await apiFetch<Array<AppItemOverview>, unknown>(appConfig.marketplaceConfigUrl || '');
if (!Array.isArray(result)) {
throw result;
}
const item = result.find((app: AppItemOverview) => app.id === id);
if (!item) {
throw { status: 404 };
}
return item;
},
); );
const [ isFrameLoading, setIsFrameLoading ] = useState(isLoading); const [ isFrameLoading, setIsFrameLoading ] = useState(isLoading);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment