create-blocklet 0.9.5 → 0.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/.prettierrc +11 -1
- package/common/scripts/build-clean.mjs +0 -1
- package/common/scripts/bump-version.mjs +33 -29
- package/index.js +86 -10
- package/package.json +1 -1
- package/templates/base-readme.md +103 -0
- package/templates/did-connect-dapp/.eslintrc.js +4 -0
- package/templates/did-connect-dapp/README.md +143 -0
- package/templates/did-connect-dapp/api/dev.js +5 -0
- package/templates/did-connect-dapp/api/hooks/pre-start.js +33 -0
- package/templates/did-connect-dapp/api/index.js +48 -0
- package/templates/did-connect-dapp/api/libs/auth.js +25 -0
- package/templates/did-connect-dapp/api/libs/env.js +9 -0
- package/templates/did-connect-dapp/api/libs/logger.js +3 -0
- package/templates/did-connect-dapp/api/libs/utils.js +70 -0
- package/templates/did-connect-dapp/api/routes/auth/index.js +15 -0
- package/templates/did-connect-dapp/api/routes/auth/request-digest-signature.js +51 -0
- package/templates/did-connect-dapp/api/routes/auth/request-multiple-claims.js +52 -0
- package/templates/did-connect-dapp/api/routes/auth/request-multiple-steps.js +57 -0
- package/templates/did-connect-dapp/api/routes/auth/request-nft.js +82 -0
- package/templates/did-connect-dapp/api/routes/auth/request-payment.js +72 -0
- package/templates/did-connect-dapp/api/routes/auth/request-profile.js +25 -0
- package/templates/did-connect-dapp/api/routes/auth/request-text-signature.js +44 -0
- package/templates/did-connect-dapp/api/routes/auth/request-transaction-signature.js +62 -0
- package/templates/did-connect-dapp/blocklet.md +5 -0
- package/templates/did-connect-dapp/blocklet.yml +57 -0
- package/templates/did-connect-dapp/index.html +17 -0
- package/templates/did-connect-dapp/package.json +86 -0
- package/templates/did-connect-dapp/src/app.jsx +20 -0
- package/templates/did-connect-dapp/src/assets/get_wallet_en.png +0 -0
- package/templates/did-connect-dapp/src/assets/get_wallet_zh.png +0 -0
- package/templates/did-connect-dapp/src/components/connect-item.jsx +39 -0
- package/templates/did-connect-dapp/src/components/connects/request-digest-signature.jsx +45 -0
- package/templates/did-connect-dapp/src/components/connects/request-multiple-claims.jsx +55 -0
- package/templates/did-connect-dapp/src/components/connects/request-multiple-steps.jsx +54 -0
- package/templates/did-connect-dapp/src/components/connects/request-nft.jsx +75 -0
- package/templates/did-connect-dapp/src/components/connects/request-payment.jsx +82 -0
- package/templates/did-connect-dapp/src/components/connects/request-profile.jsx +72 -0
- package/templates/did-connect-dapp/src/components/connects/request-text-signature.jsx +44 -0
- package/templates/did-connect-dapp/src/components/connects/request-transaction-signature.jsx +44 -0
- package/templates/did-connect-dapp/src/components/info-row.jsx +39 -0
- package/templates/did-connect-dapp/src/components/layout.jsx +26 -0
- package/templates/did-connect-dapp/src/index.jsx +6 -0
- package/templates/did-connect-dapp/src/libs/session.js +11 -0
- package/templates/did-connect-dapp/src/libs/utils.js +4 -0
- package/templates/did-connect-dapp/src/locales/en.js +115 -0
- package/templates/did-connect-dapp/src/locales/index.js +5 -0
- package/templates/did-connect-dapp/src/locales/zh.js +115 -0
- package/templates/did-connect-dapp/src/pages/main.jsx +95 -0
- package/templates/did-connect-dapp/template-info.json +12 -0
- package/templates/did-connect-dapp/vite.config.mjs +11 -0
- package/templates/did-wallet-dapp/.eslintrc.js +7 -0
- package/templates/did-wallet-dapp/README.md +32 -0
- package/templates/did-wallet-dapp/api/dev.js +8 -0
- package/templates/did-wallet-dapp/api/functions/app.js +65 -0
- package/templates/did-wallet-dapp/api/index.js +13 -0
- package/templates/did-wallet-dapp/api/libs/constant.js +1 -0
- package/templates/did-wallet-dapp/api/routes/user.js +30 -0
- package/templates/did-wallet-dapp/blocklet.md +3 -0
- package/templates/did-wallet-dapp/blocklet.yml +58 -0
- package/templates/did-wallet-dapp/index.html +16 -0
- package/templates/did-wallet-dapp/package.json +84 -0
- package/templates/did-wallet-dapp/src/app.jsx +38 -0
- package/templates/did-wallet-dapp/src/assets/blocklet.svg +16 -0
- package/templates/did-wallet-dapp/src/assets/react.svg +1 -0
- package/templates/did-wallet-dapp/src/assets/vite.svg +1 -0
- package/templates/did-wallet-dapp/src/assets/wallet.png +0 -0
- package/templates/did-wallet-dapp/src/components/layout.jsx +28 -0
- package/templates/did-wallet-dapp/src/global.css +79 -0
- package/templates/did-wallet-dapp/src/index.jsx +6 -0
- package/templates/did-wallet-dapp/src/libs/api.js +7 -0
- package/templates/did-wallet-dapp/src/libs/session.js +13 -0
- package/templates/did-wallet-dapp/src/locales/en.js +13 -0
- package/templates/did-wallet-dapp/src/locales/index.js +4 -0
- package/templates/did-wallet-dapp/src/locales/zh.js +13 -0
- package/templates/did-wallet-dapp/src/pages/home/index.css +39 -0
- package/templates/did-wallet-dapp/src/pages/home/index.jsx +57 -0
- package/templates/did-wallet-dapp/src/pages/profile.jsx +136 -0
- package/templates/did-wallet-dapp/template-info.json +12 -0
- package/templates/did-wallet-dapp/vite.config.js +14 -0
- package/templates/did-wallet-dapp/vite.config.server.js +9 -0
- package/templates/express-api/README.md +2 -124
- package/templates/express-api/blocklet.yml +0 -1
- package/templates/express-api/package.json +9 -8
- package/templates/html-static/README.md +3 -125
- package/templates/html-static/blocklet.yml +0 -1
- package/templates/html-static/package.json +4 -3
- package/templates/monorepo/README.md +8 -8
- package/templates/monorepo/package.json +4 -3
- package/templates/monorepo/scripts/bump-version.mjs +36 -32
- package/templates/nestjs-api/README.md +2 -123
- package/templates/nestjs-api/blocklet.yml +0 -1
- package/templates/nestjs-api/package.json +16 -15
- package/templates/nextjs-dapp/README.md +2 -125
- package/templates/nextjs-dapp/blocklet.yml +0 -1
- package/templates/nextjs-dapp/package.json +7 -7
- package/templates/react-dapp/README.md +2 -124
- package/templates/react-dapp/blocklet.yml +0 -1
- package/templates/react-dapp/package.json +16 -15
- package/templates/react-dapp-ts/README.md +2 -125
- package/templates/react-dapp-ts/blocklet.yml +0 -1
- package/templates/react-dapp-ts/package.json +19 -18
- package/templates/react-gun-dapp/README.md +2 -125
- package/templates/react-gun-dapp/blocklet.yml +0 -1
- package/templates/react-gun-dapp/package.json +15 -14
- package/templates/react-static/README.md +2 -125
- package/templates/react-static/blocklet.yml +0 -1
- package/templates/react-static/package.json +11 -10
- package/templates/solidjs-dapp/README.md +2 -125
- package/templates/solidjs-dapp/blocklet.yml +0 -1
- package/templates/solidjs-dapp/package.json +14 -13
- package/templates/solidjs-static/README.md +2 -123
- package/templates/solidjs-static/blocklet.yml +0 -1
- package/templates/solidjs-static/package.json +9 -8
- package/templates/svelte-dapp/README.md +2 -124
- package/templates/svelte-dapp/blocklet.yml +0 -1
- package/templates/svelte-dapp/package.json +12 -11
- package/templates/svelte-static/README.md +2 -125
- package/templates/svelte-static/blocklet.yml +0 -1
- package/templates/svelte-static/package.json +8 -7
- package/templates/todo-list-example/blocklet.yml +0 -1
- package/templates/todo-list-example/package.json +11 -10
- package/templates/vue-dapp/README.md +2 -125
- package/templates/vue-dapp/blocklet.yml +0 -1
- package/templates/vue-dapp/package.json +16 -15
- package/templates/vue-static/README.md +2 -125
- package/templates/vue-static/blocklet.yml +0 -1
- package/templates/vue-static/package.json +11 -10
- package/templates/vue-ts-static/README.md +2 -124
- package/templates/vue-ts-static/blocklet.yml +1 -2
- package/templates/vue-ts-static/package.json +12 -12
- package/templates/vue2-dapp/README.md +2 -125
- package/templates/vue2-dapp/blocklet.yml +0 -1
- package/templates/vue2-dapp/package.json +13 -12
- package/templates/vue2-static/README.md +2 -125
- package/templates/vue2-static/blocklet.yml +0 -1
- package/templates/vue2-static/package.json +9 -8
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "did-connect-dapp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": "true",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "blocklet dev",
|
|
7
|
+
"lint": "eslint src api --ext .mjs,.js,.jsx,.ts,.tsx",
|
|
8
|
+
"lint:fix": "npm run lint -- --fix",
|
|
9
|
+
"start": "cross-env NODE_ENV=development nodemon api/dev.js -w api",
|
|
10
|
+
"clean": "node scripts/build-clean.mjs",
|
|
11
|
+
"bundle": "npm run bundle:client && npm run bundle:api",
|
|
12
|
+
"bundle:client": "vite build",
|
|
13
|
+
"bundle:api": "npm run clean && blocklet bundle --compact --create-release",
|
|
14
|
+
"deploy": "npm run bundle && blocklet deploy .blocklet/bundle",
|
|
15
|
+
"upload": "npm run bundle && blocklet upload .blocklet/release/blocklet.json",
|
|
16
|
+
"prepare": "npx simple-git-hooks",
|
|
17
|
+
"bump-version": "zx --quiet scripts/bump-version.mjs"
|
|
18
|
+
},
|
|
19
|
+
"lint-staged": {
|
|
20
|
+
"*.{mjs,js,jsx,ts,tsx}": [
|
|
21
|
+
"prettier --write",
|
|
22
|
+
"eslint"
|
|
23
|
+
],
|
|
24
|
+
"*.{css,less,scss,json,graphql}": [
|
|
25
|
+
"prettier --write"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"browserslist": {
|
|
29
|
+
"production": [
|
|
30
|
+
">0.2%",
|
|
31
|
+
"not dead",
|
|
32
|
+
"not op_mini all"
|
|
33
|
+
],
|
|
34
|
+
"development": [
|
|
35
|
+
"last 1 chrome version",
|
|
36
|
+
"last 1 firefox version",
|
|
37
|
+
"last 1 safari version"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@arcblock/did": "^1.18.135",
|
|
42
|
+
"@arcblock/did-auth": "^1.18.135",
|
|
43
|
+
"@arcblock/did-auth-storage-nedb": "^1.7.1",
|
|
44
|
+
"@blocklet/sdk": "^1.16.31",
|
|
45
|
+
"@ocap/client": "^1.18.135",
|
|
46
|
+
"@ocap/mcrypto": "^1.18.135",
|
|
47
|
+
"@ocap/util": "^1.18.135",
|
|
48
|
+
"@ocap/wallet": "^1.18.135",
|
|
49
|
+
"cookie-parser": "^1.4.6",
|
|
50
|
+
"dotenv-flow": "^4.1.0",
|
|
51
|
+
"express": "^4.21.0",
|
|
52
|
+
"express-async-errors": "^3.1.1",
|
|
53
|
+
"lodash": "^4.17.21"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@arcblock/did-connect": "^2.10.37",
|
|
57
|
+
"@arcblock/eslint-config": "^0.3.2",
|
|
58
|
+
"@arcblock/ux": "^2.10.37",
|
|
59
|
+
"@blocklet/ui-react": "^2.10.37",
|
|
60
|
+
"@emotion/react": "^11.13.3",
|
|
61
|
+
"@emotion/styled": "^11.13.0",
|
|
62
|
+
"@iconify-icons/material-symbols": "^1.2.58",
|
|
63
|
+
"@iconify/react": "^5.0.2",
|
|
64
|
+
"@mui/material": "^5.16.7",
|
|
65
|
+
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
|
|
66
|
+
"@vitejs/plugin-react": "^4.3.1",
|
|
67
|
+
"bumpp": "^9.5.2",
|
|
68
|
+
"cross-env": "^7.0.3",
|
|
69
|
+
"eslint": "^8.57.1",
|
|
70
|
+
"flat": "^6.0.1",
|
|
71
|
+
"lint-staged": "^15.2.10",
|
|
72
|
+
"nodemon": "^3.1.7",
|
|
73
|
+
"prettier": "^3.3.3",
|
|
74
|
+
"prop-types": "^15.8.1",
|
|
75
|
+
"react": "~18.2.0",
|
|
76
|
+
"react-dom": "~18.2.0",
|
|
77
|
+
"rimraf": "^5.0.10",
|
|
78
|
+
"vite": "^5.4.8",
|
|
79
|
+
"vite-plugin-blocklet": "^0.9.7",
|
|
80
|
+
"vite-plugin-svgr": "^4.2.0",
|
|
81
|
+
"zx": "^8.1.8"
|
|
82
|
+
},
|
|
83
|
+
"simple-git-hooks": {
|
|
84
|
+
"pre-commit": "npx lint-staged"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LocaleProvider } from '@arcblock/ux/lib/Locale/context';
|
|
2
|
+
import { ThemeProvider } from '@arcblock/ux/lib/Theme';
|
|
3
|
+
|
|
4
|
+
import { SessionProvider } from './libs/session';
|
|
5
|
+
import { translations } from './locales';
|
|
6
|
+
import Main from './pages/main';
|
|
7
|
+
|
|
8
|
+
function App() {
|
|
9
|
+
return (
|
|
10
|
+
<ThemeProvider>
|
|
11
|
+
<LocaleProvider translations={translations}>
|
|
12
|
+
<SessionProvider>
|
|
13
|
+
<Main />
|
|
14
|
+
</SessionProvider>
|
|
15
|
+
</LocaleProvider>
|
|
16
|
+
</ThemeProvider>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default App;
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint-disable react/require-default-props */
|
|
2
|
+
import ConnectButton from '@arcblock/did-connect/lib/Button';
|
|
3
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
4
|
+
import { Box, Card, CardContent, Typography } from '@mui/material';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
|
|
7
|
+
export default function ConnectItem({ title, description = null, result = null, onClick = () => {} }) {
|
|
8
|
+
const { t } = useLocaleContext();
|
|
9
|
+
return (
|
|
10
|
+
<Box>
|
|
11
|
+
<Typography variant="h6" component="h5" color="textPrimary">
|
|
12
|
+
{title}
|
|
13
|
+
</Typography>
|
|
14
|
+
{description ? (
|
|
15
|
+
<Typography variant="body1" color="text.secondary" gutterBottom>
|
|
16
|
+
{description}
|
|
17
|
+
</Typography>
|
|
18
|
+
) : null}
|
|
19
|
+
<ConnectButton onClick={onClick} />
|
|
20
|
+
{result ? (
|
|
21
|
+
<Card sx={{ mt: 2 }} variant="outlined">
|
|
22
|
+
<CardContent>
|
|
23
|
+
<Typography sx={{ fontSize: 14 }} color="text.secondary" gutterBottom>
|
|
24
|
+
{t('result')}
|
|
25
|
+
</Typography>
|
|
26
|
+
{result}
|
|
27
|
+
</CardContent>
|
|
28
|
+
</Card>
|
|
29
|
+
) : null}
|
|
30
|
+
</Box>
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
ConnectItem.propTypes = {
|
|
35
|
+
title: PropTypes.any.isRequired,
|
|
36
|
+
description: PropTypes.any,
|
|
37
|
+
result: PropTypes.any,
|
|
38
|
+
onClick: PropTypes.func,
|
|
39
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
import { useSessionContext } from '../../libs/session';
|
|
5
|
+
import ConnectItem from '../connect-item';
|
|
6
|
+
import InfoRow from '../info-row';
|
|
7
|
+
|
|
8
|
+
export default function RequestDigestSignature() {
|
|
9
|
+
const [result, setResult] = useState(null);
|
|
10
|
+
const { locale, t } = useLocaleContext();
|
|
11
|
+
const { connectApi } = useSessionContext();
|
|
12
|
+
|
|
13
|
+
const requestFn = () => {
|
|
14
|
+
const action = 'request-digest-signature';
|
|
15
|
+
setResult(null);
|
|
16
|
+
connectApi.open({
|
|
17
|
+
locale,
|
|
18
|
+
action,
|
|
19
|
+
onSuccess(res) {
|
|
20
|
+
setResult(res.result);
|
|
21
|
+
},
|
|
22
|
+
messages: {
|
|
23
|
+
title: t('claims.requestDigestSig.connect.title'),
|
|
24
|
+
scan: t('claims.requestDigestSig.connect.scan'),
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<ConnectItem
|
|
31
|
+
title={t('claims.requestDigestSig.title')}
|
|
32
|
+
description={t('claims.requestDigestSig.description')}
|
|
33
|
+
onClick={requestFn}
|
|
34
|
+
result={
|
|
35
|
+
result ? (
|
|
36
|
+
<>
|
|
37
|
+
<InfoRow name={t('claims.requestDigestSig.result.origin')} value={result.origin} />
|
|
38
|
+
<InfoRow name={t('claims.requestDigestSig.result.digest')} value={result.digest} />
|
|
39
|
+
<InfoRow name={t('claims.requestDigestSig.result.signature')} value={result.sig} />
|
|
40
|
+
</>
|
|
41
|
+
) : null
|
|
42
|
+
}
|
|
43
|
+
/>
|
|
44
|
+
);
|
|
45
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
2
|
+
import { Box, Typography } from '@mui/material';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
|
|
5
|
+
import { useSessionContext } from '../../libs/session';
|
|
6
|
+
import ConnectItem from '../connect-item';
|
|
7
|
+
import InfoRow from '../info-row';
|
|
8
|
+
|
|
9
|
+
export default function RequestMultipleClaims() {
|
|
10
|
+
const [result, setResult] = useState(null);
|
|
11
|
+
const { locale, t } = useLocaleContext();
|
|
12
|
+
const { connectApi } = useSessionContext();
|
|
13
|
+
|
|
14
|
+
const requestFn = () => {
|
|
15
|
+
const action = 'request-multiple-claims';
|
|
16
|
+
setResult(null);
|
|
17
|
+
connectApi.open({
|
|
18
|
+
locale,
|
|
19
|
+
action,
|
|
20
|
+
onSuccess(res) {
|
|
21
|
+
setResult(res.result);
|
|
22
|
+
},
|
|
23
|
+
messages: {
|
|
24
|
+
title: t('claims.requestMultipleClaims.connect.title'),
|
|
25
|
+
scan: t('claims.requestMultipleClaims.connect.scan'),
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<ConnectItem
|
|
32
|
+
title={t('claims.requestMultipleClaims.title')}
|
|
33
|
+
description={t('claims.requestMultipleClaims.description')}
|
|
34
|
+
onClick={requestFn}
|
|
35
|
+
result={
|
|
36
|
+
result ? (
|
|
37
|
+
<>
|
|
38
|
+
<Typography variant="h6">{t('step1.title')}</Typography>
|
|
39
|
+
<Box sx={{ pl: 1 }}>
|
|
40
|
+
<InfoRow name={t('claims.requestMultipleClaims.result.origin')} value={result[0].origin} />
|
|
41
|
+
<InfoRow name={t('claims.requestMultipleClaims.result.signature')} value={result[0].sig} />
|
|
42
|
+
</Box>
|
|
43
|
+
|
|
44
|
+
<Typography variant="h6">{t('step2.title')}</Typography>
|
|
45
|
+
<Box sx={{ pl: 1 }}>
|
|
46
|
+
<InfoRow name={t('claims.requestMultipleClaims.result.origin')} value={result[1].origin} />
|
|
47
|
+
<InfoRow name={t('claims.requestMultipleClaims.result.digest')} value={result[1].digest} />
|
|
48
|
+
<InfoRow name={t('claims.requestMultipleClaims.result.signature')} value={result[1].sig} />
|
|
49
|
+
</Box>
|
|
50
|
+
</>
|
|
51
|
+
) : null
|
|
52
|
+
}
|
|
53
|
+
/>
|
|
54
|
+
);
|
|
55
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
2
|
+
import { Box, Typography } from '@mui/material';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
|
|
5
|
+
import { useSessionContext } from '../../libs/session';
|
|
6
|
+
import ConnectItem from '../connect-item';
|
|
7
|
+
import InfoRow from '../info-row';
|
|
8
|
+
|
|
9
|
+
export default function RequestMultipleSteps() {
|
|
10
|
+
const [result, setResult] = useState(null);
|
|
11
|
+
const { locale, t } = useLocaleContext();
|
|
12
|
+
const { connectApi } = useSessionContext();
|
|
13
|
+
|
|
14
|
+
const requestFn = () => {
|
|
15
|
+
const action = 'request-multiple-steps';
|
|
16
|
+
setResult(null);
|
|
17
|
+
connectApi.open({
|
|
18
|
+
locale,
|
|
19
|
+
action,
|
|
20
|
+
onSuccess(res) {
|
|
21
|
+
setResult(res.result);
|
|
22
|
+
},
|
|
23
|
+
messages: {
|
|
24
|
+
title: t('claims.requestMultipleSteps.connect.title'),
|
|
25
|
+
scan: t('claims.requestMultipleSteps.connect.scan'),
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<ConnectItem
|
|
32
|
+
title={t('claims.requestMultipleSteps.title')}
|
|
33
|
+
description={t('claims.requestMultipleSteps.description')}
|
|
34
|
+
onClick={requestFn}
|
|
35
|
+
result={
|
|
36
|
+
result ? (
|
|
37
|
+
<>
|
|
38
|
+
<Typography variant="h6">Step 1</Typography>
|
|
39
|
+
<Box sx={{ pl: 1 }}>
|
|
40
|
+
<InfoRow name={t('claims.requestMultipleSteps.result.origin')} value={result[0].origin} />
|
|
41
|
+
<InfoRow name={t('claims.requestMultipleSteps.result.signature')} value={result[0].sig} />
|
|
42
|
+
</Box>
|
|
43
|
+
<Typography variant="h6">Step 2</Typography>
|
|
44
|
+
<Box sx={{ pl: 1 }}>
|
|
45
|
+
<InfoRow name={t('claims.requestMultipleSteps.result.origin')} value={result[1].origin} />
|
|
46
|
+
<InfoRow name={t('claims.requestMultipleSteps.result.digest')} value={result[1].digest} />
|
|
47
|
+
<InfoRow name={t('claims.requestMultipleSteps.result.signature')} value={result[1].sig} />
|
|
48
|
+
</Box>
|
|
49
|
+
</>
|
|
50
|
+
) : null
|
|
51
|
+
}
|
|
52
|
+
/>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
2
|
+
import iconOpenInNewRounded from '@iconify-icons/material-symbols/open-in-new-rounded';
|
|
3
|
+
import { Icon } from '@iconify/react';
|
|
4
|
+
import { Link } from '@mui/material';
|
|
5
|
+
import { useState } from 'react';
|
|
6
|
+
|
|
7
|
+
import { useSessionContext } from '../../libs/session';
|
|
8
|
+
import { getExplorerUrl } from '../../libs/utils';
|
|
9
|
+
import ConnectItem from '../connect-item';
|
|
10
|
+
import InfoRow from '../info-row';
|
|
11
|
+
|
|
12
|
+
export default function RequestNFT() {
|
|
13
|
+
const [result, setResult] = useState(null);
|
|
14
|
+
const { locale, t } = useLocaleContext();
|
|
15
|
+
const { connectApi } = useSessionContext();
|
|
16
|
+
|
|
17
|
+
const requestFn = () => {
|
|
18
|
+
const action = 'request-nft';
|
|
19
|
+
setResult(null);
|
|
20
|
+
connectApi.open({
|
|
21
|
+
locale,
|
|
22
|
+
action,
|
|
23
|
+
onSuccess(res) {
|
|
24
|
+
setResult(res.result);
|
|
25
|
+
},
|
|
26
|
+
messages: {
|
|
27
|
+
title: t('claims.requestNFT.connect.title'),
|
|
28
|
+
scan: t('claims.requestNFT.connect.scan'),
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<ConnectItem
|
|
35
|
+
title={t('claims.requestNFT.title')}
|
|
36
|
+
description={
|
|
37
|
+
<>
|
|
38
|
+
{t('claims.requestNFT.description')}{' '}
|
|
39
|
+
<Link
|
|
40
|
+
href="https://playground.staging.arcblock.io"
|
|
41
|
+
target="_blank"
|
|
42
|
+
underline="hover"
|
|
43
|
+
sx={{
|
|
44
|
+
display: 'inline-flex',
|
|
45
|
+
alignItems: 'center',
|
|
46
|
+
gap: 0.5,
|
|
47
|
+
}}>
|
|
48
|
+
https://playground.staging.arcblock.io <Icon icon={iconOpenInNewRounded} />
|
|
49
|
+
</Link>
|
|
50
|
+
</>
|
|
51
|
+
}
|
|
52
|
+
onClick={requestFn}
|
|
53
|
+
result={
|
|
54
|
+
result ? (
|
|
55
|
+
<InfoRow
|
|
56
|
+
name="NFT"
|
|
57
|
+
value={
|
|
58
|
+
<Link
|
|
59
|
+
href={getExplorerUrl(result.asset, 'assets')}
|
|
60
|
+
target="_blank"
|
|
61
|
+
underline="hover"
|
|
62
|
+
sx={{
|
|
63
|
+
display: 'inline-flex',
|
|
64
|
+
alignItems: 'center',
|
|
65
|
+
gap: 0.5,
|
|
66
|
+
}}>
|
|
67
|
+
{result.asset} <Icon icon={iconOpenInNewRounded} />
|
|
68
|
+
</Link>
|
|
69
|
+
}
|
|
70
|
+
/>
|
|
71
|
+
) : null
|
|
72
|
+
}
|
|
73
|
+
/>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
2
|
+
import iconOpenInNewRounded from '@iconify-icons/material-symbols/open-in-new-rounded';
|
|
3
|
+
import { Icon } from '@iconify/react';
|
|
4
|
+
import { Box, Link } from '@mui/material';
|
|
5
|
+
import { useState } from 'react';
|
|
6
|
+
|
|
7
|
+
import { useSessionContext } from '../../libs/session';
|
|
8
|
+
import { getExplorerUrl } from '../../libs/utils';
|
|
9
|
+
import ConnectItem from '../connect-item';
|
|
10
|
+
import InfoRow from '../info-row';
|
|
11
|
+
|
|
12
|
+
export default function RequestPayment() {
|
|
13
|
+
const [result, setResult] = useState(null);
|
|
14
|
+
const { locale, t } = useLocaleContext();
|
|
15
|
+
const { connectApi } = useSessionContext();
|
|
16
|
+
|
|
17
|
+
const requestPayment = () => {
|
|
18
|
+
const action = 'request-payment';
|
|
19
|
+
setResult(null);
|
|
20
|
+
connectApi.open({
|
|
21
|
+
locale,
|
|
22
|
+
action,
|
|
23
|
+
onSuccess(res) {
|
|
24
|
+
setResult(res.result);
|
|
25
|
+
},
|
|
26
|
+
messages: {
|
|
27
|
+
title: t('claims.requestPayment.connect.title'),
|
|
28
|
+
scan: t('claims.requestPayment.connect.scan'),
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<ConnectItem
|
|
35
|
+
title={t('claims.requestPayment.title')}
|
|
36
|
+
description={
|
|
37
|
+
<>
|
|
38
|
+
{t('claims.requestPayment.description')}
|
|
39
|
+
|
|
40
|
+
<Box>
|
|
41
|
+
{t('claims.requestPayment.takeTokenFromHere')}{' '}
|
|
42
|
+
<Link
|
|
43
|
+
href="https://faucet.abtnetwork.io"
|
|
44
|
+
target="_blank"
|
|
45
|
+
underline="hover"
|
|
46
|
+
sx={{
|
|
47
|
+
display: 'inline-flex',
|
|
48
|
+
alignItems: 'center',
|
|
49
|
+
gap: 0.5,
|
|
50
|
+
}}>
|
|
51
|
+
https://faucet.abtnetwork.io <Icon icon={iconOpenInNewRounded} />
|
|
52
|
+
</Link>
|
|
53
|
+
</Box>
|
|
54
|
+
</>
|
|
55
|
+
}
|
|
56
|
+
onClick={requestPayment}
|
|
57
|
+
result={
|
|
58
|
+
result ? (
|
|
59
|
+
<>
|
|
60
|
+
<InfoRow
|
|
61
|
+
name={t('claims.requestPayment.result.hash')}
|
|
62
|
+
value={
|
|
63
|
+
<Link
|
|
64
|
+
href={getExplorerUrl(result.hash)}
|
|
65
|
+
target="_blank"
|
|
66
|
+
underline="hover"
|
|
67
|
+
sx={{
|
|
68
|
+
display: 'inline-flex',
|
|
69
|
+
alignItems: 'center',
|
|
70
|
+
gap: 0.5,
|
|
71
|
+
}}>
|
|
72
|
+
{result.hash} <Icon icon={iconOpenInNewRounded} />
|
|
73
|
+
</Link>
|
|
74
|
+
}
|
|
75
|
+
/>
|
|
76
|
+
<InfoRow name={t('claims.requestPayment.result.signature')} value={result.sig} />
|
|
77
|
+
</>
|
|
78
|
+
) : null
|
|
79
|
+
}
|
|
80
|
+
/>
|
|
81
|
+
);
|
|
82
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import Avatar from '@arcblock/ux/lib/Avatar';
|
|
2
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
3
|
+
import AccountBoxOutline from '@iconify-icons/material-symbols/account-box-outline';
|
|
4
|
+
import CakeOutlineRoundedIcon from '@iconify-icons/material-symbols/cake-outline-rounded';
|
|
5
|
+
import MailOutlineRoundedIcon from '@iconify-icons/material-symbols/mail-outline-rounded';
|
|
6
|
+
import PhoneOutlineRoundedIcon from '@iconify-icons/material-symbols/phone-android-outline-rounded';
|
|
7
|
+
import { Icon } from '@iconify/react';
|
|
8
|
+
import { useState } from 'react';
|
|
9
|
+
|
|
10
|
+
import { useSessionContext } from '../../libs/session';
|
|
11
|
+
import ConnectItem from '../connect-item';
|
|
12
|
+
import InfoRow from '../info-row';
|
|
13
|
+
|
|
14
|
+
export default function RequestProfile() {
|
|
15
|
+
const [result, setResult] = useState(null);
|
|
16
|
+
const { locale, t } = useLocaleContext();
|
|
17
|
+
const { connectApi } = useSessionContext();
|
|
18
|
+
|
|
19
|
+
const requestProfile = () => {
|
|
20
|
+
const action = 'request-profile';
|
|
21
|
+
setResult(null);
|
|
22
|
+
connectApi.open({
|
|
23
|
+
locale,
|
|
24
|
+
action,
|
|
25
|
+
onSuccess(res) {
|
|
26
|
+
if (res.result.avatar) {
|
|
27
|
+
res.result.avatar = res.result.avatar.replace(/[\r\n\s]/g, '');
|
|
28
|
+
}
|
|
29
|
+
setResult(res.result);
|
|
30
|
+
},
|
|
31
|
+
messages: {
|
|
32
|
+
title: t('claims.requestProfile.connect.title'),
|
|
33
|
+
scan: t('claims.requestProfile.connect.scan'),
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
return (
|
|
39
|
+
<ConnectItem
|
|
40
|
+
title={t('claims.requestProfile.title')}
|
|
41
|
+
description={t('claims.requestProfile.description')}
|
|
42
|
+
onClick={requestProfile}
|
|
43
|
+
result={
|
|
44
|
+
result ? (
|
|
45
|
+
<>
|
|
46
|
+
<Avatar variant="circle" src={result.avatar} did={result.did} size={60} />
|
|
47
|
+
<InfoRow
|
|
48
|
+
icon={<Icon fontSize={18} icon={AccountBoxOutline} />}
|
|
49
|
+
name={t('claims.requestProfile.result.fullName')}
|
|
50
|
+
value={result.fullName}
|
|
51
|
+
/>
|
|
52
|
+
<InfoRow
|
|
53
|
+
icon={<Icon fontSize={18} icon={MailOutlineRoundedIcon} />}
|
|
54
|
+
name={t('claims.requestProfile.result.email')}
|
|
55
|
+
value={result.email}
|
|
56
|
+
/>
|
|
57
|
+
<InfoRow
|
|
58
|
+
icon={<Icon fontSize={18} icon={PhoneOutlineRoundedIcon} />}
|
|
59
|
+
name={t('claims.requestProfile.result.phone')}
|
|
60
|
+
value={result.phone}
|
|
61
|
+
/>
|
|
62
|
+
<InfoRow
|
|
63
|
+
icon={<Icon fontSize={18} icon={CakeOutlineRoundedIcon} />}
|
|
64
|
+
name={t('claims.requestProfile.result.birthday')}
|
|
65
|
+
value={result.birthday}
|
|
66
|
+
/>
|
|
67
|
+
</>
|
|
68
|
+
) : null
|
|
69
|
+
}
|
|
70
|
+
/>
|
|
71
|
+
);
|
|
72
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
import { useSessionContext } from '../../libs/session';
|
|
5
|
+
import ConnectItem from '../connect-item';
|
|
6
|
+
import InfoRow from '../info-row';
|
|
7
|
+
|
|
8
|
+
export default function RequestTextSignature() {
|
|
9
|
+
const [result, setResult] = useState(null);
|
|
10
|
+
const { locale, t } = useLocaleContext();
|
|
11
|
+
const { connectApi } = useSessionContext();
|
|
12
|
+
|
|
13
|
+
const requestFn = () => {
|
|
14
|
+
const action = 'request-text-signature';
|
|
15
|
+
setResult(null);
|
|
16
|
+
connectApi.open({
|
|
17
|
+
locale,
|
|
18
|
+
action,
|
|
19
|
+
onSuccess(res) {
|
|
20
|
+
setResult(res.result);
|
|
21
|
+
},
|
|
22
|
+
messages: {
|
|
23
|
+
title: t('claims.requestTextSig.connect.title'),
|
|
24
|
+
scan: t('claims.requestTextSig.connect.scan'),
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<ConnectItem
|
|
31
|
+
title={t('claims.requestTextSig.title')}
|
|
32
|
+
description={t('claims.requestTextSig.description')}
|
|
33
|
+
onClick={requestFn}
|
|
34
|
+
result={
|
|
35
|
+
result ? (
|
|
36
|
+
<>
|
|
37
|
+
<InfoRow name={t('claims.requestTextSig.result.origin')} value={result.origin} />
|
|
38
|
+
<InfoRow name={t('claims.requestTextSig.result.signature')} value={result.sig} />
|
|
39
|
+
</>
|
|
40
|
+
) : null
|
|
41
|
+
}
|
|
42
|
+
/>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
import { useSessionContext } from '../../libs/session';
|
|
5
|
+
import ConnectItem from '../connect-item';
|
|
6
|
+
import InfoRow from '../info-row';
|
|
7
|
+
|
|
8
|
+
export default function RequestTransactionSignature() {
|
|
9
|
+
const [result, setResult] = useState(null);
|
|
10
|
+
const { locale, t } = useLocaleContext();
|
|
11
|
+
const { connectApi } = useSessionContext();
|
|
12
|
+
|
|
13
|
+
const requestFn = () => {
|
|
14
|
+
const action = 'request-transaction-signature';
|
|
15
|
+
setResult(null);
|
|
16
|
+
connectApi.open({
|
|
17
|
+
locale,
|
|
18
|
+
action,
|
|
19
|
+
onSuccess(res) {
|
|
20
|
+
setResult(res.result);
|
|
21
|
+
},
|
|
22
|
+
messages: {
|
|
23
|
+
title: t('claims.requestTransactionSig.connect.title'),
|
|
24
|
+
scan: t('claims.requestTransactionSig.connect.scan'),
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<ConnectItem
|
|
31
|
+
title={t('claims.requestTransactionSig.title')}
|
|
32
|
+
description={t('claims.requestTransactionSig.description')}
|
|
33
|
+
onClick={requestFn}
|
|
34
|
+
result={
|
|
35
|
+
result ? (
|
|
36
|
+
<>
|
|
37
|
+
<InfoRow name={t('claims.requestTransactionSig.result.hash')} value={result.hash} />
|
|
38
|
+
<InfoRow name={t('claims.requestTransactionSig.result.signature')} value={result.sig} />
|
|
39
|
+
</>
|
|
40
|
+
) : null
|
|
41
|
+
}
|
|
42
|
+
/>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint-disable react/require-default-props */
|
|
2
|
+
import { Box, Typography } from '@mui/material';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
|
|
5
|
+
export default function InfoRow({ icon = null, name, value }) {
|
|
6
|
+
return (
|
|
7
|
+
<Typography variant="body1" color="text.primary" gutterBottom sx={{ display: 'flex', alignItems: 'center' }}>
|
|
8
|
+
<Box
|
|
9
|
+
sx={{
|
|
10
|
+
display: 'inline-flex',
|
|
11
|
+
alignItems: 'center',
|
|
12
|
+
gap: 0.5,
|
|
13
|
+
mr: 0.75,
|
|
14
|
+
flexShrink: 0,
|
|
15
|
+
'&:after': {
|
|
16
|
+
content: '":"',
|
|
17
|
+
ml: -0.25,
|
|
18
|
+
},
|
|
19
|
+
}}>
|
|
20
|
+
{icon}
|
|
21
|
+
{name}
|
|
22
|
+
</Box>
|
|
23
|
+
<Typography
|
|
24
|
+
component="span"
|
|
25
|
+
color="text.secondary"
|
|
26
|
+
sx={{
|
|
27
|
+
wordBreak: 'break-word',
|
|
28
|
+
}}>
|
|
29
|
+
{value}
|
|
30
|
+
</Typography>
|
|
31
|
+
</Typography>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
InfoRow.propTypes = {
|
|
36
|
+
icon: PropTypes.any,
|
|
37
|
+
name: PropTypes.any.isRequired,
|
|
38
|
+
value: PropTypes.any.isRequired,
|
|
39
|
+
};
|