ed87df6269
* feat: eagerly connect outside of react lifecycle * test: reflect selected wallet in localStorage * test: spy only on portfolio balances * feat: connectionReady * feat: connecting state * feat: leave space for address * fix tests * better meta * fix * fix wallet change * add interactivity earlier * add validation * update localstorage key in cypress setup * even less thrash * load per account * simplify, hopefully * explanatory * inf render * whoopsie * ordering
43 lines
1.4 KiB
TypeScript
43 lines
1.4 KiB
TypeScript
import { connectionMetaKey } from '../../src/connection/meta'
|
|
import { ConnectionType } from '../../src/connection/types'
|
|
import { UserState } from '../../src/state/user/reducer'
|
|
|
|
export const CONNECTED_WALLET_USER_STATE: Partial<UserState> = { selectedWallet: ConnectionType.INJECTED }
|
|
|
|
export const DISCONNECTED_WALLET_USER_STATE: Partial<UserState> = { selectedWallet: undefined }
|
|
|
|
/**
|
|
* This sets the initial value of the "user" slice in IndexedDB.
|
|
* Other persisted slices are not set, so they will be filled with their respective initial values
|
|
* when the app runs.
|
|
*/
|
|
export function setInitialUserState(win: Cypress.AUTWindow, state: UserState) {
|
|
// Selected wallet should also be reflected in localStorage, so that eager connections work.
|
|
if (state.selectedWallet) {
|
|
win.localStorage.setItem(
|
|
connectionMetaKey,
|
|
JSON.stringify({
|
|
type: state.selectedWallet,
|
|
})
|
|
)
|
|
}
|
|
|
|
win.indexedDB.deleteDatabase('redux')
|
|
const dbRequest = win.indexedDB.open('redux')
|
|
dbRequest.onsuccess = function () {
|
|
const db = dbRequest.result
|
|
const transaction = db.transaction('keyvaluepairs', 'readwrite')
|
|
const store = transaction.objectStore('keyvaluepairs')
|
|
store.put(
|
|
{
|
|
user: state,
|
|
},
|
|
'persist:interface'
|
|
)
|
|
}
|
|
dbRequest.onupgradeneeded = function () {
|
|
const db = dbRequest.result
|
|
db.createObjectStore('keyvaluepairs')
|
|
}
|
|
}
|