you wrote “At one point the Alliance storage buildings will be full. Then the button would blink forever (well until the next Conquest) because you would have no chance to donate once the buildings are full.”
It is obvious that this blinking should be implemented as:
blink_stronghold_button = ( player_can_send_stone_resources and alliance_storage_building_for_stone_is_not_full ) or \
( player_can_send_wisdom_resources and alliance_storage_building_for_wisdom_is_not_full ) or \
( player_can_send_troop_resources and alliance_storage_building_for_troop_is_not_full )
Then you don’t need to gate that function with conquest is active or not. It would just blink whenever a player can really send some resources, and stay silent when resources cannot be sent, either because they are not ready, or the alliance storage is already full.