Skip to content

Commit 653f505

Browse files
authored
Merge branch 'dev' into refactor/evidence-refactors
2 parents 7cf0b1e + a1dff3b commit 653f505

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1101
-136
lines changed

kleros-sdk/src/dataMappings/utils/populateTemplate.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { validate } from "./DisputeDetailsValidator";
44

55
export const populateTemplate = (mustacheTemplate: string, data: any): DisputeDetails => {
66
const render = mustache.render(mustacheTemplate, data);
7-
console.log("MUSTACHE RENDER: ", render);
87
const dispute = JSON.parse(render);
98

109
// TODO: the validation below is too strict, it should be fixed, disabled for now, FIXME

web/netlify/functions/authUser.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import middy from "@middy/core";
22
import jsonBodyParser from "@middy/http-json-body-parser";
33
import { createClient } from "@supabase/supabase-js";
4+
import { ethers } from "ethers";
45
import * as jwt from "jose";
56
import { SiweMessage } from "siwe";
67

7-
import { ETH_SIGNATURE_REGEX, DEFAULT_CHAIN } from "consts/processEnvConsts";
8+
import { ETH_SIGNATURE_REGEX, DEFAULT_CHAIN, isProductionDeployment } from "consts/processEnvConsts";
89

910
import { netlifyUri, netlifyDeployUri, netlifyDeployPrimeUri } from "src/generatedNetlifyInfo.json";
1011
import { Database } from "src/types/supabase-notification";
@@ -73,9 +74,14 @@ const authUser = async (event) => {
7374
}
7475

7576
try {
76-
await siweMessage.verify({ signature, nonce: nonceData.nonce, time: new Date().toISOString() });
77+
// If the main Alchemy API key is permissioned, it won't work in a Netlify Function so we use a dedicated API key
78+
const alchemyApiKey = process.env.ALCHEMY_FUNCTIONS_API_KEY ?? process.env.ALCHEMY_API_KEY;
79+
const alchemyChain = isProductionDeployment() ? "arb-mainnet" : "arb-sepolia";
80+
const alchemyRpcURL = `https://${alchemyChain}.g.alchemy.com/v2/${alchemyApiKey}`;
81+
const provider = new ethers.providers.JsonRpcProvider(alchemyRpcURL);
82+
await siweMessage.verify({ signature, nonce: nonceData.nonce, time: new Date().toISOString() }, { provider });
7783
} catch (err) {
78-
throw new Error("Invalid signer");
84+
throw new Error("Invalid signer: " + JSON.stringify(err));
7985
}
8086

8187
const { error } = await supabase.from("user-nonce").delete().match({ address: lowerCaseAddress });

web/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
"@wagmi/cli": "^2.0.3",
6565
"eslint": "^8.56.0",
6666
"eslint-config-prettier": "^8.10.0",
67+
"eslint-import-resolver-typescript": "^3.6.1",
6768
"eslint-plugin-react": "^7.33.2",
6869
"eslint-plugin-react-hooks": "^4.6.0",
6970
"lru-cache": "^7.18.3",
@@ -77,7 +78,7 @@
7778
"@cyntler/react-doc-viewer": "^1.16.3",
7879
"@filebase/client": "^0.0.5",
7980
"@kleros/kleros-sdk": "workspace:^",
80-
"@kleros/ui-components-library": "^2.12.0",
81+
"@kleros/ui-components-library": "^2.14.0",
8182
"@lifi/widget": "^2.10.1",
8283
"@middy/core": "^5.3.2",
8384
"@middy/http-json-body-parser": "^5.3.2",
@@ -92,6 +93,7 @@
9293
"amqplib": "^0.10.3",
9394
"chart.js": "^3.9.1",
9495
"chartjs-adapter-moment": "^1.0.1",
96+
"chartjs-plugin-datalabels": "^2.2.0",
9597
"core-js": "^3.35.0",
9698
"ethers": "^5.7.2",
9799
"graphql": "^16.8.1",

web/src/app.tsx

Lines changed: 65 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from "react";
1+
import React, { lazy, Suspense } from "react";
22

33
import { Route } from "react-router-dom";
44

@@ -9,17 +9,18 @@ import IsListProvider from "context/IsListProvider";
99
import { NewDisputeProvider } from "context/NewDisputeContext";
1010
import QueryClientProvider from "context/QueryClientProvider";
1111
import StyledComponentsProvider from "context/StyledComponentsProvider";
12+
const Home = lazy(() => import("./pages/Home"));
13+
const Cases = lazy(() => import("./pages/Cases"));
14+
const Dashboard = lazy(() => import("./pages/Dashboard"));
15+
const Courts = lazy(() => import("./pages/Courts"));
16+
const DisputeTemplateView = lazy(() => import("./pages/DisputeTemplateView"));
17+
const DisputeResolver = lazy(() => import("./pages/Resolver"));
18+
const GetPnk = lazy(() => import("./pages/GetPnk"));
1219
import Web3Provider from "context/Web3Provider";
1320

21+
import Loader from "components/Loader";
1422
import Layout from "layout/index";
1523

16-
import Cases from "./pages/Cases";
17-
import Courts from "./pages/Courts";
18-
import Dashboard from "./pages/Dashboard";
19-
import DisputeTemplateView from "./pages/DisputeTemplateView";
20-
import GetPnk from "./pages/GetPnk";
21-
import Home from "./pages/Home";
22-
import DisputeResolver from "./pages/Resolver";
2324
import { SentryRoutes } from "./utils/sentry";
2425

2526
const App: React.FC = () => {
@@ -32,13 +33,62 @@ const App: React.FC = () => {
3233
<NewDisputeProvider>
3334
<SentryRoutes>
3435
<Route path="/" element={<Layout />}>
35-
<Route index element={<Home />} />
36-
<Route path="cases/*" element={<Cases />} />
37-
<Route path="courts/*" element={<Courts />} />
38-
<Route path="dashboard/:page/:order/:filter" element={<Dashboard />} />
39-
<Route path="dispute-template" element={<DisputeTemplateView />} />
40-
<Route path="resolver/*" element={<DisputeResolver />} />
41-
<Route path="get-pnk/*" element={<GetPnk />} />
36+
<Route
37+
index
38+
element={
39+
<Suspense fallback={<Loader width={"48px"} height={"48px"} />}>
40+
<Home />
41+
</Suspense>
42+
}
43+
/>
44+
<Route
45+
path="cases/*"
46+
element={
47+
<Suspense fallback={<Loader width={"48px"} height={"48px"} />}>
48+
<Cases />
49+
</Suspense>
50+
}
51+
/>
52+
<Route
53+
path="courts/*"
54+
element={
55+
<Suspense fallback={<Loader width={"48px"} height={"48px"} />}>
56+
<Courts />
57+
</Suspense>
58+
}
59+
/>
60+
<Route
61+
path="dashboard/:page/:order/:filter"
62+
element={
63+
<Suspense fallback={<Loader width={"48px"} height={"48px"} />}>
64+
<Dashboard />
65+
</Suspense>
66+
}
67+
/>
68+
<Route
69+
path="dispute-template"
70+
element={
71+
<Suspense fallback={<Loader width={"48px"} height={"48px"} />}>
72+
<DisputeTemplateView />
73+
</Suspense>
74+
}
75+
/>
76+
<Route
77+
path="resolver/*"
78+
element={
79+
<Suspense fallback={<Loader width={"48px"} height={"48px"} />}>
80+
<DisputeResolver />
81+
</Suspense>
82+
}
83+
/>
84+
<Route
85+
path="get-pnk/*"
86+
element={
87+
<Suspense fallback={<Loader width={"48px"} height={"48px"} />}>
88+
<GetPnk />
89+
</Suspense>
90+
}
91+
/>
4292
<Route path="*" element={<h1>Justice not found here ¯\_( ͡° ͜ʖ ͡°)_/¯</h1>} />
4393
</Route>
4494
</SentryRoutes>

0 commit comments

Comments
 (0)