create-blocklet 0.9.6 → 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 +16 -10
- package/package.json +1 -1
- 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/blocklet.yml +1 -2
- package/templates/did-wallet-dapp/package.json +18 -18
- package/templates/express-api/blocklet.yml +0 -1
- package/templates/express-api/package.json +9 -8
- package/templates/html-static/blocklet.yml +0 -1
- package/templates/html-static/package.json +4 -3
- package/templates/monorepo/package.json +4 -3
- package/templates/monorepo/scripts/bump-version.mjs +36 -32
- package/templates/nestjs-api/blocklet.yml +0 -1
- package/templates/nestjs-api/package.json +16 -15
- package/templates/nextjs-dapp/blocklet.yml +0 -1
- package/templates/nextjs-dapp/package.json +7 -7
- package/templates/react-dapp/blocklet.yml +0 -1
- package/templates/react-dapp/package.json +16 -15
- package/templates/react-dapp-ts/blocklet.yml +0 -1
- package/templates/react-dapp-ts/package.json +19 -18
- package/templates/react-gun-dapp/blocklet.yml +0 -1
- package/templates/react-gun-dapp/package.json +15 -14
- package/templates/react-static/blocklet.yml +0 -1
- package/templates/react-static/package.json +11 -10
- package/templates/solidjs-dapp/blocklet.yml +0 -1
- package/templates/solidjs-dapp/package.json +14 -13
- package/templates/solidjs-static/blocklet.yml +0 -1
- package/templates/solidjs-static/package.json +9 -8
- package/templates/svelte-dapp/blocklet.yml +0 -1
- package/templates/svelte-dapp/package.json +12 -11
- 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/blocklet.yml +0 -1
- package/templates/vue-dapp/package.json +16 -15
- package/templates/vue-static/blocklet.yml +0 -1
- package/templates/vue-static/package.json +11 -10
- package/templates/vue-ts-static/blocklet.yml +1 -2
- package/templates/vue-ts-static/package.json +12 -12
- package/templates/vue2-dapp/blocklet.yml +0 -1
- package/templates/vue2-dapp/package.json +13 -12
- package/templates/vue2-static/blocklet.yml +0 -1
- package/templates/vue2-static/package.json +9 -8
|
@@ -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
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Footer, Header } from '@blocklet/ui-react';
|
|
2
|
+
import { Box, Container } from '@mui/material';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
|
|
5
|
+
export default function Layout({ children }) {
|
|
6
|
+
return (
|
|
7
|
+
<Box>
|
|
8
|
+
<Header maxWidth="unset" />
|
|
9
|
+
<Container maxWidth="lg" my={3}>
|
|
10
|
+
{children}
|
|
11
|
+
</Container>
|
|
12
|
+
<Box
|
|
13
|
+
component={Footer}
|
|
14
|
+
sx={{
|
|
15
|
+
'&>div>.MuiContainer-root': {
|
|
16
|
+
maxWidth: 'unset',
|
|
17
|
+
},
|
|
18
|
+
}}
|
|
19
|
+
/>
|
|
20
|
+
</Box>
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
Layout.propTypes = {
|
|
25
|
+
children: PropTypes.any.isRequired,
|
|
26
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createAuthServiceSessionContext } from '@arcblock/did-connect/lib/Session';
|
|
2
|
+
import { useContext } from 'react';
|
|
3
|
+
|
|
4
|
+
const { SessionProvider, SessionContext, SessionConsumer, withSession } = createAuthServiceSessionContext();
|
|
5
|
+
|
|
6
|
+
function useSessionContext() {
|
|
7
|
+
const info = useContext(SessionContext);
|
|
8
|
+
return info;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { SessionProvider, SessionContext, SessionConsumer, useSessionContext, withSession };
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { flatten } from 'flat';
|
|
2
|
+
|
|
3
|
+
export default flatten({
|
|
4
|
+
result: 'Result',
|
|
5
|
+
step1: {
|
|
6
|
+
title: 'Step 1',
|
|
7
|
+
prepareDIDWallet: 'Prepare DID Wallet',
|
|
8
|
+
getWalletFromHere: 'Get DID Wallet from here',
|
|
9
|
+
},
|
|
10
|
+
step2: {
|
|
11
|
+
title: 'Step 2',
|
|
12
|
+
enjoyPlayground: 'Enjoy The DID Connect Playground',
|
|
13
|
+
},
|
|
14
|
+
claims: {
|
|
15
|
+
requestProfile: {
|
|
16
|
+
title: 'Request Profile',
|
|
17
|
+
description: 'If the app need user name/email to function properly, you can request a profile from the user.',
|
|
18
|
+
connect: {
|
|
19
|
+
title: 'Request Profile',
|
|
20
|
+
scan: 'Please provide your name and email to continue',
|
|
21
|
+
},
|
|
22
|
+
result: {
|
|
23
|
+
fullName: 'Full Name',
|
|
24
|
+
email: 'Email Address',
|
|
25
|
+
phone: 'Phone Number',
|
|
26
|
+
birthday: 'Birthday',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
requestNFT: {
|
|
30
|
+
title: 'Request NFT',
|
|
31
|
+
description: 'Get a badge or Certificate from here',
|
|
32
|
+
connect: {
|
|
33
|
+
title: 'Request NFT',
|
|
34
|
+
scan: 'Please provide a NFT to continue',
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
requestTextSig: {
|
|
38
|
+
title: 'Request Text Signature',
|
|
39
|
+
description: 'In some cases, app may want user to sign some text to authorize the app to do something.',
|
|
40
|
+
connect: {
|
|
41
|
+
title: 'Request Text Signature',
|
|
42
|
+
scan: 'Please sign some text to continue',
|
|
43
|
+
},
|
|
44
|
+
result: {
|
|
45
|
+
origin: 'Original Text',
|
|
46
|
+
signature: 'Signature',
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
requestDigestSig: {
|
|
50
|
+
title: 'Request Digest Signature',
|
|
51
|
+
description:
|
|
52
|
+
'In some cases, when the data to be signed is too large to display in DID Wallet, the app shall request the Wallet to sign the digest of the data.',
|
|
53
|
+
connect: {
|
|
54
|
+
title: 'Request Digest Signature',
|
|
55
|
+
scan: 'Please sign the digest to continue',
|
|
56
|
+
},
|
|
57
|
+
result: {
|
|
58
|
+
origin: 'Original Text',
|
|
59
|
+
digest: 'Digest',
|
|
60
|
+
signature: 'Signature',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
requestTransactionSig: {
|
|
64
|
+
title: 'Request Transaction Signature',
|
|
65
|
+
description: 'When the app needs user to sign some transaction that can be broadcast to ArcBlock chain.',
|
|
66
|
+
connect: {
|
|
67
|
+
title: 'Request Transaction Signature',
|
|
68
|
+
scan: 'Please sign a transaction to continue',
|
|
69
|
+
},
|
|
70
|
+
result: {
|
|
71
|
+
hash: 'Transaction Hash',
|
|
72
|
+
signature: 'Signature',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
requestPayment: {
|
|
76
|
+
title: 'Request Payment',
|
|
77
|
+
description: 'When the app needs user to pay some token to get some service.',
|
|
78
|
+
takeTokenFromHere: 'Please take some TBA from here',
|
|
79
|
+
connect: {
|
|
80
|
+
title: 'Request Payment',
|
|
81
|
+
scan: 'Please sign the transaction to continue',
|
|
82
|
+
},
|
|
83
|
+
result: {
|
|
84
|
+
hash: 'Transaction Hash',
|
|
85
|
+
signature: 'Signature',
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
requestMultipleClaims: {
|
|
89
|
+
title: 'Request Multiple Claims',
|
|
90
|
+
description: 'Request text signature and digest signature in a single session.',
|
|
91
|
+
connect: {
|
|
92
|
+
title: 'Request Multiple Claims',
|
|
93
|
+
scan: 'In that session, you will do both text signing and summary signing.',
|
|
94
|
+
},
|
|
95
|
+
result: {
|
|
96
|
+
origin: 'Original Text',
|
|
97
|
+
digest: 'Digest',
|
|
98
|
+
signature: 'Signature',
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
requestMultipleSteps: {
|
|
102
|
+
title: 'Request Multiple Steps',
|
|
103
|
+
description: 'Request text signature and then request digest signature.',
|
|
104
|
+
connect: {
|
|
105
|
+
title: 'Request Multiple Steps',
|
|
106
|
+
scan: 'In that session, you will do a text signature followed by a summary signature.',
|
|
107
|
+
},
|
|
108
|
+
result: {
|
|
109
|
+
origin: 'Original Text',
|
|
110
|
+
digest: 'Digest',
|
|
111
|
+
signature: 'Signature',
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
},
|
|
115
|
+
});
|