@@ -13,7 +13,7 @@ import { useSecrets } from '@lace/core';
13
13
import { parseError } from '@src/utils/parse-error' ;
14
14
15
15
interface SignMessageState {
16
- usedAddresses : { address : string ; id : number } [ ] ;
16
+ usedAddresses : { address : string ; id : number ; type : 'payment' | 'stake' } [ ] ;
17
17
isSigningInProgress : boolean ;
18
18
signatureObject : Cip30DataSignature | undefined ;
19
19
error : string ;
@@ -37,6 +37,7 @@ export const useSignMessageState = (): SignMessageState => {
37
37
const [ hardwareWalletError , setHardwareWalletError ] = useState < string > ( '' ) ;
38
38
39
39
const addresses = useObservable ( inMemoryWallet ?. addresses$ ) ;
40
+ const rewardAccounts = useObservable ( inMemoryWallet ?. delegation . rewardAccounts$ ) ;
40
41
41
42
const resetSigningState = useCallback ( ( ) => {
42
43
setIsSigningInProgress ( false ) ;
@@ -57,10 +58,16 @@ export const useSignMessageState = (): SignMessageState => {
57
58
isHardwareWallet
58
59
? analytics . sendEventToPostHog ( PostHogAction . SignMessageAskingHardwareWalletInteraction )
59
60
: analytics . sendEventToPostHog ( PostHogAction . SignMessageAskingForPassword ) ;
61
+
62
+ // Determine if the address is a payment address or reward account
63
+ const isRewardAccount = Wallet . Cardano . isRewardAccount ( address ) ;
64
+
60
65
const signatureGenerated = await withSignDataConfirmation (
61
66
async ( ) =>
62
67
await inMemoryWallet . signData ( {
63
- signWith : address as Wallet . Cardano . PaymentAddress ,
68
+ signWith : isRewardAccount
69
+ ? ( address as Wallet . Cardano . RewardAccount )
70
+ : ( address as Wallet . Cardano . PaymentAddress ) ,
64
71
payload
65
72
} ) ,
66
73
! isHardwareWallet ? password : { } ,
@@ -92,11 +99,20 @@ export const useSignMessageState = (): SignMessageState => {
92
99
[ isHardwareWallet , analytics , clearSecrets , inMemoryWallet , t ]
93
100
) ;
94
101
95
- const usedAddresses =
96
- addresses ?. map ( ( address , index ) => ( {
102
+ const usedAddresses = [
103
+ // Payment addresses
104
+ ...( addresses ?. map ( ( address , index ) => ( {
97
105
address : address . address . toString ( ) ,
98
- id : index
99
- } ) ) || [ ] ;
106
+ id : index ,
107
+ type : 'payment' as const
108
+ } ) ) || [ ] ) ,
109
+ // Reward accounts (stake addresses)
110
+ ...( rewardAccounts ?. map ( ( rewardAccount , index ) => ( {
111
+ address : rewardAccount . address ,
112
+ id : addresses ?. length ? addresses . length + index : index ,
113
+ type : 'stake' as const
114
+ } ) ) || [ ] )
115
+ ] ;
100
116
101
117
return {
102
118
usedAddresses,
0 commit comments