Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
frontend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
frontend
Commits
b11e70b2
Commit
b11e70b2
authored
Nov 03, 2022
by
tom
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'main' of github.com:blockscout/frontend into block-sockets
parents
08adf970
4d8d344d
Changes
31
Show whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
133 additions
and
545 deletions
+133
-545
e2e-tests.yml
.github/workflows/e2e-tests.yml
+0
-1
.sops.yaml
deploy/values/e2e/.sops.yaml
+0
-6
secrets.yaml
deploy/values/e2e/secrets.yaml
+0
-100
values.yaml
deploy/values/e2e/values.yaml
+0
-362
Chakra.tsx
lib/Chakra.tsx
+24
-0
appContext.tsx
lib/appContext.tsx
+24
-0
cookies.ts
lib/cookies.ts
+6
-2
getServerSideProps.ts
lib/next/getServerSideProps.ts
+13
-0
getServerSidePropsDummy.ts
lib/next/getServerSidePropsDummy.ts
+0
-10
getStaticPaths.ts
lib/next/getStaticPaths.ts
+0
-5
getStaticProps.ts
lib/next/getStaticProps.ts
+0
-7
_app.tsx
pages/_app.tsx
+10
-7
api_key.tsx
pages/account/api_key.tsx
+1
-1
custom_abi.tsx
pages/account/custom_abi.tsx
+1
-1
public_tags_request.tsx
pages/account/public_tags_request.tsx
+1
-1
tag_address.tsx
pages/account/tag_address.tsx
+1
-1
watchlist.tsx
pages/account/watchlist.tsx
+1
-1
apps.tsx
pages/apps.tsx
+1
-1
[id].tsx
pages/apps/[id].tsx
+1
-2
profile.tsx
pages/auth/profile.tsx
+1
-1
[id].tsx
pages/block/[id].tsx
+1
-2
blocks.tsx
pages/blocks.tsx
+1
-1
index.tsx
pages/index.tsx
+1
-1
[id].tsx
pages/tx/[id].tsx
+1
-2
txs.tsx
pages/txs.tsx
+1
-1
MyProfile.tsx
ui/pages/MyProfile.tsx
+2
-2
Page.tsx
ui/shared/Page/Page.tsx
+5
-1
UserAvatar.tsx
ui/shared/UserAvatar.tsx
+14
-3
NavigationDesktop.tsx
ui/snippets/navigation/NavigationDesktop.tsx
+17
-18
ProfileMenuDesktop.tsx
ui/snippets/profileMenu/ProfileMenuDesktop.tsx
+2
-2
ProfileMenuMobile.tsx
ui/snippets/profileMenu/ProfileMenuMobile.tsx
+3
-3
No files found.
.github/workflows/e2e-tests.yml
View file @
b11e70b2
...
...
@@ -65,7 +65,6 @@ jobs:
needs
:
push_to_registry
uses
:
blockscout/blockscout-ci-cd/.github/workflows/e2e_new.yaml@master
with
:
env_vars
:
VALUES_DIR=deploy/values/e2e,APP_NAME=e2e-front
appNamespace
:
e2e-front-$GITHUB_SHA_SHORT
frontendImage
:
ghcr.io/blockscout/frontend:prerelease-${{ needs.push_to_registry.outputs.shortSha }}
blockscoutIngressHost
:
e2e-blockscout-$GITHUB_SHA_SHORT
...
...
deploy/values/e2e/.sops.yaml
deleted
100644 → 0
View file @
08adf970
---
creation_rules
:
-
path_regex
:
^(.+/)?secrets\.yaml$
pgp
:
>-
99E83B7490B1A9F51781E6055317CE0D5CE1230B
deploy/values/e2e/secrets.yaml
deleted
100644 → 0
View file @
08adf970
blockscout
:
environment
:
ACCOUNT_USERNAME
:
_default
:
ENC[AES256_GCM,data:xJ0hxcuU8u+QwiXciZ8qe1sV1GuxZV8Z9iYgnoWCu0ueuEmNE80jwe+vqviNb/UbOQs=,iv:uRNP5RTG/oxUngEoBbvLg9GzS5gYiHlL42yttgYWPAc=,tag:plQfCpG9pN7d28ooZ3aHrQ==,type:str]
ACCOUNT_PASSWORD
:
_default
:
ENC[AES256_GCM,data:aW52T8giY6Be3LMtiYJ7tJ0=,iv:vbHsPHzC/TI0wxwO1LgUuY7RWHUEpxP17b4NzcxH9Fc=,tag:kqqnsrIb+k8S+FUCAv2Y7Q==,type:str]
MAILSLURP_API_KEY
:
_default
:
ENC[AES256_GCM,data:+q7GvdSeRQ0aY4grlQrdWUvxT9tzsRoii3W/ECwpVKs13lw84bGV+rbiEJXBYoOAw7SDz1Hr+KMy9SQzHvj12w==,iv:Xjo9+Nca6eDTZtUcDPAPfXYSAoP2gYmDX+JanCyPPkY=,tag:kQxLFsfN5YXft8ihgNvA+Q==,type:str]
MAILSLURP_EMAIL_ID
:
_default
:
ENC[AES256_GCM,data:tGjukx3Q+NaWpvfXPXmY6dphdEdbO531q4NMqsOa4XCudfpt,iv:6S2jTCoJCfhkRHg4aA2UR1U4fMsDhNV44+r7ofnHLTA=,tag:nr+0zaM45+UBUwOpmVD1hg==,type:str]
ACCOUNT_AUTH0_DOMAIN
:
_default
:
ENC[AES256_GCM,data:C6TAdc/RZ+qFOan+tWnTsfIDcYgxCNjuKOU=,iv:tEcHTumHxA9LreqLSwjcTTCP3igk/VQrJn/OWd+YQ4c=,tag:XOlWi3XHBZyENtLsv3afmw==,type:str]
ACCOUNT_AUTH0_CLIENT_ID
:
_default
:
ENC[AES256_GCM,data:lojxfDVJBi1Sc6KCL28tln6RJ5leg0jmaTbSHbBd1H4=,iv:l1Iq/YsZKkFuorQgKd+KzAIkqbXHv6I4eid+7LDnyOA=,tag:/c7GBciDCruz+dAOfxncww==,type:str]
ACCOUNT_AUTH0_CLIENT_SECRET
:
_default
:
ENC[AES256_GCM,data:Nmajob/xrOfx3sZgGHWw4/VnSgoyehubNdhJSqasxLFInJeZgxCW/QXpu5KG6j1fDdALLOT89Es+m0IO9VrG8A==,iv:RxYWdOo5G6t0FFwHQfhvUTiCOsxRzJJT0Y1nc0F5sDc=,tag:6v6+yHaHgwnw0cDSD1hXwg==,type:str]
ACCOUNT_AUTH0_CALLBACK_URL
:
_default
:
ENC[AES256_GCM,data:+W+7U9imTfuxHGoe4sNGp3eLA6hZeTs85Fo5wL/dsUNDljuVZsysEXp4+5IxS4kRHggXUXOJmE3jfCRsqYBVa05ID9VqxC8gtumjXZhDpPZZzg==,iv:+XVIFV5sPC9O8FNSNozz1532ND65HBqELpU2onJp4h8=,tag:1b5mZn+WphjNaRo4dns0CQ==,type:str]
ACCOUNT_AUTH0_LOGOUT_RETURN_URL
:
_default
:
ENC[AES256_GCM,data:/AMUKP2k8C7sQVLEWn93xE+cYyWUzK2fh/L4/o5evq2UZFRTxOrqy5FGUMFz4sMc5M+D65lMeCwOYE1sXCdochTgC7IJ1XvNGZc=,iv:5pnFCFtzMcYtf8+llQyFvWdOb5Jb3sBBYLPILsTydXw=,tag:Z1zjefNVZd+StLef2t8B2g==,type:str]
ACCOUNT_AUTH0_LOGOUT_URL
:
_default
:
ENC[AES256_GCM,data:6vj0qvxktXptFDX4Tq3kGIyhaJN7Adcwfgb3qWEYH78pWtmFprwfKNdPa/4=,iv:Eb3NcZP9oSmh0ZfY8vCWwR5Ciwe7Lr/QJmcNWXiir9E=,tag:uXoFnMfwo/GD9IPuvs/9Wg==,type:str]
ACCOUNT_SENDGRID_API_KEY
:
_default
:
ENC[AES256_GCM,data:bNzimXY1TDUHgLijvgcJ8mw+9RXvCLchxhum77KY6ss5NUdoWuNuQjpC7M819XRPqhBmZkC2qBSX1ZRhcNQCB1OqGkRq,iv:JFmeCxsO2lkyScN8iVb8B/356SbP7KCMFffIPjGtN0o=,tag:A21hzDObJMAUhHQRWB7Z9w==,type:str]
ACCOUNT_SENDGRID_SENDER
:
_default
:
ENC[AES256_GCM,data:68YVwUmudMo8n+1FENmPunPwLFSCgg==,iv:oALjuhqudA8zfOdse5Hd4IaLvEtY4VJ7exwUGsEPWFA=,tag:8F+rS2HZSfqCCXY4MkdTXw==,type:str]
ACCOUNT_SENDGRID_TEMPLATE
:
_default
:
ENC[AES256_GCM,data:teIknLFnYfGDD7drMUTvcoXBxR9rOjc8L8nOVtMYVOuzXQ==,iv:LoBlBjrWDf5/LsmBo58510evXBTxiIW1YekeLmB+Mow=,tag:dZ/YdphM5MxEygeFYlT0Nw==,type:str]
ACCOUNT_PUBLIC_TAGS_AIRTABLE_URL
:
_default
:
ENC[AES256_GCM,data:Y5Un1IwYz6luANlNDtbz6V9cdQ96sZFPbtS5MzDBPDFP8pBlQouhYeDBvB6irf2KiC3gYPHLea5lSWA=,iv:QH0A4zi/iWYka9n0SD2v+NXijNPyg0MPrGVawDzf5fU=,tag:wjUYXk943EXXF+++oNpLPw==,type:str]
ACCOUNT_PUBLIC_TAGS_AIRTABLE_API_KEY
:
_default
:
ENC[AES256_GCM,data:WBxTPe+pQ2VzSPRmL3mzek0=,iv:0wYDv0BRmXrmz9EJg0cBclHpsPEQukO7tCnPAUlCKrs=,tag:3Zcyf/8kLU6ohUQ+97eONg==,type:str]
ACCOUNT_CLOAK_KEY
:
_default
:
ENC[AES256_GCM,data:/+0GBBYW34fDHIAPpHCbNucu2FUH9VAI+wBV6dLHxvYk0whtXikiClentSk=,iv:ekOPgF0H/0/MG++cLi0gH+AzqWafkqFL9R7B8G8jPo4=,tag:QcI69GzicGVV96+EDOR81w==,type:str]
SECRET_KEY_BASE
:
_default
:
ENC[AES256_GCM,data:Cqga1O4fbdtx5GfEQjJEPYWqeig7SBAdKiIif9sGCNrdy5FSHr43uskfdOdiS3uhaHm925jhPf+/nvs7VRzaqSAJCB2HBrVjJLOTQItVEw5rGus9Ma2plubDdrXh2CHO14mjE6f1/QOq2MLC1S79MqeHxpgqS0sgMflKopWa3/4=,iv:z1mBiInLa3kutmPFuX+R96rUSGcjFr/UH6cn/UbM0tg=,tag:8TRBcnTENdguj2BOs4Qrmw==,type:str]
SECRET_KEY_GUARDIAN
:
_default
:
ENC[AES256_GCM,data:vpsqZh2sBKUiG4LtTVZyi3qBUU2EMPIrAp9k4X4iSYNvJM7iDGjq/du3EmsQCccvlr54x3opyypHYsdA7gL2Cg==,iv:9q8ePtwr2CDieE2ZU3UyxJ1wtKzIOY1oJ7rZmXCcWWM=,tag:BFO+PztjAOfQHh9mpC/ZJA==,type:str]
DATABASE_URL
:
_default
:
ENC[AES256_GCM,data:r5JQJH+pq4zwo9ceFP4I8inttRFFxKKaw9+l9hDqeDMcEIPljAfJxvSF3noVlyfNtqO0ru+3GaTumDamdb9Hw2Y=,iv:OwCvrIgXpxVMI5QQfT7ZDGcsXBdzIcuv0wUSxtwkYrM=,tag:o0GFp3F+jTxw8Hg4Ce/IpQ==,type:str]
ACCOUNT_DATABASE_URL
:
_default
:
ENC[AES256_GCM,data:48q2fFA3s1HGSm7YB5QV8B0eiI2PZHPgOsUS84R8x+8GecrFTenifbcHD6AivFNKovLuClUy2aFuEtEvJDOfelY=,iv:5ZLl62Yj/AXwyg+pdBLUv3EyYXSTOiSCqGYOv3rBx94=,tag:FUiy0haST4mdrqe2VlvrLg==,type:str]
ACCOUNT_REDIS_URL
:
_default
:
ENC[AES256_GCM,data:MtAI4U/4mLdIW0d4ap5+0wTufO7hvOD/ETPnqpGJ7tGFXmirK2w/M5UdQd8M/EsH/4zk3rlM4WDGRVwMzCTiugG1FxEdIcKOA6127jXgSUrE,iv:zgrAoj7437b0TJTstU0S7UVHGt4fKnmP3wlc2qbURa0=,tag:vT3NL8PLLxB9z/dmkE/jaw==,type:str]
scVerifier
:
environment
:
SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__S3__ACCESS_KEY
:
_default
:
ENC[AES256_GCM,data:u9zFU9th8ShQ5HIaehYgMzOorx7Tfg7K,iv:ytd6IoU8PIMqbZ4W7kgkL5S4KV4MbvHfxMH2IthQnYE=,tag:0kgXuYSBZZp0LHG3m5EfYg==,type:str]
SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__S3__SECRET_KEY
:
_default
:
ENC[AES256_GCM,data:t78wGcNs4gqMav1TJaIyBUE4vxsaXloMSmPobix2zvpL2MfNl/6ERA==,iv:IdQot/B7QH9mJWFypTn9OIS+WOeq+B5KZYuYMkQ8+G4=,tag:xXX0WIIM5enPGaibiywtBg==,type:str]
SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__S3__BUCKET
:
_default
:
ENC[AES256_GCM,data:495QOb9qNhVugnOtaw==,iv:4h9S63+0P5qzeObiu5LJ3YKnFboSJ6WDE8tPnavySxg=,tag:ld3u6nYJH4qv3eN/pon5ow==,type:str]
postgres
:
environment
:
POSTGRES_PASSWORD
:
_default
:
ENC[AES256_GCM,data:+DPLqOzpvlY=,iv:W6jbwxXI2NTb+kc7pGw0GPUpIPvgIfrNW9Uq5f64gS4=,tag:TV2bMILH/mYmUi0CxeYl2A==,type:str]
POSTGRES_DB
:
_default
:
ENC[AES256_GCM,data:QRCvQVzKOfOApg==,iv:eOdxyjmv6Zj5xINGXO0dD/GcDgD1J8e4OzLMyOneoDs=,tag:EBnJ7OT3u7vcBIbviRKaHg==,type:str]
geth
:
files
:
list
:
genesis.json
:
ENC[AES256_GCM,data:nSFncQhigaTtb7YSeXiUvua2LTOGlluVDywxQR5NnhvIBZCZniIxHsEhXKF9rBYceOMfBPKY5MTLIyxYisZeaJHL71A/uXQerDEKkECpzhwUSTdNEA9gUEqmpUjf7ChAWjybWw6NCM2jVhG3bnZwTwmuzeCSek85q4J503j9HVEkGXAU52A2+yoov41c+xoCEOj7W6Ka/f7yJYkyppoeS+4AIxBFcJ5hI0pIf1VqDcSrJf68JO1pPzcmp9eK3CK2CIpD8uxV6CseBFEqlbllmgAVwSUJ4i8XhYEO2hMyULm/LkW52U31/tq89yctSkp5TB62sZEHyDxXcq6jFSqd4840o9VedyX4YuEVtLBlXdzerc4Q2tHORQv5u2BLW7ktA/5vj8d9XnblQBDKrqxtUEgvSj9T/Xm4zyKjIhJBAAwUd5rF4j8dNbUGpsBm3G/Lx1+DqrS8cyxXgumtmfsklEVTWBra2dwt/tlTpF+utOwT7KtqXo2dVNvL6tUWrWGQqCt+fgeRKw8NuHWgU9Nm6baQ0yhWIM3XaCEuuJqHLdelYgQiKVEaTvlw7my7XwQsunJCQ98Q2eO61v7WFsg1m5s3Wyts8R2EnMWrnDlGro//eUHFlxDiIQGXmWgnz597lrLTXiuZKNI4pvPsAggBQxIeUcYzICy5uLRPWAiDpfshYt/fRQhIxmrVaJCufJrq4IcUdJYKjAcpnGHqZMB6quZiUPCPYg5Lvz7w1zoIVLn4ANWVuh7J1husNH13SwrDUXEm+k/WYCkDZm5B/K9IzkihY8nNXbvxHEXUClpb943Xw8hpvZZj0BfP/ye7ywUzHGlo3OmFAdE7Fbjc9eELxgYirONoaHy9GkjWPjinTVVlvitakqzx4dGJ+U2adSB01WAj63rn4ZidaC/eUpcPe7E2OeqmpkLc/kLM9g3gEe/MCiqsXXUYtm0Idpbrf+rRTAotoVOi3fKr1inlJY6n+9UzKAxNkTIkiGUQ1E9g0s3Kn4Z83apuy5+Us8gA9xNfWNGcOO105ZUYKyow4Xb5ggV8t+UTXPOZQp97Qz/6q0VC2kY9bx991SrJLoaK+ChLQ0/t/LcLjZxKRPDU2YGOfjrPDO3iscDkZgX/8IvH56jxUXAYmNrxOgbb9encYIrMDYrsKTaj5kXETp2M3sTdHwk6d78PAteYCvgQb44gu5JtknIq2LLXb/2Ue45O4HnrB+AsICPb+oGAxIqFkHvWuOIRZLqap8wbazszBlqsrX8ABegjvReXiG0rX1VeQIXNcG3/tKPHNKrDlFJykaiC1w==,iv:pyrxyy1bbv1UiGZ2y1jer9UqOwVkZGb4GwawJoCGJuM=,tag:aVt5dASuZglsUs9Yydzjaw==,type:str]
init.sh
:
ENC[AES256_GCM,data:2qHHfwC63yJlxqaqmQQ69CxtcYZiEgdLdr/Hcxk8eKEou16bXL1NxpxfW8MWsfZyB4S3QNj05V6WSpZAw9ITG/GnXOKocZqKbZPmmuwQpLoekC37EsdUETb+tFvIunh9xRmgst4/ByXEyjC9pZk8SN0Qr9cGQl3VMzeGSkRndaE+qnlFxHRO5ELbDyaLMcyLWaQncescCSvIDpyOPNN7NwS3PYW+Nq3rvh4y+2FBoHUPUMIq46q94+ROnFk5TQsUI5/sVdw/5fuJklcTeqxuo4pPFLAgtkXkab0k2Og0eMI4It1xIrwpfJnxKwbjd0zljKo8tNzjpPZKHMfYchPX6uGH9fnwvXcH7nKUUdtSWrWa8R9a5AyO7SJ0hfzewMzvOWspihJW3JXFTvfesoG/cMMBDg3icsD/0HyxVBQP2riSZsou3hzDFAOVoNLAQTNRVXckSxk9zbx0aOy3DlWefJhIFj2ZmF4sliwxMe+Oy/So6PfiRLsP9v6/OTv6sriExtHdAx6xeA+dbYCO9ruW+5gNB2UUi3DQvpvejaxysJygaHvYCVDGAUKCxDAvQPrUQ/r5+UaE+GmqflDzhd9lhAptL/xL8tW8R+v9RZdMO/G9kxWMhKWiHH6QqgdYGOvanwCxAGtSvKhqf6fiWnNMr6wKG4qAFk6cMNUsLHtnC1qLYhZAfBa1/aK5cG0IbygZKurC+9G8x4SmOqUpW8h23XRsNd8peCRuSZ2uSGqss/1XvngfW0avzGiXMHW9,iv:ldcn5mGmfGmSmq30mUen6diWK6EAEnYF6NQTXXwY8yA=,tag:kSuu7AGzzmSEM5AzjIw5RQ==,type:str]
password.txt
:
"
"
frontend
:
environment
:
NEXT_PUBLIC_NETWORK_TOKEN_ADDRESS
:
_default
:
ENC[AES256_GCM,data:IVCGBLqP7IdmbDe9UbIFvJSBD7+g52chKzakELt2XuHDp9JvC4E+7xxp,iv:bDHp2llHAqhgI5N8swQALSDc6X3S0JCsXbJnEEDDJOc=,tag:Z1WsJXkqtq79WydIgUiDiA==,type:str]
NEXT_PUBLIC_SENTRY_DSN
:
_default
:
ENC[AES256_GCM,data:n/H2AH2n9ovn265iFbbrqeOOWS3s7FXgDv5FXJ2Dz133GuhTaqIU5psWjTraZ/Vh+dVM8M9zBLFfUanCWOz7cerq/QUoSVZjKvIvcyp6F072DGU=,iv:Co/pSR+U0vfkmWR+LDpxcQKDJl0WNbaEZihpzrRJcbc=,tag:HUiCX8WGJXWCDB59Y6iIbw==,type:str]
SENTRY_CSP_REPORT_URI
:
_default
:
ENC[AES256_GCM,data:Hf4azYsGh2lysotK7afaHI85IaLBJeQmPlGE/lwokmX2eaQHVZJ/i5RsaoKoOCSiNyfAowr7P+6IBEC16BUTQMpbhYveBd7c/xjIsoomoHbTdoAdZA/QxNVpS4a2qVthruFudyT1BoZUHIGQ,iv:Mid+PfbslOyivrFSXopdeW96YvOcLP+g2RGcw1o7B98=,tag:IuPUsGdbZQodCMyi1DR04Q==,type:str]
NEXT_PUBLIC_AUTH0_CLIENT_ID
:
_default
:
ENC[AES256_GCM,data:1doicz45IfwPza75+bYEe/3Ot1auCP3CtW1V1ilRevo=,iv:BlK5h1YRWAL00DuZnujnHWsKXrsTnP1G+F59+MNnHcU=,tag:gu/0BQ6mQXEmQhpWmBU3NQ==,type:str]
sops
:
kms
:
[]
gcp_kms
:
[]
azure_kv
:
[]
hc_vault
:
[]
age
:
[]
lastmodified
:
"
2022-11-02T07:59:50Z"
mac
:
ENC[AES256_GCM,data:+qMOXjU+Q9b/a2ix3Z9+pZYayomQmfTBbxcRFPQIVmRguygn2VhRZ1pCQN6dYqb0VFVecV4i1KPqOdTmvukvpUxM5lOt3Gy1PQRgNejdTRr72vWEHqJVEn/oeanypRcrAOQmcPs2tXyJuatRjvhZVpJl4hUoVIw68wXGhSufbL4=,iv:FBp6KFfMzI27UVcB9YzQzUMLHYpB2DJzlBKGrMbj/6g=,tag:27FGRmkXFgNJeVbChdYPew==,type:str]
pgp
:
-
created_at
:
"
2022-09-14T13:42:28Z"
enc
:
|
-----BEGIN PGP MESSAGE-----
hQEMA1MXzg1c4SMLAQgAoRceoDDpqXEbiz6DaMX7YS7j5mcp+xVoemU9qY4ln7dT
XtwAWiRVr7mf1ZDI77bQunbyWAU3zM/lFDsrlNUMAUGZzoOOtIGSnjCqCYB5JGiP
ZfdjG88RAJx+WMIgWl66PW1ceru8We+KauQyG7bD5g59g3b5RadEhH3VER4cYJof
VI0+NPpAcGciRsV3vxGGf4q1ppM3Pz0AnXcC+HB+hxWa5DeAhZlavFO2zYBCzw/o
ypyLCoOcuEDSj9AY+EYnjyXIS72DXPA953/8QSaMSZ9JVKG5imtXslGEdj9PIQOp
0rPqjZCxzydQaPZ68jXMg2Ci4gZT4ZPle9fRFxNGdtJeAScCUk+5L70orvNmWwgD
3fFnMY6tMDd/qSqSRFEJ0Vm0M4MYSg5mgW9M64zGfw1bZLLjsIGMe2ZqQC/sZh1O
Mrk3/xd4md/Ko8BQcaZ6lCi0olz6KWTzmQhXgNTx9A==
=mNH9
-----END PGP MESSAGE-----
fp
:
99E83B7490B1A9F51781E6055317CE0D5CE1230B
unencrypted_suffix
:
_unencrypted
version
:
3.7.3
deploy/values/e2e/values.yaml
deleted
100644 → 0
View file @
08adf970
global
:
env
:
e2e
# enable Blockscout deploy
blockscout
:
app
:
blockscout
enabled
:
true
image
:
_default
:
blockscout/blockscout:latest
replicas
:
app
:
1
docker
:
port
:
80
targetPort
:
4000
# init container
init
:
enabled
:
true
image
:
_default
:
blockscout/blockscout:latest
service
:
# ClusterIP, NodePort or LoadBalancer
type
:
ClusterIP
# enable ingress
ingress
:
enabled
:
true
annotations
:
{}
# - 'nginx.ingress.kubernetes.io/rewrite-target: /$2'
host
:
_default
:
blockscout.test.blockscout.aws-k8s.blockscout.com
# enable https
#
tls
:
enabled
:
true
path
:
# - "/poa/sokol(/|$)(.*)"
-
"
/"
# probes
livenessProbe
:
enabled
:
true
path
:
/
readinessProbe
:
enabled
:
true
path
:
/
resources
:
limits
:
memory
:
_default
:
"
1Gi"
cpu
:
_default
:
"
2"
requests
:
memory
:
_default
:
"
1Gi"
cpu
:
_default
:
"
2"
# enable service to connect to RDS
rds
:
enabled
:
false
endpoint
:
_default
:
<endpoint>.<region>.rds.amazonaws.com
# node label
nodeSelector
:
enabled
:
true
app
:
blockscout
# Blockscout environment variables
environment
:
ENV
:
_default
:
test
RESOURCE_MODE
:
_default
:
account
PUBLIC
:
_default
:
'
false'
PORT
:
_default
:
4000
PORT_PG
:
_default
:
5432
PORT_NETWORK_HTTP
:
_default
:
8545
PORT_NETWORK_WS
:
_default
:
8546
ETHEREUM_JSONRPC_VARIANT
:
_default
:
geth
ETHEREUM_JSONRPC_TRACE_URL
:
_default
:
http://geth-svc:8545
ETHEREUM_JSONRPC_HTTP_URL
:
_default
:
http://geth-svc:8545
ETHEREUM_JSONRPC_WS_URL
:
_default
:
ws://geth-svc:8546
COIN
:
_default
:
DAI
MIX_ENV
:
_default
:
prod
ECTO_USE_SSL
:
_default
:
'
false'
RUST_VERIFICATION_SERVICE_URL
:
_default
:
http://sc-verifier-svc:8043
ACCOUNT_ENABLED
:
_default
:
'
true'
DISABLE_REALTIME_INDEXER
:
_default
:
'
false'
SOCKET_ROOT
:
_default
:
"
/"
NETWORK_PATH
:
_default
:
"
/"
API_PATH
:
_default
:
"
/"
ETHEREUM_JSONRPC_DISABLE_ARCHIVE_BALANCES
:
_default
:
'
true'
API_BASE_PATH
:
_default
:
"
/"
APPS_MENU
:
_default
:
'
true'
EXTERNAL_APPS
:
_default
:
'
[{"title":
"Marketplace",
"url":
"/apps"}]'
JSON_RPC
:
_default
:
https://sokol.poa.network
API_V2_ENABLED
:
_default
:
'
true'
postgres
:
enabled
:
true
image
:
postgres:13.8
port
:
5432
command
:
'
["docker-entrypoint.sh",
"-c"]'
args
:
'
["max_connections=300"]'
resources
:
limits
:
memory
:
_default
:
"
1Gi"
cpu
:
_default
:
"
1"
requests
:
memory
:
_default
:
"
1Gi"
cpu
:
_default
:
"
1"
environment
:
POSTGRES_USER
:
_default
:
'
postgres'
POSTGRES_HOST_AUTH_METHOD
:
_default
:
'
trust'
# enable geth deploy
geth
:
enabled
:
true
image
:
_default
:
ethereum/client-go:stable
replicas
:
app
:
1
portHttp
:
8545
portWs
:
8546
portAuth
:
8551
command
:
'
["sh","./root/init.sh"]'
args
:
'
["--fakepow",
"--dev",
"--dev.period=1",
"--datadir=/root/.ethereum/devnet",
"--keystore=/root/.ethereum/devnet/keystore",
"--password=/root/password.txt",
"--unlock=0",
"--unlock=1",
"--mine",
"--miner.threads=1",
"--miner.etherbase=0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
"--ipcpath=/root/geth.ipc",
"--http",
"--http.vhosts=*",
"--http.addr=0.0.0.0",
"--http.port=8545",
"--http.api=eth,net,web3,debug,txpool",
"--ws",
"--ws.origins=*",
"--ws.addr=0.0.0.0",
"--ws.port=8546",
"--ws.api=eth,net,web3,debug,txpool",
"--graphql",
"--graphql.corsdomain=*",
"--allow-insecure-unlock",
"--rpc.allow-unprotected-txs",
"--http.corsdomain=*",
"--vmdebug",
"--networkid=1337",
"--rpc.txfeecap=0"]'
environment
:
{}
persistence
:
enabled
:
false
resources
:
limits
:
memory
:
_default
:
"
2Gi"
cpu
:
_default
:
"
0.2"
requests
:
memory
:
_default
:
"
2Gi"
cpu
:
_default
:
"
0.2"
# node label
nodeSelector
:
enabled
:
true
app
:
blockscout
service
:
# ClusterIP, NodePort or LoadBalancer
type
:
ClusterIP
# enable ingress
ingress
:
enabled
:
true
host
:
_default
:
node.test.blockscout.aws-k8s.blockscout.com
# enable https
tls
:
enabled
:
false
jwt
:
enabled
:
false
files
:
enabled
:
true
# enable Smart-contract-verifier deploy
scVerifier
:
enabled
:
true
image
:
_default
:
ghcr.io/blockscout/smart-contract-verifier:latest
replicas
:
app
:
1
docker
:
port
:
80
targetPort
:
8043
metricsPort
:
6060
service
:
# ClusterIP, NodePort or LoadBalancer
type
:
ClusterIP
# enable ingress
ingress
:
enabled
:
true
host
:
_default
:
verifier.test.blockscout.aws-k8s.blockscout.com
# enable https
tls
:
enabled
:
true
resources
:
limits
:
memory
:
_default
:
"
0.5Gi"
cpu
:
_default
:
"
0.25"
requests
:
memory
:
_default
:
"
0.5Gi"
cpu
:
_default
:
"
0.25"
# node label
nodeSelector
:
enabled
:
true
app
:
blockscout
# probes
livenessProbe
:
enabled
:
true
path
:
/health
readinessProbe
:
enabled
:
true
path
:
/health
# enable Horizontal Pod Autoscaler
hpa
:
enabled
:
true
minReplicas
:
1
maxReplicas
:
10
cpuTarget
:
90
environment
:
SMART_CONTRACT_VERIFIER__SERVER__ADDR
:
_default
:
0.0.0.0:8043
# SMART_CONTRACT_VERIFIER__SOLIDITY__ENABLED:
# _default: 'true'
SMART_CONTRACT_VERIFIER__SOLIDITY__COMPILERS_DIR
:
_default
:
/tmp/solidity-compilers
SMART_CONTRACT_VERIFIER__SOLIDITY__REFRESH_VERSIONS_SCHEDULE
:
_default
:
0 0 * * * * *
# It depends on the OS you are running the service on
# SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__LIST__LIST_URL:
# _default: https://solc-bin.ethereum.org/linux-amd64/list.json
#SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__LIST__LIST_URL=https://solc-bin.ethereum.org/macosx-amd64/list.json
#SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__LIST__LIST_URL=https://solc-bin.ethereum.org/windows-amd64/list.json
SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__S3__REGION
:
_default
:
"
"
SMART_CONTRACT_VERIFIER__SOLIDITY__FETCHER__S3__ENDPOINT
:
_default
:
https://storage.googleapis.com
SMART_CONTRACT_VERIFIER__SOURCIFY__ENABLED
:
_default
:
'
true'
SMART_CONTRACT_VERIFIER__SOURCIFY__API_URL
:
_default
:
https://sourcify.dev/server/
SMART_CONTRACT_VERIFIER__SOURCIFY__VERIFICATION_ATTEMPTS
:
_default
:
3
SMART_CONTRACT_VERIFIER__SOURCIFY__REQUEST_TIMEOUT
:
_default
:
10
SMART_CONTRACT_VERIFIER__METRICS__ENABLED
:
_default
:
'
true'
SMART_CONTRACT_VERIFIER__METRICS__ADDR
:
_default
:
0.0.0.0:6060
SMART_CONTRACT_VERIFIER__METRICS__ROUTE
:
_default
:
/metrics
SMART_CONTRACT_VERIFIER__JAEGER__ENABLED
:
_default
:
'
false'
frontend
:
app
:
blockscout
enabled
:
true
image
:
_default
:
ghcr.io/blockscout/frontend:main
replicas
:
app
:
1
docker
:
port
:
80
targetPort
:
3000
ingress
:
enabled
:
true
# annotations:
# - 'nginx.ingress.kubernetes.io/use-regex: "true"'
host
:
_default
:
frontend.test.blockscout.aws-k8s.blockscout.com
# enable https
tls
:
enabled
:
true
path
:
# - "/(apps|auth/profile|account)"
-
"
/apps"
-
"
/_next"
-
"
/node-api"
-
"
/static"
-
"
/auth/profile"
-
"
/account"
resources
:
limits
:
memory
:
_default
:
"
0.3Gi"
cpu
:
_default
:
"
0.2"
requests
:
memory
:
_default
:
"
0.3Gi"
cpu
:
_default
:
"
0.2"
# node label
nodeSelector
:
enabled
:
true
app
:
blockscout
environment
:
NEXT_PUBLIC_BLOCKSCOUT_VERSION
:
_default
:
v4.1.8-beta
NEXT_PUBLIC_FOOTER_GITHUB_LINK
:
_default
:
https://github.com/blockscout/blockscout
NEXT_PUBLIC_FOOTER_TWITTER_LINK
:
_default
:
https://www.twitter.com/blockscoutcom
NEXT_PUBLIC_APP_ENV
:
_default
:
preview
NEXT_PUBLIC_APP_INSTANCE
:
_default
:
unknown
NEXT_PUBLIC_FOOTER_TELEGRAM_LINK
:
_default
:
https://t.me/poa_network
NEXT_PUBLIC_FOOTER_STAKING_LINK
:
_default
:
https://duneanalytics.com/maxaleks/xdai-staking
NEXT_PUBLIC_NETWORK_NAME
:
_default
:
Sokol
NEXT_PUBLIC_NETWORK_SHORT_NAME
:
_default
:
POA
NEXT_PUBLIC_NETWORK_ASSETS_PATHNAME
:
_default
:
poa
NEXT_PUBLIC_NETWORK_TYPE
:
_default
:
poa_core
NEXT_PUBLIC_NETWORK_ID
:
_default
:
77
NEXT_PUBLIC_NETWORK_CURRENCY_NAME
:
_default
:
POA Network Sokol
NEXT_PUBLIC_NETWORK_CURRENCY_SYMBOL
:
_default
:
SPOA
NEXT_PUBLIC_NETWORK_CURRENCY_DECIMALS
:
_default
:
18
NEXT_PUBLIC_NETWORK_VERIFICATION_TYPE
:
_default
:
validation
NEXT_PUBLIC_IS_ACCOUNT_SUPPORTED
:
_default
:
'
true'
NEXT_PUBLIC_FEATURED_NETWORKS
:
_default
:
"
[{'title':'Gnosis
Chain','url':'https://blockscout.com/xdai/mainnet','group':'mainnets','type':'xdai_mainnet'},{'title':'Optimism
on
Gnosis
Chain','url':'https://blockscout.com/xdai/optimism','group':'mainnets','icon':'https://www.fillmurray.com/60/60','type':'xdai_optimism'},{'title':'Arbitrum
on
xDai','url':'https://blockscout.com/xdai/aox','group':'mainnets'},{'title':'Ethereum','url':'https://blockscout.com/eth/mainnet','group':'mainnets','type':'eth_mainnet'},{'title':'Ethereum
Classic','url':'https://blockscout.com/etx/mainnet','group':'mainnets','type':'etc_mainnet'},{'title':'POA','url':'https://blockscout.com/poa/core','group':'mainnets','type':'poa_core'},{'title':'RSK','url':'https://blockscout.com/rsk/mainnet','group':'mainnets','type':'rsk_mainnet'},{'title':'Gnosis
Chain
Testnet','url':'https://blockscout.com/xdai/testnet','group':'testnets','type':'xdai_testnet'},{'title':'POA
Sokol','url':'https://blockscout.com/poa/sokol','group':'testnets','type':'poa_sokol'},{'title':'ARTIS
Σ1','url':'https://blockscout.com/artis/sigma1','group':'other','type':'artis_sigma1'},{'title':'LUKSO
L14','url':'https://blockscout.com/lukso/l14','group':'other','type':'lukso_l14'},{'title':'Astar','url':'https://blockscout.com/astar','group':'other','type':'astar'}]"
NEXT_PUBLIC_API_HOST
:
_default
:
blockscout.com
NEXT_PUBLIC_API_BASE_PATH
:
_default
:
/
NEXT_PUBLIC_MARKETPLACE_SUBMIT_FORM
:
_default
:
https://airtable.com/shrqUAcjgGJ4jU88C
NEXT_PUBLIC_MARKETPLACE_APP_LIST
:
_default
:
"
[{'author':
'Blockscout',
'id':
'token-approval-tracker',
'title':
'Token
Approval
Tracker',
'logo':
'https://approval-tracker.vercel.app/icon-192.png',
'categories':
['security',
'tools'],
'shortDescription':
'Token
Approval
Tracker
shows
all
approvals
for
any
ERC20-compliant
tokens
and
NFTs
and
lets
to
revoke
them
or
adjust
the
approved
amount.',
'site':
'https://docs.blockscout.com/for-users/blockscout-apps/token-approval-tracker',
'description':
'Token
Approval
Tracker
shows
all
approvals
for
any
ERC20-compliant
tokens
and
NFTs
and
lets
to
revoke
them
or
adjust
the
approved
amount.',
'url':
'https://approval-tracker.vercel.app/'}]"
NEXT_PUBLIC_LOGOUT_URL
:
_default
:
https://blockscoutcom.us.auth0.com/v2/logout
NEXT_PUBLIC_LOGOUT_RETURN_URL
:
_default
:
https://blockscout.com/auth/logout
lib/Chakra.tsx
0 → 100644
View file @
b11e70b2
import
{
ChakraProvider
,
cookieStorageManagerSSR
,
localStorageManager
,
}
from
'
@chakra-ui/react
'
;
import
type
{
ChakraProviderProps
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
interface
Props
extends
ChakraProviderProps
{
cookies
?:
string
;
}
export
function
Chakra
({
cookies
,
theme
,
children
}:
Props
)
{
const
colorModeManager
=
typeof
cookies
===
'
string
'
?
cookieStorageManagerSSR
(
cookies
)
:
localStorageManager
;
return
(
<
ChakraProvider
colorModeManager=
{
colorModeManager
}
theme=
{
theme
}
>
{
children
}
</
ChakraProvider
>
);
}
lib/appContext.tsx
0 → 100644
View file @
b11e70b2
import
React
,
{
createContext
,
useContext
}
from
'
react
'
;
import
type
{
Props
as
PageProps
}
from
'
lib/next/getServerSideProps
'
;
type
Props
=
{
children
:
React
.
ReactNode
;
pageProps
:
PageProps
;
}
const
AppContext
=
createContext
<
PageProps
>
({
cookies
:
''
});
export
function
AppWrapper
({
children
,
pageProps
}:
Props
)
{
const
appProps
=
{
cookies
:
pageProps
.
cookies
};
return
(
<
AppContext
.
Provider
value=
{
appProps
}
>
{
children
}
</
AppContext
.
Provider
>
);
}
export
function
useAppContext
()
{
return
useContext
(
AppContext
);
}
lib/cookies.ts
View file @
b11e70b2
...
...
@@ -9,9 +9,9 @@ export enum NAMES {
TXS_SORT
=
'
txs_sort
'
,
}
export
function
get
(
name
?:
string
|
undefined
|
null
)
{
export
function
get
(
name
?:
NAMES
|
undefined
|
null
,
serverCookie
?:
string
)
{
if
(
!
isBrowser
())
{
return
undefined
;
return
serverCookie
?
getFromCookieString
(
serverCookie
,
name
)
:
undefined
;
}
return
Cookies
.
get
(
name
);
}
...
...
@@ -21,3 +21,7 @@ export function set(name: string, value: string, attributes: Types.CookieAttribu
return
Cookies
.
set
(
name
,
value
,
attributes
);
}
export
function
getFromCookieString
(
cookieString
:
string
,
name
?:
NAMES
|
undefined
|
null
)
{
return
cookieString
.
split
(
`
${
name
}
=`
)[
1
]?.
split
(
'
;
'
)[
0
];
}
lib/next/getServerSideProps.ts
0 → 100644
View file @
b11e70b2
import
type
{
GetServerSideProps
,
GetServerSidePropsResult
}
from
'
next
'
;
export
type
Props
=
{
cookies
:
string
;
}
export
const
getServerSideProps
:
GetServerSideProps
=
async
({
req
}):
Promise
<
GetServerSidePropsResult
<
Props
>>
=>
{
return
{
props
:
{
cookies
:
req
.
headers
.
cookie
||
''
,
},
};
};
lib/next/getServerSidePropsDummy.ts
deleted
100644 → 0
View file @
08adf970
import
type
{
GetServerSideProps
}
from
'
next
'
;
export
const
getServerSideProps
:
GetServerSideProps
=
async
({
res
})
=>
{
res
.
setHeader
(
'
Cache-Control
'
,
`public, s-maxage=
${
60
*
60
}
, stale-while-revalidate=
${
2
*
60
*
60
}
`
,
);
return
{
props
:
{}
};
};
lib/next/getStaticPaths.ts
deleted
100644 → 0
View file @
08adf970
import
type
{
GetStaticPaths
}
from
'
next
'
;
export
const
getStaticPaths
:
GetStaticPaths
=
async
()
=>
{
return
{
paths
:
[],
fallback
:
'
blocking
'
};
};
lib/next/getStaticProps.ts
deleted
100644 → 0
View file @
08adf970
import
type
{
GetStaticProps
,
GetStaticPropsResult
}
from
'
next
'
;
export
const
getStaticProps
:
GetStaticProps
=
async
():
Promise
<
GetStaticPropsResult
<
{
[
key
:
string
]:
unknown
}
>>
=>
{
return
{
props
:
{},
};
};
pages/_app.tsx
View file @
b11e70b2
import
{
ChakraProvider
}
from
'
@chakra-ui/react
'
;
import
{
QueryClient
,
QueryClientProvider
}
from
'
@tanstack/react-query
'
;
import
{
ReactQueryDevtools
}
from
'
@tanstack/react-query-devtools
'
;
import
type
{
AppProps
}
from
'
next/app
'
;
import
React
,
{
useState
}
from
'
react
'
;
import
{
AppWrapper
}
from
'
lib/appContext
'
;
import
{
Chakra
}
from
'
lib/Chakra
'
;
import
useConfigSentry
from
'
lib/hooks/useConfigSentry
'
;
import
type
{
ErrorType
}
from
'
lib/hooks/useFetch
'
;
import
theme
from
'
theme
'
;
...
...
@@ -30,12 +31,14 @@ function MyApp({ Component, pageProps }: AppProps) {
}));
return
(
<
AppWrapper
pageProps=
{
pageProps
}
>
<
QueryClientProvider
client=
{
queryClient
}
>
<
ChakraProvider
theme=
{
theme
}
>
<
Chakra
theme=
{
theme
}
cookies=
{
pageProps
.
cookies
}
>
<
Component
{
...
pageProps
}
/>
</
ChakraProvider
>
</
Chakra
>
<
ReactQueryDevtools
/>
</
QueryClientProvider
>
</
AppWrapper
>
);
}
...
...
pages/account/api_key.tsx
View file @
b11e70b2
...
...
@@ -17,4 +17,4 @@ const ApiKeysPage: NextPage = () => {
export
default
ApiKeysPage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/account/custom_abi.tsx
View file @
b11e70b2
...
...
@@ -17,4 +17,4 @@ const CustomAbiPage: NextPage = () => {
export
default
CustomAbiPage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/account/public_tags_request.tsx
View file @
b11e70b2
...
...
@@ -17,4 +17,4 @@ const PublicTagsPage: NextPage = () => {
export
default
PublicTagsPage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/account/tag_address.tsx
View file @
b11e70b2
...
...
@@ -17,4 +17,4 @@ const AddressTagsPage: NextPage = () => {
export
default
AddressTagsPage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/account/watchlist.tsx
View file @
b11e70b2
...
...
@@ -19,4 +19,4 @@ const WatchListPage: NextPage = () => {
export
default
WatchListPage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/apps.tsx
View file @
b11e70b2
...
...
@@ -19,4 +19,4 @@ const AppsPage: NextPage = () => {
export
default
AppsPage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/apps/[id].tsx
View file @
b11e70b2
...
...
@@ -47,5 +47,4 @@ const AppPage: NextPage = () => {
export
default
AppPage
;
export
{
getStaticPaths
}
from
'
lib/next/getStaticPaths
'
;
export
{
getStaticProps
}
from
'
lib/next/getStaticProps
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/auth/profile.tsx
View file @
b11e70b2
...
...
@@ -15,4 +15,4 @@ const MyProfilePage: NextPage = () => {
export
default
MyProfilePage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/block/[id].tsx
View file @
b11e70b2
...
...
@@ -17,5 +17,4 @@ const BlockPage: NextPage<Props> = ({ pageParams }: Props) => {
export
default
BlockPage
;
export
{
getStaticPaths
}
from
'
lib/next/getStaticPaths
'
;
export
{
getStaticProps
}
from
'
lib/next/getStaticProps
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/blocks.tsx
View file @
b11e70b2
...
...
@@ -11,4 +11,4 @@ const BlockPage: NextPage = () => {
export
default
BlockPage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/index.tsx
View file @
b11e70b2
...
...
@@ -15,4 +15,4 @@ const HomePage: NextPage = () => {
export
default
HomePage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/tx/[id].tsx
View file @
b11e70b2
...
...
@@ -17,5 +17,4 @@ const TransactionPage: NextPage<Props> = ({ pageParams }: Props) => {
export
default
TransactionPage
;
export
{
getStaticPaths
}
from
'
lib/next/getStaticPaths
'
;
export
{
getStaticProps
}
from
'
lib/next/getStaticProps
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
pages/txs.tsx
View file @
b11e70b2
...
...
@@ -17,4 +17,4 @@ const TxsPage: NextPage = () => {
export
default
TxsPage
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
Dummy
'
;
export
{
getServerSideProps
}
from
'
lib/next/getServerSideProps
'
;
ui/pages/MyProfile.tsx
View file @
b11e70b2
...
...
@@ -9,7 +9,7 @@ import PageTitle from 'ui/shared/Page/PageTitle';
import
UserAvatar
from
'
ui/shared/UserAvatar
'
;
const
MyProfile
=
()
=>
{
const
{
data
,
isLoading
,
isError
}
=
useFetchProfileInfo
();
const
{
data
,
isLoading
,
isError
,
isFetched
}
=
useFetchProfileInfo
();
const
content
=
(()
=>
{
if
(
isLoading
)
{
...
...
@@ -22,7 +22,7 @@ const MyProfile = () => {
return
(
<
VStack
maxW=
"412px"
mt=
{
12
}
gap=
{
5
}
alignItems=
"stretch"
>
<
UserAvatar
size=
{
64
}
data=
{
data
}
/>
<
UserAvatar
size=
{
64
}
data=
{
data
}
isFetched=
{
isFetched
}
/>
<
FormControl
variant=
"floating"
id=
"name"
isRequired
size=
"lg"
>
<
Input
required
...
...
ui/shared/Page/Page.tsx
View file @
b11e70b2
...
...
@@ -20,7 +20,11 @@ interface Props {
hideMobileHeaderOnScrollDown
?:
boolean
;
}
const
Page
=
({
children
,
wrapChildren
=
true
,
hideMobileHeaderOnScrollDown
}:
Props
)
=>
{
const
Page
=
({
children
,
wrapChildren
=
true
,
hideMobileHeaderOnScrollDown
,
}:
Props
)
=>
{
const
fetch
=
useFetch
();
useQuery
<
unknown
,
unknown
,
unknown
>
([
QueryKeys
.
csrf
],
async
()
=>
await
fetch
(
'
/node-api/account/csrf
'
),
{
...
...
ui/shared/UserAvatar.tsx
View file @
b11e70b2
import
{
useColorModeValue
,
chakra
,
Image
}
from
'
@chakra-ui/react
'
;
import
{
useColorModeValue
,
chakra
,
SkeletonCircle
,
Image
}
from
'
@chakra-ui/react
'
;
import
React
from
'
react
'
;
import
Identicon
from
'
react-identicons
'
;
import
type
{
UserInfo
}
from
'
types/api/account
'
;
import
{
useAppContext
}
from
'
lib/appContext
'
;
import
*
as
cookies
from
'
lib/cookies
'
;
const
ProfileIcon
=
chakra
(
Identicon
);
interface
Props
{
size
:
number
;
data
?:
UserInfo
;
isFetched
:
boolean
;
}
const
UserAvatar
=
({
size
,
data
}:
Props
)
=>
{
const
UserAvatar
=
({
size
,
data
,
isFetched
}:
Props
)
=>
{
const
appProps
=
useAppContext
();
const
hasAuth
=
Boolean
(
cookies
.
get
(
cookies
.
NAMES
.
API_TOKEN
,
appProps
.
cookies
));
const
sizeString
=
`
${
size
}
px`
;
const
bgColor
=
useColorModeValue
(
'
blackAlpha.100
'
,
'
white
'
);
if
(
hasAuth
&&
!
isFetched
)
{
return
<
SkeletonCircle
h=
{
sizeString
}
w=
{
sizeString
}
/>;
}
if
(
data
?.
avatar
)
{
return
(
<
Image
flexShrink=
{
0
}
src=
{
data
.
avatar
}
alt=
{
`Profile picture of ${ data
.name || data
.nickname || '' }`
}
alt=
{
`Profile picture of ${ data
?.name || data?
.nickname || '' }`
}
w=
{
sizeString
}
minW=
{
sizeString
}
h=
{
sizeString
}
...
...
ui/snippets/navigation/NavigationDesktop.tsx
View file @
b11e70b2
...
...
@@ -3,9 +3,9 @@ import React from 'react';
import
appConfig
from
'
configs/app/config
'
;
import
chevronIcon
from
'
icons/arrows/east-mini.svg
'
;
import
{
useAppContext
}
from
'
lib/appContext
'
;
import
*
as
cookies
from
'
lib/cookies
'
;
import
useNavItems
from
'
lib/hooks/useNavItems
'
;
import
isBrowser
from
'
lib/isBrowser
'
;
import
getDefaultTransitionProps
from
'
theme/utils/getDefaultTransitionProps
'
;
import
NetworkLogo
from
'
ui/snippets/networkMenu/NetworkLogo
'
;
import
NetworkMenu
from
'
ui/snippets/networkMenu/NetworkMenu
'
;
...
...
@@ -14,25 +14,24 @@ import NavFooter from './NavFooter';
import
NavLink
from
'
./NavLink
'
;
const
NavigationDesktop
=
()
=>
{
const
{
mainNavItems
,
accountNavItems
}
=
useNavItems
();
const
isInBrowser
=
isBrowser
();
const
[
hasAccount
,
setHasAccount
]
=
React
.
useState
(
false
);
const
[
isCollapsed
,
setCollapsedState
]
=
React
.
useState
<
boolean
|
undefined
>
();
const
appProps
=
useAppContext
();
const
cookiesString
=
appProps
.
cookies
;
React
.
useEffect
(()
=>
{
const
navBarCollapsedCookie
=
cookies
.
get
(
cookies
.
NAMES
.
NAV_BAR_COLLAPSED
);
const
isAuth
=
Boolean
(
cookies
.
get
(
cookies
.
NAMES
.
API_TOKEN
));
if
(
isInBrowser
)
{
if
(
navBarCollapsedCookie
===
'
true
'
)
{
setCollapsedState
(
true
);
const
isNavBarCollapsedCookie
=
cookies
.
get
(
cookies
.
NAMES
.
NAV_BAR_COLLAPSED
,
cookiesString
);
let
isNavBarCollapsed
;
if
(
isNavBarCollapsedCookie
===
'
true
'
)
{
isNavBarCollapsed
=
true
;
}
if
(
n
avBarCollapsedCookie
===
'
false
'
)
{
setCollapsedState
(
false
)
;
if
(
isN
avBarCollapsedCookie
===
'
false
'
)
{
isNavBarCollapsed
=
false
;
}
setHasAccount
(
Boolean
(
appConfig
.
isAccountSupported
&&
isAuth
&&
isInBrowser
));
}
},
[
isInBrowser
]);
const
hasAuth
=
Boolean
(
cookies
.
get
(
cookies
.
NAMES
.
API_TOKEN
,
cookiesString
));
const
{
mainNavItems
,
accountNavItems
}
=
useNavItems
();
const
hasAccount
=
hasAuth
&&
appConfig
.
isAccountSupported
;
const
[
isCollapsed
,
setCollapsedState
]
=
React
.
useState
<
boolean
|
undefined
>
(
isNavBarCollapsed
);
const
handleTogglerClick
=
React
.
useCallback
(()
=>
{
setCollapsedState
((
flag
)
=>
!
flag
);
...
...
ui/snippets/profileMenu/ProfileMenuDesktop.tsx
View file @
b11e70b2
...
...
@@ -7,7 +7,7 @@ import UserAvatar from 'ui/shared/UserAvatar';
import
ProfileMenuContent
from
'
ui/snippets/profileMenu/ProfileMenuContent
'
;
const
ProfileMenuDesktop
=
()
=>
{
const
{
data
}
=
useFetchProfileInfo
();
const
{
data
,
isFetched
}
=
useFetchProfileInfo
();
const
loginUrl
=
link
(
'
auth
'
);
return
(
...
...
@@ -21,7 +21,7 @@ const ProfileMenuDesktop = () => {
as=
{
data
?
undefined
:
'
a
'
}
href=
{
data
?
undefined
:
loginUrl
}
>
<
UserAvatar
size=
{
50
}
data=
{
data
}
/>
<
UserAvatar
size=
{
50
}
data=
{
data
}
isFetched=
{
isFetched
}
/>
</
Button
>
</
PopoverTrigger
>
{
data
&&
(
...
...
ui/snippets/profileMenu/ProfileMenuMobile.tsx
View file @
b11e70b2
...
...
@@ -10,13 +10,13 @@ import ProfileMenuContent from 'ui/snippets/profileMenu/ProfileMenuContent';
const
ProfileMenuMobile
=
()
=>
{
const
{
isOpen
,
onOpen
,
onClose
}
=
useDisclosure
();
const
{
data
}
=
useFetchProfileInfo
();
const
{
data
,
isFetched
}
=
useFetchProfileInfo
();
const
loginUrl
=
link
(
'
auth
'
);
return
(
<>
<
Box
padding=
{
2
}
onClick=
{
onOpen
}
>
<
UserAvatar
size=
{
24
}
data=
{
data
}
/>
<
UserAvatar
size=
{
24
}
data=
{
data
}
isFetched=
{
isFetched
}
/>
</
Box
>
<
Drawer
isOpen=
{
isOpen
}
...
...
@@ -34,7 +34,7 @@ const ProfileMenuMobile = () => {
>
<
ColorModeToggler
/>
<
Box
onClick=
{
onClose
}
>
<
UserAvatar
size=
{
24
}
data=
{
data
}
/>
<
UserAvatar
size=
{
24
}
data=
{
data
}
isFetched=
{
isFetched
}
/>
</
Box
>
</
Flex
>
{
data
?
<
ProfileMenuContent
{
...
data
}
/>
:
(
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment