2022-04-20 19:37:44 +00:00
|
|
|
import * as Sentry from '@sentry/react';
|
|
|
|
import { Splash } from '@vegaprotocol/ui-toolkit';
|
|
|
|
import React from 'react';
|
|
|
|
import type { WithTranslation } from 'react-i18next';
|
|
|
|
import { withTranslation } from 'react-i18next';
|
Feat/800 better proposal ux round 1 (#1223)
* Feat/800: Configured routes for different proposal types
* Feat/800: Refactored propose.tsx to be a hub for the new proposal routes
* Feat/800: Link style tweak for proposals guide
* Feat/927: Hydrating the new proposal forms
* chore: fix typings for shared components
* Feat/927: Proposal forms built with reusable components
* Feat/800: Updated network params, added new method to get param keys as well as values, updated generated types
* Feat/800: Updated and built more reusable proposal form components
* Feat/800: Removed old catchall file of reusable proposal form components
* Feat/800: Added utils for vote deadline and enactment timestamps
* Feat/800: Readded necessary 'color-scheme-dark' class for dark-theme date and datetime inputs
* Feat/800: Tweak to icon positioning on the dialog component
* Feat/800: Regenerated types for network params
* Feat/800: Added iso8601-duration package for working with API vote deadline and enactment data
* Feat/800: Reworked the proposal forms
* Feat/800: Couple of translation additions
* Feat/800: Another translation addition
* Feat/800: Raw proposal test (tests as per old proposal form test)
* Feat/800: Some basic proposal form tests
* Feat/800: Fixing small types error in test
* Feat/800: Updating simple proposal form tests
* Feat/800: Set up env-specific proposal docs links
* Feat/800: Deadlines to the bottom of proposal forms
* Feat/800: Another type error from API changes fixed
* Feat/800: Added the spam protection min tokens network param to proposal forms requests, and the min requirements now displays the larger value of spam protection or min proposer balance
* Feat/800: Network param value change now a textarea
* Feat/800: Improved way to pass docs url
* Feat/800: Added useful explorer links to proposal forms
* Feat/800: Show current value of selected network param in proposal form
* Feat/800: Removed wallet-confirmation buffer, suspect it is not necessary
* Feat/800: Condense vote and enactment ui into single component for simpler state management, memoised some stuff
* Feat/800: Set a default select option for the market selector
* Feat/800: For network params that aren't JSON, display the network param current value in a readonly text input rather than the syntax highlighter
* Feat/800: Corrected network param form network params
* Feat/800: Timestamp functions for closing, enactment and validation, with tests
* Feat/800: More translations
* Feat/800: Added validation options to proposal-form-vote-and-enactment-deadline.tsx, generally improved the component and added tests
* Feat/800: Improved workings of proposal-form-min-requirements.tsx and wrote tests
* Feat/800: Tests for the other reusable form components
* Feat/800: Improved tests for the proposal forms
* Feat/800: Corrected mistake in get-enactment-timestamp.ts
* Feat/800: Fixed type issues that were preventing spotting an error
* Feat/800: Added some extra docs links
* Feat/800: Using renamed Dialog passed in from useProposalSubmit
* refactor: network params to return an object
* fix: update net param form, remove old net params obj
* fix: check for params before rendering
* Feat/800: Rename and simplify isJson based off PR comment
* Feat/800: Small tweaks to timestamp helpers based on PR comments
* Feat/800: Removed proposal-docs-link.tsx
* Feat/800: Used bignumber for min-requirements calculation
* Feat/800: Update tests to work with merged network params branch
* Feat/800: Removed unnecessary translations splitting
* Feat/800: Removed unwanted test
* Feat/800: Removed unwanted tests
* Feat/800: Consistent arrow functions
* Feat/800: Sorted links
* Feat/800: Removed unnecessary typecasting
* Feat/800: Refactored routing
* Feat/800: Refactored mocking of proposal forms to use MockedProvider
* Feat/800: Correct response from the raw proposal submission test
* Feat/800: Removed console.logs added for debugging
* Feat/800: Result of running 'nx format:write'
* Feat/800: Cleaning up lint warnings
* Update apps/token/.env.stagnet3
Co-authored-by: Dexter Edwards <dexter.edwards93@gmail.com>
* Feat/800: Added extra test for docs link in the proposal-form-terms component
* Feat/800: Removed stray console.log
* Feat/800: Added basic render test for proposal-form-terms and cleaned up a bit
* Feat/800: Added tests for the correct form components for the different forms
* Feat/800: Split up the proposal-form-vote-and-enactment-deadline components inside the file to make things a bit more readable
* Feat/800: router config webpack chunk name tweak
* Feat/800: Lint issue fixed
* Feat/800: Fixed timing issue with get-[deadline]-timestamp tests
* Feat/800: Setting a system time in proposal-form-vote-and-enactment-deadline.spec.tsx that doesn't get affected by British Summer Time
* Feat/800: Skipping a cypress test as the newProposalButton no longer takes a user directly to a proposal form. Leaving it in the codebase as the test is very likely to be updated.
* Feat/800: Adding comment on why I've skipped a cypress test
Co-authored-by: Dexter <dexter@vega.xyz>
Co-authored-by: Matthew Russell <mattrussell36@gmail.com>
Co-authored-by: Dexter Edwards <dexter.edwards93@gmail.com>
2022-09-23 10:10:13 +00:00
|
|
|
import { useRoutes } from 'react-router-dom';
|
2022-04-20 19:37:44 +00:00
|
|
|
|
|
|
|
import { SplashLoader } from '../components/splash-loader';
|
|
|
|
import routerConfig from './router-config';
|
|
|
|
|
|
|
|
export interface RouteChildProps {
|
|
|
|
name: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
interface RouteErrorBoundaryProps extends WithTranslation {
|
|
|
|
children: React.ReactElement;
|
|
|
|
}
|
|
|
|
|
|
|
|
class RouteErrorBoundary extends React.Component<
|
|
|
|
RouteErrorBoundaryProps,
|
|
|
|
{ hasError: boolean }
|
|
|
|
> {
|
|
|
|
constructor(props: RouteErrorBoundaryProps) {
|
|
|
|
super(props);
|
|
|
|
this.state = { hasError: false };
|
|
|
|
}
|
|
|
|
|
|
|
|
static getDerivedStateFromError() {
|
|
|
|
return { hasError: true };
|
|
|
|
}
|
|
|
|
|
|
|
|
override componentDidCatch(error: Error) {
|
|
|
|
Sentry.captureException(error);
|
|
|
|
}
|
|
|
|
|
|
|
|
override render() {
|
|
|
|
if (this.state.hasError) {
|
|
|
|
return <h1>{this.props.t('Something went wrong')}</h1>;
|
|
|
|
}
|
|
|
|
|
|
|
|
return this.props.children;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const BoundaryWithTranslation = withTranslation()(RouteErrorBoundary);
|
|
|
|
|
|
|
|
export const AppRouter = () => {
|
Feat/800 better proposal ux round 1 (#1223)
* Feat/800: Configured routes for different proposal types
* Feat/800: Refactored propose.tsx to be a hub for the new proposal routes
* Feat/800: Link style tweak for proposals guide
* Feat/927: Hydrating the new proposal forms
* chore: fix typings for shared components
* Feat/927: Proposal forms built with reusable components
* Feat/800: Updated network params, added new method to get param keys as well as values, updated generated types
* Feat/800: Updated and built more reusable proposal form components
* Feat/800: Removed old catchall file of reusable proposal form components
* Feat/800: Added utils for vote deadline and enactment timestamps
* Feat/800: Readded necessary 'color-scheme-dark' class for dark-theme date and datetime inputs
* Feat/800: Tweak to icon positioning on the dialog component
* Feat/800: Regenerated types for network params
* Feat/800: Added iso8601-duration package for working with API vote deadline and enactment data
* Feat/800: Reworked the proposal forms
* Feat/800: Couple of translation additions
* Feat/800: Another translation addition
* Feat/800: Raw proposal test (tests as per old proposal form test)
* Feat/800: Some basic proposal form tests
* Feat/800: Fixing small types error in test
* Feat/800: Updating simple proposal form tests
* Feat/800: Set up env-specific proposal docs links
* Feat/800: Deadlines to the bottom of proposal forms
* Feat/800: Another type error from API changes fixed
* Feat/800: Added the spam protection min tokens network param to proposal forms requests, and the min requirements now displays the larger value of spam protection or min proposer balance
* Feat/800: Network param value change now a textarea
* Feat/800: Improved way to pass docs url
* Feat/800: Added useful explorer links to proposal forms
* Feat/800: Show current value of selected network param in proposal form
* Feat/800: Removed wallet-confirmation buffer, suspect it is not necessary
* Feat/800: Condense vote and enactment ui into single component for simpler state management, memoised some stuff
* Feat/800: Set a default select option for the market selector
* Feat/800: For network params that aren't JSON, display the network param current value in a readonly text input rather than the syntax highlighter
* Feat/800: Corrected network param form network params
* Feat/800: Timestamp functions for closing, enactment and validation, with tests
* Feat/800: More translations
* Feat/800: Added validation options to proposal-form-vote-and-enactment-deadline.tsx, generally improved the component and added tests
* Feat/800: Improved workings of proposal-form-min-requirements.tsx and wrote tests
* Feat/800: Tests for the other reusable form components
* Feat/800: Improved tests for the proposal forms
* Feat/800: Corrected mistake in get-enactment-timestamp.ts
* Feat/800: Fixed type issues that were preventing spotting an error
* Feat/800: Added some extra docs links
* Feat/800: Using renamed Dialog passed in from useProposalSubmit
* refactor: network params to return an object
* fix: update net param form, remove old net params obj
* fix: check for params before rendering
* Feat/800: Rename and simplify isJson based off PR comment
* Feat/800: Small tweaks to timestamp helpers based on PR comments
* Feat/800: Removed proposal-docs-link.tsx
* Feat/800: Used bignumber for min-requirements calculation
* Feat/800: Update tests to work with merged network params branch
* Feat/800: Removed unnecessary translations splitting
* Feat/800: Removed unwanted test
* Feat/800: Removed unwanted tests
* Feat/800: Consistent arrow functions
* Feat/800: Sorted links
* Feat/800: Removed unnecessary typecasting
* Feat/800: Refactored routing
* Feat/800: Refactored mocking of proposal forms to use MockedProvider
* Feat/800: Correct response from the raw proposal submission test
* Feat/800: Removed console.logs added for debugging
* Feat/800: Result of running 'nx format:write'
* Feat/800: Cleaning up lint warnings
* Update apps/token/.env.stagnet3
Co-authored-by: Dexter Edwards <dexter.edwards93@gmail.com>
* Feat/800: Added extra test for docs link in the proposal-form-terms component
* Feat/800: Removed stray console.log
* Feat/800: Added basic render test for proposal-form-terms and cleaned up a bit
* Feat/800: Added tests for the correct form components for the different forms
* Feat/800: Split up the proposal-form-vote-and-enactment-deadline components inside the file to make things a bit more readable
* Feat/800: router config webpack chunk name tweak
* Feat/800: Lint issue fixed
* Feat/800: Fixed timing issue with get-[deadline]-timestamp tests
* Feat/800: Setting a system time in proposal-form-vote-and-enactment-deadline.spec.tsx that doesn't get affected by British Summer Time
* Feat/800: Skipping a cypress test as the newProposalButton no longer takes a user directly to a proposal form. Leaving it in the codebase as the test is very likely to be updated.
* Feat/800: Adding comment on why I've skipped a cypress test
Co-authored-by: Dexter <dexter@vega.xyz>
Co-authored-by: Matthew Russell <mattrussell36@gmail.com>
Co-authored-by: Dexter Edwards <dexter.edwards93@gmail.com>
2022-09-23 10:10:13 +00:00
|
|
|
const routes = useRoutes(routerConfig);
|
|
|
|
|
2022-04-20 19:37:44 +00:00
|
|
|
const splashLoading = (
|
|
|
|
<Splash>
|
|
|
|
<SplashLoader />
|
|
|
|
</Splash>
|
|
|
|
);
|
|
|
|
|
|
|
|
return (
|
|
|
|
<BoundaryWithTranslation>
|
Feat/800 better proposal ux round 1 (#1223)
* Feat/800: Configured routes for different proposal types
* Feat/800: Refactored propose.tsx to be a hub for the new proposal routes
* Feat/800: Link style tweak for proposals guide
* Feat/927: Hydrating the new proposal forms
* chore: fix typings for shared components
* Feat/927: Proposal forms built with reusable components
* Feat/800: Updated network params, added new method to get param keys as well as values, updated generated types
* Feat/800: Updated and built more reusable proposal form components
* Feat/800: Removed old catchall file of reusable proposal form components
* Feat/800: Added utils for vote deadline and enactment timestamps
* Feat/800: Readded necessary 'color-scheme-dark' class for dark-theme date and datetime inputs
* Feat/800: Tweak to icon positioning on the dialog component
* Feat/800: Regenerated types for network params
* Feat/800: Added iso8601-duration package for working with API vote deadline and enactment data
* Feat/800: Reworked the proposal forms
* Feat/800: Couple of translation additions
* Feat/800: Another translation addition
* Feat/800: Raw proposal test (tests as per old proposal form test)
* Feat/800: Some basic proposal form tests
* Feat/800: Fixing small types error in test
* Feat/800: Updating simple proposal form tests
* Feat/800: Set up env-specific proposal docs links
* Feat/800: Deadlines to the bottom of proposal forms
* Feat/800: Another type error from API changes fixed
* Feat/800: Added the spam protection min tokens network param to proposal forms requests, and the min requirements now displays the larger value of spam protection or min proposer balance
* Feat/800: Network param value change now a textarea
* Feat/800: Improved way to pass docs url
* Feat/800: Added useful explorer links to proposal forms
* Feat/800: Show current value of selected network param in proposal form
* Feat/800: Removed wallet-confirmation buffer, suspect it is not necessary
* Feat/800: Condense vote and enactment ui into single component for simpler state management, memoised some stuff
* Feat/800: Set a default select option for the market selector
* Feat/800: For network params that aren't JSON, display the network param current value in a readonly text input rather than the syntax highlighter
* Feat/800: Corrected network param form network params
* Feat/800: Timestamp functions for closing, enactment and validation, with tests
* Feat/800: More translations
* Feat/800: Added validation options to proposal-form-vote-and-enactment-deadline.tsx, generally improved the component and added tests
* Feat/800: Improved workings of proposal-form-min-requirements.tsx and wrote tests
* Feat/800: Tests for the other reusable form components
* Feat/800: Improved tests for the proposal forms
* Feat/800: Corrected mistake in get-enactment-timestamp.ts
* Feat/800: Fixed type issues that were preventing spotting an error
* Feat/800: Added some extra docs links
* Feat/800: Using renamed Dialog passed in from useProposalSubmit
* refactor: network params to return an object
* fix: update net param form, remove old net params obj
* fix: check for params before rendering
* Feat/800: Rename and simplify isJson based off PR comment
* Feat/800: Small tweaks to timestamp helpers based on PR comments
* Feat/800: Removed proposal-docs-link.tsx
* Feat/800: Used bignumber for min-requirements calculation
* Feat/800: Update tests to work with merged network params branch
* Feat/800: Removed unnecessary translations splitting
* Feat/800: Removed unwanted test
* Feat/800: Removed unwanted tests
* Feat/800: Consistent arrow functions
* Feat/800: Sorted links
* Feat/800: Removed unnecessary typecasting
* Feat/800: Refactored routing
* Feat/800: Refactored mocking of proposal forms to use MockedProvider
* Feat/800: Correct response from the raw proposal submission test
* Feat/800: Removed console.logs added for debugging
* Feat/800: Result of running 'nx format:write'
* Feat/800: Cleaning up lint warnings
* Update apps/token/.env.stagnet3
Co-authored-by: Dexter Edwards <dexter.edwards93@gmail.com>
* Feat/800: Added extra test for docs link in the proposal-form-terms component
* Feat/800: Removed stray console.log
* Feat/800: Added basic render test for proposal-form-terms and cleaned up a bit
* Feat/800: Added tests for the correct form components for the different forms
* Feat/800: Split up the proposal-form-vote-and-enactment-deadline components inside the file to make things a bit more readable
* Feat/800: router config webpack chunk name tweak
* Feat/800: Lint issue fixed
* Feat/800: Fixed timing issue with get-[deadline]-timestamp tests
* Feat/800: Setting a system time in proposal-form-vote-and-enactment-deadline.spec.tsx that doesn't get affected by British Summer Time
* Feat/800: Skipping a cypress test as the newProposalButton no longer takes a user directly to a proposal form. Leaving it in the codebase as the test is very likely to be updated.
* Feat/800: Adding comment on why I've skipped a cypress test
Co-authored-by: Dexter <dexter@vega.xyz>
Co-authored-by: Matthew Russell <mattrussell36@gmail.com>
Co-authored-by: Dexter Edwards <dexter.edwards93@gmail.com>
2022-09-23 10:10:13 +00:00
|
|
|
<React.Suspense fallback={splashLoading}>{routes}</React.Suspense>
|
2022-04-20 19:37:44 +00:00
|
|
|
</BoundaryWithTranslation>
|
|
|
|
);
|
|
|
|
};
|