diff --git a/src/App.tsx b/src/App.tsx
index 6f7ea8c..f168f6f 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -19,6 +19,7 @@ import { AccountName } from './components/views/AccountName.tsx'
import { Account, IdentityType, Network } from '@0xsequence/waas'
import { getMessageFromUnknownError } from './utils/getMessageFromUnknownError.ts'
import { PlayFabClient } from 'playfab-sdk'
+import { ChildAdoptionView } from './components/views/ChildAdoptionView.tsx'
PlayFabClient.settings.titleId = import.meta.env.VITE_PLAYFAB_TITLE_ID
@@ -207,6 +208,7 @@ function App() {
+
>
)
diff --git a/src/components/views/ChildAdoptionView.tsx b/src/components/views/ChildAdoptionView.tsx
new file mode 100644
index 0000000..735e26d
--- /dev/null
+++ b/src/components/views/ChildAdoptionView.tsx
@@ -0,0 +1,74 @@
+import { useEffect, useState } from 'react'
+import { Box, Button, Text, TextInput } from '@0xsequence/design-system'
+import { Network } from '@0xsequence/waas'
+import { sequence } from '../../main.tsx'
+import { PINCodeInput } from '../PINCodeInput.tsx'
+
+export function ChildAdoptionView({ network }: { network: Network }) {
+ const [code, setCode] = useState([])
+ const [error, setError] = useState(null)
+ const [adopter, setAdopter] = useState("")
+ const [respondWithCode, setRespondWithCode] = useState<((answer: string) => Promise) | null>(null)
+
+ useEffect(() => {
+ sequence.getAdopter().then(adopter => setAdopter(adopter))
+ }, [setAdopter, respondWithCode])
+
+ useEffect(() => {
+ return sequence.onConfirmationRequired(async (respondWithCode: (answer: string) => Promise) => {
+ setRespondWithCode(() => respondWithCode)
+ })
+ }, [])
+
+ const sendAnswer = async () => {
+ if (!respondWithCode) return
+ try {
+ await respondWithCode(code.join(''))
+ setError(null)
+ setRespondWithCode(null)
+ } catch (e) {
+ setError(e.message)
+ setCode([])
+ }
+ }
+
+ const adoptChildWallet = async () => {
+ const adoptionSignal = `sequence-internal-adoption-signal-1`
+ const adopter = '0x7B7D7BA79542584f9AeF539F6696c070a4e1Ced6'
+ const signature = '0x01000100000000020189e6eb0408ae08542bcc99696fba0c001f6aa3ac0000fe010003000000000601000100007400010df7a741b9736a3254e621a4e7c89db7379b4b4fb2007dd294dfd387bd2c8fe666901a27954f2b3f7c61843edeea8481af7de89eb800c56593561cccc99717871b010400002c01019cec96321d5a54df2277fe3dbb2405016a3bbf9601013f5602872eff7ef96e69ef2409e0dd3c62923bd706020001000074000137e7912712dcc2bff97b67840b4ecca45386d945159fee26641e09371b8b4d6d6e501d433ac2f10efbd5f906a7d99e2eee237f039322d8f95dd6120b898301341c010400002c0101951448847a03ad1005a0e463dff0da093690ff240101e0f61b36d02be47455ce5332e9d7bb43bf8f344b03010043347c7c7806511212df32410da167afe44641cb'
+ try {
+ await sequence.adoptChildWallet({
+ network: '11155111',
+ adopterProof: {
+ message: adoptionSignal,
+ signature,
+ },
+ adopter: adopter,
+ })
+ } catch (e) {
+ setError(e.message)
+ }
+ }
+
+ return (
+
+
+
+ {adopter ? `Adopter: ${adopter}` : 'This wallet has no adopter'}
+
+
+ {respondWithCode ? (
+
+
+ Enter code received in email.
+
+
+
+
+ ) : (
+
+ )}
+ {!!error && Error: {error}}
+
+ )
+}