aboutsummaryrefslogblamecommitdiffstats
path: root/ui/app/components/pages/first-time-flow/seed-phrase/confirm-seed-phrase/confirm-seed-phrase.state.js
blob: f2476fc5ce42014be780ca2a476000237d880ccf (plain) (tree)








































                                                                                                 
export function selectSeedWord (word, shuffledIndex) {
  return function update (state) {
    const { selectedSeedWords, selectedSeedWordsHash } = state
    const nextSelectedIndex = selectedSeedWords.length

    return {
      selectedSeedWords: [ ...selectedSeedWords, word ],
      selectedSeedWordsHash: { ...selectedSeedWordsHash, [shuffledIndex]: nextSelectedIndex },
    }
  }
}

export function deselectSeedWord (shuffledIndex) {
  return function update (state) {
    const {
      selectedSeedWords: prevSelectedSeedWords,
      selectedSeedWordsHash: prevSelectedSeedWordsHash,
    } = state

    const selectedSeedWords = [...prevSelectedSeedWords]
    const indexToRemove = prevSelectedSeedWordsHash[shuffledIndex]
    selectedSeedWords.splice(indexToRemove, 1)
    const selectedSeedWordsHash = Object.keys(prevSelectedSeedWordsHash).reduce((acc, index) => {
      const output = { ...acc }
      const selectedSeedWordIndex = prevSelectedSeedWordsHash[index]

      if (selectedSeedWordIndex < indexToRemove) {
        output[index] = selectedSeedWordIndex
      } else if (selectedSeedWordIndex > indexToRemove) {
        output[index] = selectedSeedWordIndex - 1
      }

      return output
    }, {})

    return {
      selectedSeedWords,
      selectedSeedWordsHash,
    }
  }
}