Skip to content

Commit

Permalink
Merge pull request tahowallet#542 from tallycash/reverse-safety
Browse files Browse the repository at this point in the history
Reverse Safety: Fix autolock clearing keyring metadata for good
  • Loading branch information
mhluongo authored Dec 9, 2021
2 parents 9d29737 + f45c94a commit 00ae7f6
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 29 deletions.
2 changes: 1 addition & 1 deletion background/redux-slices/keyrings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ const keyringsSlice = createSlice({
// list as the keyring service clears the in-memory keyrings. For UI
// purposes, however, we want to continue tracking the keyring metadata,
// so we ignore an empty list if the keyrings are locked.
if (keyrings.length === 0 && state.status !== "locked") {
if (keyrings.length === 0 && state.status === "locked") {
return state
}

Expand Down
24 changes: 10 additions & 14 deletions background/redux-slices/selectors/activitiesSelectors.ts
Original file line number Diff line number Diff line change
@@ -1,27 +1,23 @@
import { createSelector, EntityId } from "@reduxjs/toolkit"
import { AccountState } from "../accounts"
import { UIState } from "../ui"
import { ActivitiesState, ActivityItem } from "../activities"
import { RootState } from ".."
import { ActivityItem } from "../activities"

export const selectCurrentAccountActivitiesWithTimestamps = createSelector(
(state: {
ui: UIState
activities: ActivitiesState
account: AccountState
}) => state,
({ activities, ui, account }) => {
const currentAccountActivities = ui.currentAccount
? activities[ui.currentAccount.address]
(state: RootState) => state.ui.currentAccount?.address,
(state: RootState) => state.activities,
(state: RootState) => state.account.blocks,
(currentAddress, activities, blocks) => {
const currentAccountActivities = currentAddress
? activities[currentAddress]
: undefined
return currentAccountActivities?.ids.map((id: EntityId): ActivityItem => {
const activityItem = currentAccountActivities.entities[id] as ActivityItem
const isSent =
activityItem.from.toLowerCase() === ui.currentAccount?.address
const isSent = activityItem.from.toLowerCase() === currentAddress
return {
...activityItem,
timestamp:
activityItem?.blockHeight &&
account.blocks[activityItem?.blockHeight]?.timestamp,
blocks[activityItem?.blockHeight]?.timestamp,
isSent,
}
})
Expand Down
19 changes: 9 additions & 10 deletions background/redux-slices/selectors/keyringsSelectors.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
import { createSelector } from "@reduxjs/toolkit"
import { RootState } from ".."

export const selectIsCurrentAccountSigner = createSelector(
(state: RootState) =>
state.keyrings.keyrings.flatMap((keyring) => keyring.addresses),
(state: RootState) => state.ui.currentAccount,
(addresses, selectedAccount) => addresses.includes(selectedAccount.address)
)

export const selectKeyringStatus = createSelector(
(state: RootState) => state.keyrings.status,
(status) => status
)

export const selectSigningAddresses = createSelector(
(state: RootState) =>
state.keyrings.keyrings.flatMap((keyring) => keyring.addresses),
(addresses) => addresses
(state: RootState) => state.keyrings.keyrings,
(keyrings) => keyrings.flatMap((keyring) => keyring.addresses)
)

export const selectIsCurrentAccountSigner = createSelector(
selectSigningAddresses,
(state: RootState) => state.ui.currentAccount,
(signingAddresses, selectedAccount) =>
signingAddresses.includes(selectedAccount.address)
)
6 changes: 2 additions & 4 deletions ui/pages/Send.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,7 @@ export default function Send(): ReactElement {

const dispatch = useBackgroundDispatch()

const { accountData } = useBackgroundSelector(
selectAccountAndTimestampedActivities
)
const currentAccount = useBackgroundSelector(({ ui }) => ui.currentAccount)

const openSelectFeeModal = () => {
setFeeModalOpen(true)
Expand All @@ -52,7 +50,7 @@ export default function Send(): ReactElement {

const sendTransactionRequest = async () => {
const transaction = {
from: Object.keys(accountData)[0],
from: currentAccount.address,
to: destinationAddress,
// eslint-disable-next-line no-underscore-dangle
value: BigInt(utils.parseEther(amount)._hex),
Expand Down

0 comments on commit 00ae7f6

Please sign in to comment.