Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
e55889a
feat: display nsloc diff
frimoldi Aug 9, 2023
9d0f460
feat: scope diff modal
frimoldi Aug 10, 2023
be9b6db
feat: update protocols slug
frimoldi Aug 10, 2023
1490dfe
fix: protocol name could be undefined
frimoldi Aug 10, 2023
c037f95
fix
frimoldi Aug 10, 2023
009f672
Merge pull request #367 from sherlock-protocol/feat/protocols-slug
Evert0x Aug 10, 2023
49d18ed
fix: protocols slugs
frimoldi Aug 11, 2023
c1eed4c
Merge pull request #368 from sherlock-protocol/fix/protocols-slugs
Evert0x Aug 11, 2023
2a07952
feat: icons and color
frimoldi Aug 13, 2023
aa5f6b3
feat: display diff with original scope
frimoldi Aug 14, 2023
0cf7fce
feat: legend
frimoldi Aug 15, 2023
0f2cd93
feat: admin scope
frimoldi Aug 15, 2023
17c282e
fix: readonly scope
frimoldi Aug 16, 2023
008afaf
Merge branch 'main' into feat/scoping-v2
frimoldi Aug 16, 2023
f94324f
fix: wording
frimoldi Aug 16, 2023
2d2cbb1
fix: update scope performance
frimoldi Aug 16, 2023
a39e439
fix: make twitter field optional
frimoldi Aug 17, 2023
2b025b1
Merge pull request #369 from sherlock-protocol/fix/create-contest-twi…
Evert0x Aug 17, 2023
d917a6c
fix: contest pool tbd
frimoldi Aug 17, 2023
b8f8860
Merge pull request #370 from sherlock-protocol/fix/dashboard-contest-…
Evert0x Aug 17, 2023
88775f0
fix: lead senior fixed pay tbd
frimoldi Aug 17, 2023
3db223a
Merge pull request #371 from sherlock-protocol/fix/dashboard-contest-…
Evert0x Aug 17, 2023
0d22825
feat: diplay nsloc even if there is no initial scope
frimoldi Aug 18, 2023
9c45193
fix: update nsloc labels
frimoldi Aug 18, 2023
c518a58
Merge branch 'main' into feat/scoping-v2
frimoldi Aug 19, 2023
a5c2f59
Merge pull request #372 from sherlock-protocol/feat/scoping-v2
Evert0x Aug 19, 2023
e8e8623
refactor create contest form
frimoldi Aug 21, 2023
c2dbb33
feat: re-use contest form for updates
frimoldi Aug 22, 2023
3c9ed33
fix: dirty form indicator
frimoldi Aug 22, 2023
7e96d94
feat: create update contest hook
frimoldi Aug 23, 2023
8774878
feat: add edit icon
frimoldi Aug 23, 2023
77eaf40
feat: add extra nsloc field
frimoldi Aug 25, 2023
cab0499
feat: display nsloc in admin scope
frimoldi Aug 25, 2023
df67238
feat: admin scope download report
frimoldi Aug 25, 2023
6f56174
Merge pull request #373 from sherlock-protocol/feat/update-contest-data
Evert0x Aug 26, 2023
8d8c1c8
Merge branch 'main' into feat/scope-extra-nsloc
frimoldi Aug 28, 2023
a0cb49c
fix: remove opyn as default selection
frimoldi Aug 29, 2023
90ce1f9
Merge pull request #375 from sherlock-protocol/feat/protocol-balance-…
Evert0x Aug 29, 2023
8463661
Merge branch 'main' into feat/scope-extra-nsloc
frimoldi Aug 29, 2023
82a78da
Merge pull request #374 from sherlock-protocol/feat/scope-extra-nsloc
jacksanford1 Aug 29, 2023
b163d12
feat: admin reset scope button
frimoldi Aug 31, 2023
398002b
fix: send undefined values to api
frimoldi Sep 1, 2023
0afa830
fix
frimoldi Sep 1, 2023
0025843
Merge pull request #377 from sherlock-protocol/fix/create-contest-form
Evert0x Sep 5, 2023
230e966
Merge branch 'main' into feat/admin-reset-scope-submission
frimoldi Sep 5, 2023
4614bba
Merge pull request #376 from sherlock-protocol/feat/admin-reset-scope…
frimoldi Sep 5, 2023
c9ed1e8
feat: add Ajna's claim
frimoldi Sep 26, 2023
53f0e87
fix: typos
frimoldi Sep 26, 2023
c0afb07
Merge pull request #379 from sherlock-protocol/feat/ajna-claim
Evert0x Sep 26, 2023
10401a2
fix: render context question description html
rcstanciu Oct 10, 2023
7f30898
Merge pull request #380 from sherlock-protocol/fix/context-question-html
Evert0x Oct 10, 2023
3a9f8d0
feat: add total rewards extra field
frimoldi Oct 18, 2023
9550838
fix: remove admin fees
frimoldi Oct 18, 2023
cc3a767
Merge pull request #381 from sherlock-protocol/feat/create-contest-to…
Evert0x Oct 27, 2023
de2e81b
fix: contest creation full amount
frimoldi Nov 7, 2023
dfc99a5
Merge pull request #382 from sherlock-protocol/fix/contest-creation-f…
jacksanford1 Nov 7, 2023
6877a60
fix: timeout and error
frimoldi Nov 8, 2023
ea0307e
Merge pull request #383 from sherlock-protocol/fix/admin-scoping-timeout
jacksanford1 Nov 8, 2023
00ede6e
fix: disable auto logout
frimoldi Nov 15, 2023
b02ac77
Merge pull request #384 from sherlock-protocol/fix/disable-auto-logout
Czar102 Nov 18, 2023
c49d8aa
fix: Winter staking round label
frimoldi Nov 22, 2023
542d637
Merge pull request #385 from sherlock-protocol/fix/winter-staking-round
jacksanford1 Nov 22, 2023
0e429e6
feat: create and confirm draft contests
frimoldi Dec 7, 2023
cb43ff3
fix: confirm contest timeout
frimoldi Dec 10, 2023
bee86d8
fix: reset final scope submission
frimoldi Dec 12, 2023
bd696a4
feat: reset initial scope submission
frimoldi Dec 13, 2023
12c322d
feat: delete draft contest
frimoldi Dec 13, 2023
31002f9
feat: dashboard redirect
rcstanciu Dec 14, 2023
57b2dc8
Merge pull request #387 from sherlock-protocol/feat/dashboard-url-red…
Evert0x Dec 14, 2023
afec2be
Merge pull request #386 from sherlock-protocol/feat/admin-new-dashboard
Evert0x Dec 14, 2023
6f5aff9
fix: remove submission ready condition
frimoldi Dec 19, 2023
d910365
Merge pull request #388 from sherlock-protocol/fix/approve-contest
Evert0x Dec 19, 2023
efb7625
fix: scoping
frimoldi Dec 22, 2023
4114b40
fix: remove contest linesOfCode
frimoldi Dec 22, 2023
ae4ec9e
Merge pull request #389 from sherlock-protocol/fix/scoping
rcstanciu Dec 26, 2023
92617bd
fix: parse contest nsloc
frimoldi Dec 26, 2023
6a4d059
Merge pull request #390 from sherlock-protocol/fix/contest-nsloc
Evert0x Dec 28, 2023
9be2939
fix: admin scope contracts amount
frimoldi Jan 2, 2024
c1ee53c
Merge pull request #391 from sherlock-protocol/fix/admin-scope-contracts
Evert0x Jan 2, 2024
f4aff50
feat: add minimum and recommended pricing
frimoldi Jan 9, 2024
1986ea0
Merge pull request #393 from sherlock-protocol/feat/minimum-recommend…
frimoldi Jan 10, 2024
cdb35cd
feat: redirect
rcstanciu Jan 17, 2024
6f3b8b6
Merge pull request #394 from sherlock-protocol/feat/admin-redirect
Evert0x Jan 17, 2024
43c0622
feat: add payouts nav link to admin
frimoldi Jan 17, 2024
1ed4e31
Merge pull request #395 from sherlock-protocol/feat/admin-payouts-nav
Evert0x Jan 17, 2024
35f5470
fix: navigation payouts
frimoldi Jan 18, 2024
99cae2e
Merge pull request #396 from sherlock-protocol/fix/navigation
Evert0x Jan 18, 2024
f5f564d
feat: display multiple tweets in announcement preview
frimoldi Jan 19, 2024
4758f3d
Merge branch 'main' into feat/twitter-thread-announcement
frimoldi Jan 19, 2024
cd4ff3c
Merge pull request #397 from sherlock-protocol/feat/twitter-thread-an…
frimoldi Jan 21, 2024
864b945
feat: display indicator if telegram is added
frimoldi Jan 22, 2024
7ef6816
feat: display tooltip on telegram indicator
frimoldi Jan 23, 2024
e8dafee
Merge branch 'main' into feat/admin-telegram-indicator
frimoldi Jan 23, 2024
72883c7
Merge pull request #398 from sherlock-protocol/feat/admin-telegram-in…
Evert0x Jan 24, 2024
618a490
feat: generate report for active contests
rcstanciu Feb 14, 2024
eae531b
Merge pull request #399 from sherlock-protocol/feat/generate-report-c…
Evert0x Feb 14, 2024
c1938e2
feat: filter and sort draft contests
rcstanciu Feb 22, 2024
edb01cf
Merge pull request #400 from sherlock-protocol/feat/draft-contests-sort
rcstanciu Feb 22, 2024
afff404
fix: use contest's lead senior selection date
frimoldi Feb 27, 2024
57c6707
Merge pull request #401 from sherlock-protocol/fix/lsw-selection-date
Evert0x Feb 28, 2024
19e02a1
feat: draft contests filter
rcstanciu Mar 4, 2024
3657e8f
Merge pull request #402 from sherlock-protocol/feat/draft-contest-filter
Evert0x Mar 4, 2024
9b69346
chore: remove github field
rcstanciu Mar 6, 2024
aa33f17
Merge pull request #403 from sherlock-protocol/chore/remove-github-field
rcstanciu Mar 6, 2024
4d83eb2
feat: best efforts
rcstanciu Mar 13, 2024
aabe1e1
feat: update contest
rcstanciu Mar 18, 2024
d5f5c03
Merge pull request #405 from sherlock-protocol/feat/multiple-contest-…
Evert0x Mar 19, 2024
352f636
feat: admin/contests redirect
frimoldi Mar 20, 2024
509ce83
admin contests redirect
frimoldi Mar 21, 2024
c139209
feat: add button to draft contests
frimoldi Mar 21, 2024
3d942d4
add manage users button
frimoldi Mar 21, 2024
939bc0c
Merge pull request #406 from sherlock-protocol/feat/admin-redirect
frimoldi Mar 21, 2024
7590ace
feat: previous contest in add contest form
rcstanciu Mar 26, 2024
2f2cea0
feat: admin reset QA
frimoldi Mar 27, 2024
d71c411
Merge pull request #407 from sherlock-protocol/feat/update-contests
rcstanciu Mar 27, 2024
2b66427
Merge pull request #408 from sherlock-protocol/feat/admin-reset-qa
frimoldi Mar 27, 2024
51c1c70
fix: remove staking round message
frimoldi Apr 1, 2024
ba7a25c
Merge pull request #409 from sherlock-protocol/fix/remove-staking-rou…
Evert0x Apr 1, 2024
84876c0
feat: collapse draft contests
frimoldi Apr 1, 2024
d80f17f
Merge pull request #410 from sherlock-protocol/feat/admin-collapse-dr…
frimoldi Apr 2, 2024
448893f
fix: freeze
rcstanciu Apr 22, 2024
ed165a4
Merge pull request #411 from sherlock-protocol/fix/claim-freeze
Evert0x Apr 23, 2024
7bb8c7a
fix: add auto restake warning
frimoldi May 8, 2024
ee3dac8
Merge pull request #412 from sherlock-protocol/fix/restake-message
Evert0x May 8, 2024
0d650cf
feat: show excess coverage
rcstanciu Aug 1, 2024
a058b07
Merge pull request #413 from sherlock-protocol/feat/excess-coverage
rcstanciu Aug 7, 2024
d9ac590
feat: update admin pricing formula
frimoldi Sep 10, 2024
9614361
Merge pull request #415 from sherlock-protocol/feat/update-admin-pric…
frimoldi Sep 12, 2024
c948d15
fix: pricing formula length
frimoldi Sep 24, 2024
8b82b2d
Merge pull request #416 from sherlock-protocol/fix/pricing-formula-le…
Evert0x Sep 24, 2024
cd6f9cd
feat: add custom token to contest form
frimoldi Oct 25, 2024
1945ed3
feat: add token and exchange rate
frimoldi Nov 5, 2024
b680075
Merge pull request #417 from sherlock-protocol/feat/custom-token-price
Evert0x Nov 5, 2024
667baa5
fix: add token and exchange rate to update endpoint
frimoldi Nov 7, 2024
26aca50
Merge pull request #418 from sherlock-protocol/fix/update-contest-token
Evert0x Nov 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"private": true,
"type": "module",
"dependencies": {
"@floating-ui/react": "^0.26.9",
"@sentry/react": "^6.19.7",
"@sentry/tracing": "^6.19.7",
"@testing-library/jest-dom": "^5.16.1",
Expand Down
2 changes: 1 addition & 1 deletion src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ function App() {
)

useEffect(() => {
if (!connectedAddress || (profile && !addressIsAllowed(connectedAddress))) {
if (profile && connectedAddress && !addressIsAllowed(connectedAddress)) {
signOut()
}
}, [connectedAddress, addressIsAllowed, signOut, profile])
Expand Down
21 changes: 3 additions & 18 deletions src/AppAdmin.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,12 @@ import { Box } from "./components/Box"
import { useAdminSignIn } from "./hooks/api/admin/useAdminSignIn"
import { ErrorModal } from "./pages/ContestDetails/ErrorModal"
import { useAccount } from "wagmi"
import { contests as contestsAPI } from "./hooks/api/axios"
import { adminSignOut as adminSignOutUrl } from "./hooks/api/urls"

const AppInternal = () => {
const { data: adminAddress } = useAdminProfile()
const { address: connectedAddress, isDisconnected } = useAccount()
const { address: connectedAddress } = useAccount()
const { signIn, error, reset } = useAdminSignIn()

useEffect(() => {
if (adminAddress && !connectedAddress && isDisconnected) {
contestsAPI.get(adminSignOutUrl())
}
}, [connectedAddress, adminAddress, isDisconnected])

const handleSignInAsAdmin = useCallback(() => {
signIn()
}, [signIn])
Expand All @@ -33,10 +25,7 @@ const AppInternal = () => {
reset()
}, [reset])

const validAdmin = useMemo(
() => adminAddress && connectedAddress && adminAddress === connectedAddress,
[adminAddress, connectedAddress]
)
const validAdmin = useMemo(() => !!adminAddress, [adminAddress])

const navigationLinks: NavigationLink[] = validAdmin
? [
Expand All @@ -48,17 +37,13 @@ const AppInternal = () => {
title: "CONTESTS",
route: adminRoutes.Contests,
},
{
title: "SCOPE",
route: adminRoutes.Scope,
},
]
: []

return (
<div className={styles.app}>
<div className={styles.noise} />
<Header navigationLinks={navigationLinks} />
<Header navigationLinks={navigationLinks} includePayouts />
<div className={styles.contentContainer}>
<div className={styles.content}>
{validAdmin ? (
Expand Down
14 changes: 10 additions & 4 deletions src/AppProtocolDashboard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -96,17 +96,23 @@ const AppProtocolDashboard = () => {
<Text strong>Contest Prize Pool</Text>
</Td>
<Td>
<Text alignment="right">{`${commify(protocolDashboard.contest.prizePool)} USDC`}</Text>
<Text alignment="right">
{protocolDashboard.contest.prizePool
? ` ${commify(protocolDashboard.contest.prizePool)} USDC`
: "TBD"}
</Text>
</Td>
</Tr>
<Tr>
<Td>
<Text strong>Lead Senior Watson Fixed Pay</Text>
</Td>
<Td>
<Text alignment="right">{`${commify(
protocolDashboard.contest.leadSeniorAuditorFixedPay
)} USDC`}</Text>
<Text alignment="right">
{protocolDashboard.contest.leadSeniorAuditorFixedPay
? `${commify(protocolDashboard.contest.leadSeniorAuditorFixedPay)} USDC`
: "TBD"}
</Text>
</Td>
</Tr>
<Tr>
Expand Down
25 changes: 25 additions & 0 deletions src/components/Checkbox/Checkbox.module.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
@import "../../styles/variables";

.container {
height: 2rem;
width: 2rem;
border-radius: 4px;
border: 1px solid $primary-purple;
color: $primary-purple;
cursor: pointer;
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
transition: all 150ms cubic-bezier(0.4, 0, 0.2, 1);

&:hover {
border-color: lighten($primary-purple, 20%);
color: lighten($primary-purple, 20%);
}

&:active {
border-color: darken($primary-purple, 20%);
color: darken($primary-purple, 20%);
}
}
17 changes: 17 additions & 0 deletions src/components/Checkbox/Checkbox.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { FaCheck } from "react-icons/fa"
import styles from "./Checkbox.module.scss"

type Props = {
checked?: boolean
onChange?: (checked: boolean) => void
}

const Checkbox: React.FC<Props> = ({ checked = false, onChange }) => {
return (
<div className={styles.container} onClick={() => onChange?.(!checked)}>
{checked && <FaCheck size={20} />}
</div>
)
}

export default Checkbox
52 changes: 44 additions & 8 deletions src/components/ClaimsList/ClaimsList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,18 @@ import { formatAmount } from "../../utils/format"
import styles from "./ClaimsList.module.scss"
import cx from "classnames"

const CLAIMS = [
type Claim = {
id: number
protocol: string
date: string
coverageAgreementUrl: string
evidenceUrl?: string
amount: number
txHashUrl: string
status: "paid" | "denied"
}

const CLAIMS: Claim[] = [
{
id: 1,
protocol: "Euler",
Expand All @@ -18,6 +29,7 @@ const CLAIMS = [
"https://sherlock-files.ams3.digitaloceanspaces.com/claims/Euler_0x3019e52a670390f24e4b9b58af62a7367658e457bbb07f86b19b213ec74b5be7_16817996.pdf?hash=d6c8e864a5312384143a21f542e998f6e83357f5b8e3e34ccdcb551404d25c09",
amount: 4_529_285,
txHashUrl: "https://etherscan.io/tx/0x234cd8e369fdcd0387ada4214e563a6a72aad4abd0b464a2873f3eb9dac2579b",
status: "paid",
},
{
id: 2,
Expand All @@ -29,9 +41,29 @@ const CLAIMS = [
"https://sherlock-files.ams3.digitaloceanspaces.com/claims/Sentiment_0x5af5b22283e35ef9d9d4a32753014cdc40fd7a5a5d920d83d2c1e901c10a0a7c_16977102.pdf?hash=f513422f0d98aaac6f669142caf9148172ca7f2a17559f3c1cb26177df11e8ef",
amount: 65_701,
txHashUrl: "https://etherscan.io/tx/0xe67bbb7a9085f1a603fcea1eefe08c7674a2f504e81f6d69df41c8b077c2765e",
status: "paid",
},
{
id: 3,
protocol: "Ajna",
date: "Sept 26, 2023",
coverageAgreementUrl:
"https://github.com/sherlock-protocol/sherlock-reports/blob/main/coverage-agreements/Ajna%20Coverage%20Agreement%202023.07.15.pdf",
amount: 49_500,
txHashUrl: "https://etherscan.io/tx/0xa4a8fbea2c24662ea46e25ab3ab69456a8327463803c4851948c2ba2234fed5f",
status: "paid",
},
]

function getStatusLabel(status: "paid" | "denied") {
switch (status) {
case "paid":
return "Paid"
case "denied":
return "Denied"
}
}

/**
* List of past claims
*/
Expand Down Expand Up @@ -64,7 +96,7 @@ const ClaimsList: React.FC = () => {
<Text strong>Evidence</Text>
</Column>
<Column alignment="center" className={cx(styles.listColumn, styles.link)}>
<Text strong>Transaction</Text>
<Text strong>Status</Text>
</Column>
</Row>
<Column grow={1} spacing="xs" className={styles.listContainer}>
Expand All @@ -89,16 +121,20 @@ const ClaimsList: React.FC = () => {
</Text>
</Column>
<Column alignment="center" className={cx(styles.listColumn, styles.entry, styles.link)}>
<Text>
<a href={item.evidenceUrl} target="_blank" rel="noopener noreferrer">
Link
</a>
</Text>
{item.evidenceUrl ? (
<Text>
<a href={item.evidenceUrl} target="_blank" rel="noopener noreferrer">
Link
</a>
</Text>
) : (
<Text variant="secondary">-</Text>
)}
</Column>
<Column alignment="center" className={cx(styles.listColumn, styles.entry, styles.link)}>
<Text>
<a href={item.txHashUrl} target="_blank" rel="noopener noreferrer">
Link
{getStatusLabel(item.status)}
</a>
</Text>
</Column>
Expand Down
Loading