@@ -3970,25 +3970,17 @@ bool CWallet::ApplyMigrationData(MigrationData& data, bilingual_str& error)
3970
3970
if (data.watchonly_wallet ) {
3971
3971
LOCK (data.watchonly_wallet ->cs_wallet );
3972
3972
if (data.watchonly_wallet ->IsMine (addr_pair.first )) {
3973
- // Add to the watchonly. Preserve the labels, purpose, and change-ness
3974
- std::string label = addr_pair.second .GetLabel ();
3975
- data.watchonly_wallet ->m_address_book [addr_pair.first ].purpose = addr_pair.second .purpose ;
3976
- if (!addr_pair.second .IsChange ()) {
3977
- data.watchonly_wallet ->m_address_book [addr_pair.first ].SetLabel (label);
3978
- }
3973
+ // Add to the watchonly. Copy the entire address book entry
3974
+ data.watchonly_wallet ->m_address_book [addr_pair.first ] = addr_pair.second ;
3979
3975
dests_to_delete.push_back (addr_pair.first );
3980
3976
continue ;
3981
3977
}
3982
3978
}
3983
3979
if (data.solvable_wallet ) {
3984
3980
LOCK (data.solvable_wallet ->cs_wallet );
3985
3981
if (data.solvable_wallet ->IsMine (addr_pair.first )) {
3986
- // Add to the solvable. Preserve the labels, purpose, and change-ness
3987
- std::string label = addr_pair.second .GetLabel ();
3988
- data.solvable_wallet ->m_address_book [addr_pair.first ].purpose = addr_pair.second .purpose ;
3989
- if (!addr_pair.second .IsChange ()) {
3990
- data.solvable_wallet ->m_address_book [addr_pair.first ].SetLabel (label);
3991
- }
3982
+ // Add to the solvable. Copy the entire address book entry
3983
+ data.solvable_wallet ->m_address_book [addr_pair.first ] = addr_pair.second ;
3992
3984
dests_to_delete.push_back (addr_pair.first );
3993
3985
continue ;
3994
3986
}
@@ -4008,21 +4000,13 @@ bool CWallet::ApplyMigrationData(MigrationData& data, bilingual_str& error)
4008
4000
// Labels for everything else ("send") should be cloned to all
4009
4001
if (data.watchonly_wallet ) {
4010
4002
LOCK (data.watchonly_wallet ->cs_wallet );
4011
- // Add to the watchonly. Preserve the labels, purpose, and change-ness
4012
- std::string label = addr_pair.second .GetLabel ();
4013
- data.watchonly_wallet ->m_address_book [addr_pair.first ].purpose = addr_pair.second .purpose ;
4014
- if (!addr_pair.second .IsChange ()) {
4015
- data.watchonly_wallet ->m_address_book [addr_pair.first ].SetLabel (label);
4016
- }
4003
+ // Add to the watchonly. Copy the entire address book entry
4004
+ data.watchonly_wallet ->m_address_book [addr_pair.first ] = addr_pair.second ;
4017
4005
}
4018
4006
if (data.solvable_wallet ) {
4019
4007
LOCK (data.solvable_wallet ->cs_wallet );
4020
- // Add to the solvable. Preserve the labels, purpose, and change-ness
4021
- std::string label = addr_pair.second .GetLabel ();
4022
- data.solvable_wallet ->m_address_book [addr_pair.first ].purpose = addr_pair.second .purpose ;
4023
- if (!addr_pair.second .IsChange ()) {
4024
- data.solvable_wallet ->m_address_book [addr_pair.first ].SetLabel (label);
4025
- }
4008
+ // Add to the solvable. Copy the entire address book entry
4009
+ data.solvable_wallet ->m_address_book [addr_pair.first ] = addr_pair.second ;
4026
4010
}
4027
4011
}
4028
4012
}
@@ -4037,6 +4021,10 @@ bool CWallet::ApplyMigrationData(MigrationData& data, bilingual_str& error)
4037
4021
// don't bother writing default values (unknown purpose)
4038
4022
if (addr_book_data.purpose ) batch.WritePurpose (address, PurposeToString (*addr_book_data.purpose ));
4039
4023
if (label) batch.WriteName (address, *label);
4024
+ for (const auto & [id, request] : addr_book_data.receive_requests ) {
4025
+ batch.WriteAddressReceiveRequest (destination, id, request);
4026
+ }
4027
+ if (addr_book_data.previously_spent ) batch.WriteAddressPreviouslySpent (destination, true );
4040
4028
}
4041
4029
};
4042
4030
if (data.watchonly_wallet ) persist_address_book (*data.watchonly_wallet );
0 commit comments