Commit 7d9b5029 authored by tom's avatar tom

placeholder for the new page

parent 7bfbb3a1
...@@ -16,6 +16,7 @@ export { default as marketplace } from './marketplace'; ...@@ -16,6 +16,7 @@ export { default as marketplace } from './marketplace';
export { default as metasuites } from './metasuites'; export { default as metasuites } from './metasuites';
export { default as mixpanel } from './mixpanel'; export { default as mixpanel } from './mixpanel';
export { default as nameService } from './nameService'; export { default as nameService } from './nameService';
export { default as publicTagsSubmission } from './publicTagsSubmission';
export { default as restApiDocs } from './restApiDocs'; export { default as restApiDocs } from './restApiDocs';
export { default as rollup } from './rollup'; export { default as rollup } from './rollup';
export { default as safe } from './safe'; export { default as safe } from './safe';
......
import type { Feature } from './types';
import { getEnvValue } from '../utils';
import addressMetadata from './addressMetadata';
const apiHost = getEnvValue('NEXT_PUBLIC_ADMIN_SERVICE_API_HOST');
const title = 'Public tag submission';
const config: Feature<{ api: { endpoint: string; basePath: string } }> = (() => {
if (addressMetadata.isEnabled && apiHost) {
return Object.freeze({
title,
isEnabled: true,
api: {
endpoint: apiHost,
basePath: '',
},
});
}
return Object.freeze({
title,
isEnabled: false,
});
})();
export default config;
...@@ -351,21 +351,6 @@ const accountSchema = yup ...@@ -351,21 +351,6 @@ const accountSchema = yup
}), }),
}); });
const adminServiceSchema = yup
.object()
.shape({
NEXT_PUBLIC_ADMIN_SERVICE_API_HOST: yup
.string()
.when([ 'NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED', 'NEXT_PUBLIC_MARKETPLACE_ENABLED' ], {
is: (value1: boolean, value2: boolean) => value1 || value2,
then: (schema) => schema.test(urlTest),
otherwise: (schema) => schema.max(
-1,
'NEXT_PUBLIC_ADMIN_SERVICE_API_HOST cannot not be used if NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED or NEXT_PUBLIC_MARKETPLACE_ENABLED is not set to "true"',
),
}),
});
const featuredNetworkSchema: yup.ObjectSchema<FeaturedNetwork> = yup const featuredNetworkSchema: yup.ObjectSchema<FeaturedNetwork> = yup
.object() .object()
.shape({ .shape({
...@@ -592,6 +577,7 @@ const schema = yup ...@@ -592,6 +577,7 @@ const schema = yup
NEXT_PUBLIC_CONTRACT_INFO_API_HOST: yup.string().test(urlTest), NEXT_PUBLIC_CONTRACT_INFO_API_HOST: yup.string().test(urlTest),
NEXT_PUBLIC_NAME_SERVICE_API_HOST: yup.string().test(urlTest), NEXT_PUBLIC_NAME_SERVICE_API_HOST: yup.string().test(urlTest),
NEXT_PUBLIC_METADATA_SERVICE_API_HOST: yup.string().test(urlTest), NEXT_PUBLIC_METADATA_SERVICE_API_HOST: yup.string().test(urlTest),
NEXT_PUBLIC_ADMIN_SERVICE_API_HOST: yup.string().test(urlTest),
NEXT_PUBLIC_GRAPHIQL_TRANSACTION: yup.string().matches(regexp.HEX_REGEXP), NEXT_PUBLIC_GRAPHIQL_TRANSACTION: yup.string().matches(regexp.HEX_REGEXP),
NEXT_PUBLIC_WEB3_WALLETS: yup NEXT_PUBLIC_WEB3_WALLETS: yup
.mixed() .mixed()
...@@ -639,7 +625,6 @@ const schema = yup ...@@ -639,7 +625,6 @@ const schema = yup
.concat(rollupSchema) .concat(rollupSchema)
.concat(beaconChainSchema) .concat(beaconChainSchema)
.concat(bridgedTokensSchema) .concat(bridgedTokensSchema)
.concat(sentrySchema) .concat(sentrySchema);
.concat(adminServiceSchema);
export default schema; export default schema;
...@@ -566,6 +566,17 @@ This feature allows name tags and other public tags for addresses. ...@@ -566,6 +566,17 @@ This feature allows name tags and other public tags for addresses.
&nbsp; &nbsp;
### Public tag submission
This feature allows you to submit an application with a public address tag.
| Variable | Type| Description | Compulsoriness | Default value | Example value |
| --- | --- | --- | --- | --- | --- |
| NEXT_PUBLIC_METADATA_SERVICE_API_HOST | `string` | Metadata Service API endpoint url | Required | - | `https://metadata.services.blockscout.com` |
| NEXT_PUBLIC_ADMIN_SERVICE_API_HOST | `string` | Admin Service API endpoint url | Required | - | `https://admin-rs.services.blockscout.com` |
&nbsp;
### Data Availability ### Data Availability
This feature enables views related to blob transactions (EIP-4844), such as the Blob Txns tab on the Transactions page and the Blob details page. This feature enables views related to blob transactions (EIP-4844), such as the Blob Txns tab on the Transactions page and the Blob details page.
......
...@@ -237,6 +237,11 @@ export default function useNavItems(): ReturnType { ...@@ -237,6 +237,11 @@ export default function useNavItems(): ReturnType {
nextRoute: { pathname: '/gas-tracker' as const }, nextRoute: { pathname: '/gas-tracker' as const },
isActive: pathname.startsWith('/gas-tracker'), isActive: pathname.startsWith('/gas-tracker'),
}, },
config.features.publicTagsSubmission.isEnabled && {
text: 'Submit public tag',
nextRoute: { pathname: '/public-tags/submit' as const },
isActive: pathname.startsWith('/public-tags/submit'),
},
...config.UI.sidebar.otherLinks, ...config.UI.sidebar.otherLinks,
].filter(Boolean), ].filter(Boolean),
}, },
......
...@@ -29,6 +29,7 @@ const OG_TYPE_DICT: Record<Route['pathname'], OGPageType> = { ...@@ -29,6 +29,7 @@ const OG_TYPE_DICT: Record<Route['pathname'], OGPageType> = {
'/account/custom-abi': 'Regular page', '/account/custom-abi': 'Regular page',
'/account/tag-address': 'Regular page', '/account/tag-address': 'Regular page',
'/account/verified-addresses': 'Root page', '/account/verified-addresses': 'Root page',
'/public-tags/submit': 'Regular page',
'/withdrawals': 'Root page', '/withdrawals': 'Root page',
'/visualize/sol2uml': 'Regular page', '/visualize/sol2uml': 'Regular page',
'/csv-export': 'Regular page', '/csv-export': 'Regular page',
......
/* eslint-disable max-len */
import type { Route } from 'nextjs-routes'; import type { Route } from 'nextjs-routes';
// equal og:description // equal og:description
...@@ -32,6 +33,7 @@ const TEMPLATE_MAP: Record<Route['pathname'], string> = { ...@@ -32,6 +33,7 @@ const TEMPLATE_MAP: Record<Route['pathname'], string> = {
'/account/custom-abi': DEFAULT_TEMPLATE, '/account/custom-abi': DEFAULT_TEMPLATE,
'/account/tag-address': DEFAULT_TEMPLATE, '/account/tag-address': DEFAULT_TEMPLATE,
'/account/verified-addresses': DEFAULT_TEMPLATE, '/account/verified-addresses': DEFAULT_TEMPLATE,
'/public-tags/submit': 'Propose a new public tag for your address, contract or set of contracts for your dApp. Our team will review and approve your submission. Public tags are incredible tool which helps users identify contracts and addresses.',
'/withdrawals': DEFAULT_TEMPLATE, '/withdrawals': DEFAULT_TEMPLATE,
'/visualize/sol2uml': DEFAULT_TEMPLATE, '/visualize/sol2uml': DEFAULT_TEMPLATE,
'/csv-export': DEFAULT_TEMPLATE, '/csv-export': DEFAULT_TEMPLATE,
......
...@@ -27,6 +27,7 @@ const TEMPLATE_MAP: Record<Route['pathname'], string> = { ...@@ -27,6 +27,7 @@ const TEMPLATE_MAP: Record<Route['pathname'], string> = {
'/account/custom-abi': '- custom ABI', '/account/custom-abi': '- custom ABI',
'/account/tag-address': '- private tags', '/account/tag-address': '- private tags',
'/account/verified-addresses': '- my verified addresses', '/account/verified-addresses': '- my verified addresses',
'/public-tags/submit': 'submit public tag',
'/withdrawals': 'withdrawals', '/withdrawals': 'withdrawals',
'/visualize/sol2uml': 'Solidity UML diagram', '/visualize/sol2uml': 'Solidity UML diagram',
'/csv-export': 'export data to CSV', '/csv-export': 'export data to CSV',
......
...@@ -27,6 +27,7 @@ export const PAGE_TYPE_DICT: Record<Route['pathname'], string> = { ...@@ -27,6 +27,7 @@ export const PAGE_TYPE_DICT: Record<Route['pathname'], string> = {
'/account/custom-abi': 'Custom ABI', '/account/custom-abi': 'Custom ABI',
'/account/tag-address': 'Private tags', '/account/tag-address': 'Private tags',
'/account/verified-addresses': 'Verified addresses', '/account/verified-addresses': 'Verified addresses',
'/public-tags/submit': 'Submit public tag',
'/withdrawals': 'Withdrawals', '/withdrawals': 'Withdrawals',
'/visualize/sol2uml': 'Solidity UML diagram', '/visualize/sol2uml': 'Solidity UML diagram',
'/csv-export': 'Export data to CSV file', '/csv-export': 'Export data to CSV file',
......
...@@ -240,3 +240,14 @@ export const login: GetServerSideProps<Props> = async(context) => { ...@@ -240,3 +240,14 @@ export const login: GetServerSideProps<Props> = async(context) => {
return base(context); return base(context);
}; };
export const publicTagsSubmit: GetServerSideProps<Props> = async(context) => {
if (!config.features.publicTagsSubmission.isEnabled) {
return {
notFound: true,
};
}
return base(context);
};
...@@ -44,6 +44,7 @@ declare module "nextjs-routes" { ...@@ -44,6 +44,7 @@ declare module "nextjs-routes" {
| DynamicRoute<"/op/[hash]", { "hash": string }> | DynamicRoute<"/op/[hash]", { "hash": string }>
| StaticRoute<"/ops"> | StaticRoute<"/ops">
| StaticRoute<"/output-roots"> | StaticRoute<"/output-roots">
| StaticRoute<"/public-tags/submit">
| StaticRoute<"/search-results"> | StaticRoute<"/search-results">
| StaticRoute<"/stats"> | StaticRoute<"/stats">
| DynamicRoute<"/token/[hash]", { "hash": string }> | DynamicRoute<"/token/[hash]", { "hash": string }>
......
import type { NextPage } from 'next';
import React from 'react';
import PageNextJs from 'nextjs/PageNextJs';
import PublicTagsSubmit from 'ui/pages/PublicTagsSubmit';
const Page: NextPage = () => {
return (
<PageNextJs pathname="/public-tags/submit">
<PublicTagsSubmit/>
</PageNextJs>
);
};
export default Page;
export { publicTagsSubmit as getServerSideProps } from 'nextjs/getServerSideProps';
import React from 'react';
import PageTitle from 'ui/shared/Page/PageTitle';
type Screen = 'form' | 'result';
const PublicTagsSubmit = () => {
const [ screen ] = React.useState<Screen>('form');
const content = (() => {
switch (screen) {
case 'form':
return 'FORM';
case 'result':
return 'RESULT';
default:
return null;
}
})();
return (
<>
<PageTitle title="Request a public tag/label"/>
{ content }
</>
);
};
export default PublicTagsSubmit;
...@@ -23,7 +23,7 @@ const PublicTagMenuItem = ({ className, hash, onBeforeClick, type }: Props) => { ...@@ -23,7 +23,7 @@ const PublicTagMenuItem = ({ className, hash, onBeforeClick, type }: Props) => {
return; return;
} }
router.push({ pathname: '/account/public-tags-request', query: { address: hash } }); router.push({ pathname: '/public-tags/submit', query: { address: hash } });
}, [ hash, onBeforeClick, router ]); }, [ hash, onBeforeClick, router ]);
const element = (() => { const element = (() => {
......
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