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