From c6e4403f34ab4994a54da76af4462046ebff55f2 Mon Sep 17 00:00:00 2001 From: owlsua Date: Sun, 12 May 2024 23:19:39 +0200 Subject: [PATCH 1/4] feat: add textarea to restore the wallet --- .../RestoreSeedField/RestoreSeedField.css | 12 +++++ .../RestoreSeedField/RestoreSeedField.js | 51 +++++++++++++++++++ src/components/composed/index.js | 2 + 3 files changed, 65 insertions(+) create mode 100644 src/components/composed/RestoreSeedField/RestoreSeedField.css create mode 100644 src/components/composed/RestoreSeedField/RestoreSeedField.js diff --git a/src/components/composed/RestoreSeedField/RestoreSeedField.css b/src/components/composed/RestoreSeedField/RestoreSeedField.css new file mode 100644 index 00000000..cb8392b5 --- /dev/null +++ b/src/components/composed/RestoreSeedField/RestoreSeedField.css @@ -0,0 +1,12 @@ +.seed-textarea { + padding: 15px; + resize: none; +} + +.seed-textarea.seed-invalid { + border-bottom: 2px solid rgb(var(--color-red)); +} + +.seed-textarea.seed-valid { + border-bottom: 2px solid rgb(var(--color-green)); +} diff --git a/src/components/composed/RestoreSeedField/RestoreSeedField.js b/src/components/composed/RestoreSeedField/RestoreSeedField.js new file mode 100644 index 00000000..02b2654c --- /dev/null +++ b/src/components/composed/RestoreSeedField/RestoreSeedField.js @@ -0,0 +1,51 @@ +// import { useState } from 'react' +import React, { useState } from 'react' + +import './RestoreSeedField.css' + +const isInputValid = (words, DefaultWordList = []) => { + if (words.length !== 12 && words.length !== 24) { + return false + } + return words?.length > 0 + ? words.every((word) => DefaultWordList.includes(word)) + : false +} + +const RestoreSeedField = ({ + setFields, + BIP39DefaultWordList, + accountWordsValid, + setAccountWordsValid, +}) => { + const [textareaValue, setTextareaValue] = useState('') + + const onChangeHandler = ({ target }) => { + setTextareaValue(target.value) + const words = target.value.trim().split(' ') + const isValid = isInputValid(words, BIP39DefaultWordList) + setAccountWordsValid(isValid) + setFields(words) + } + + return ( +