rehydrateAddressBook.ts
1 import { addressBookConstants, addressBookTypes, addressBookReducer } from './addressBook'; 2 3 export default function rehydrateAddressBookState( 4 ab: addressBookTypes.AddressBookState | undefined 5 ): addressBookTypes.AddressBookState { 6 const addressBook = { ...addressBookReducer.INITIAL_STATE }; 7 if (!ab) { 8 return addressBookReducer.INITIAL_STATE; 9 } 10 11 // Lower case addresses 12 Object.keys(ab.addresses).forEach(address => { 13 addressBook.addresses[address.toLowerCase()] = ab.addresses[address]; 14 }); 15 16 Object.keys(ab.labels).forEach(label => { 17 addressBook.labels[label] = ab.labels[label].toLowerCase(); 18 }); 19 20 Object.keys(ab.entries).forEach(id => { 21 // Remove the temporary entries that address book and account store info in 22 if ( 23 id === addressBookConstants.ADDRESS_BOOK_TABLE_ID || 24 id === addressBookConstants.ACCOUNT_ADDRESS_ID 25 ) { 26 return; 27 } 28 29 const entry = { 30 ...ab.entries[id], 31 address: ab.entries[id].address.toLowerCase() 32 }; 33 34 // Convert errorous entries into temporary ones 35 if (entry.addressError) { 36 entry.temporaryAddress = entry.address; 37 delete entry.addressError; 38 } 39 if (entry.labelError) { 40 entry.temporaryLabel = entry.label; 41 delete entry.labelError; 42 } 43 44 addressBook.entries[id] = entry; 45 }); 46 47 return addressBook; 48 }