Skip to content

Commit b9fe8b4

Browse files
authored
Merge pull request #107 from BootNodeDev/feat/maintenance
2 parents 3366cc3 + 04377ca commit b9fe8b4

File tree

6 files changed

+64
-4
lines changed

6 files changed

+64
-4
lines changed

typescript/ui/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"@solana/web3.js": "^1.95.4",
3636
"@tanstack/react-query": "^5.59.20",
3737
"@vercel/analytics": "^1.5.0",
38+
"@vercel/edge-config": "^1.4.0",
3839
"@vercel/functions": "^1.5.0",
3940
"bignumber.js": "^9.1.2",
4041
"buffer": "^6.0.3",

typescript/ui/src/components/errors/ErrorBoundary.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ export function ErrorBoundary({ children }: PropsWithChildren<unknown>) {
88

99
function SupportLink() {
1010
return (
11-
<a href={links.discord} target="_blank" rel="noopener noreferrer" className="mt-5 text-sm">
12-
For support, join the <span className="underline underline-offset-2">Hyperlane Discord</span>{' '}
11+
<a href={links.support} target="_blank" rel="noopener noreferrer" className="mt-5 text-sm">
12+
For support, join the <span className="underline underline-offset-2">Discussion in GitHub</span>{' '}
1313
</a>
1414
);
1515
}

typescript/ui/src/consts/links.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ export const links = {
33
explorer: 'https://explorer.hyperlane.xyz',
44
support: 'https://github.com/BootNodeDev/intents-framework/discussions/89',
55
github: 'https://github.com/BootNodeDev/intents-framework',
6-
docs: 'https://github.com/BootNodeDev/intents-framework#open-intents-framework',
6+
docs: 'https://github.com/BootNodeDev/intents-framework#open-intents-framework',
77
};

typescript/ui/src/middleware.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { get } from '@vercel/edge-config';
12
import { geolocation } from '@vercel/functions';
23
import { NextRequest, NextResponse } from 'next/server';
34

@@ -44,7 +45,8 @@ const BLOCKED_REGIONS = [
4445
},
4546
];
4647

47-
export function middleware(req: NextRequest) {
48+
export async function middleware(req: NextRequest) {
49+
// country restriction
4850
const { country, region } = geolocation(req);
4951

5052
if (country && BLOCKED_COUNTRIES.includes(country)) {
@@ -59,5 +61,15 @@ export function middleware(req: NextRequest) {
5961
return NextResponse.redirect(new URL('/blocked', req.url));
6062
}
6163

64+
// maintenance mode
65+
const isInMaintenanceMode = await get<boolean>('isInMaintenanceMode');
66+
67+
if (isInMaintenanceMode) {
68+
req.nextUrl.pathname = '/maintenance';
69+
70+
return NextResponse.rewrite(req.nextUrl);
71+
}
72+
73+
// default
6274
return NextResponse.next();
6375
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import type { NextPage } from 'next';
2+
import { useRouter } from 'next/router';
3+
4+
const Home: NextPage = () => {
5+
const { reload } = useRouter();
6+
return (
7+
<div className="space-y-3 pt-4">
8+
<div className="relative">
9+
<div className="rounded-lg bg-white p-8 text-center shadow-md">
10+
<h1 className="mb-4 text-3xl">We&apos;ll be back soon!</h1>
11+
<p className="mb-6 text-lg">We are currently undergoing scheduled maintenance.</p>
12+
<p className="mb-6 text-lg">Please refresh the page or check back later.</p>
13+
<button
14+
className="cursor-pointer rounded bg-blue-500 px-6 py-3 text-base text-white hover:bg-blue-700"
15+
onClick={reload}
16+
>
17+
Refresh
18+
</button>
19+
</div>{' '}
20+
</div>
21+
</div>
22+
);
23+
};
24+
25+
export default Home;

typescript/ui/yarn.lock

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4056,6 +4056,7 @@ __metadata:
40564056
"@typescript-eslint/eslint-plugin": "npm:^8.13.0"
40574057
"@typescript-eslint/parser": "npm:^8.13.0"
40584058
"@vercel/analytics": "npm:^1.5.0"
4059+
"@vercel/edge-config": "npm:^1.4.0"
40594060
"@vercel/functions": "npm:^1.5.0"
40604061
autoprefixer: "npm:^10.4.20"
40614062
bignumber.js: "npm:^9.1.2"
@@ -10045,6 +10046,27 @@ __metadata:
1004510046
languageName: node
1004610047
linkType: hard
1004710048

10049+
"@vercel/edge-config-fs@npm:0.1.0":
10050+
version: 0.1.0
10051+
resolution: "@vercel/edge-config-fs@npm:0.1.0"
10052+
checksum: 10/4eb27927a1c6a9d77cee4457424e208c3ff7f01e1cd0249b133804d12fd7099bd1aed6a9d9574b122d3bd59289b294a913b4df05bb69aca6091c8a020cbc2121
10053+
languageName: node
10054+
linkType: hard
10055+
10056+
"@vercel/edge-config@npm:^1.4.0":
10057+
version: 1.4.0
10058+
resolution: "@vercel/edge-config@npm:1.4.0"
10059+
dependencies:
10060+
"@vercel/edge-config-fs": "npm:0.1.0"
10061+
peerDependencies:
10062+
"@opentelemetry/api": ^1.7.0
10063+
peerDependenciesMeta:
10064+
"@opentelemetry/api":
10065+
optional: true
10066+
checksum: 10/669c34db94bedd41c7b8efc05781f5a7fee2920e1c625228d15c27648eb1d5d15a66b20778ec56105cd08837d29eb40537806ff7b73aac497c1deebaa71a2796
10067+
languageName: node
10068+
linkType: hard
10069+
1004810070
"@vercel/functions@npm:^1.5.0":
1004910071
version: 1.5.0
1005010072
resolution: "@vercel/functions@npm:1.5.0"

0 commit comments

Comments
 (0)