Disable/Enable Slider attachment on the fly

I have a slider that controls preset switching in my plugin. It uses a slider Attachment to receive changes from the DAW

but I also have a checkbox for “ignore preset changes” (so the user can concentrate on editing the current preset without a switch being caused by the DAW)

Preset changing disabling already works in my code but:

I need to prevent the preset change slider from moving when I am ignoring preset changes.

Is there a way to do this?

I am trying this:

 // THE IS NOT PART OF THE APVTS - it is a meta control
    addAndMakeVisible(disablePresetSliderCheckbox);
      disablePresetSliderCheckbox.setButtonText("Disable Preset Slider");
      disablePresetSliderCheckbox.onClick = [this] {
          // Update the value of allowPresetChanges in the processor
          audioProcessor.setAllowPresetChanges(!disablePresetSliderCheckbox.getToggleState());
          if (disablePresetSliderCheckbox.getToggleState())
          {
              // Detach the slider attachment to prevent the slider from moving
              presetSelectionSliderAttachment.reset();
          }
          else
          {
              // Re-create the slider attachment to allow the slider to move and change presets
              presetSelectionSliderAttachment = std::make_unique<juce::AudioProcessorValueTreeState::SliderAttachment>(
                  audioProcessor.apvts, "presetSelection", presetSlider);
          }
      };

but when I re-enable preset slider the parameter changes from the DAW do not control the slider anymore. (disabling the slider works fine)

it is original created in Audio Processor like this

    params.push_back(std::make_unique<juce::AudioParameterInt>(
                                                               "presetSelection",               // Parameter ID
                                                               "Preset Selection",              // Parameter name
                                                               0,                               // Minimum value
                                                               64,                  // Maximum value (ensure it's at least 0)
                                                               0                                // Default value
                                                               ));
    
in processor .h 
private:
    juce::AudioProcessorValueTreeState::ParameterLayout createParameters();

in processor.cpp:

AudioProcessorValueTreeState::ParameterLayout NewProjectAudioProcessor::createParameters()
{
    std::vector<std::unique_ptr<juce::RangedAudioParameter>> params;
      DBG("preset manager num presets:" << maxPresetIndex);
    params.push_back(std::make_unique<juce::AudioParameterInt>(
                                                               "presetSelection",               // Parameter ID
                                                               "Preset Selection",              // Parameter name
                                                               0,                               // Minimum value
                                                               64,                  // Maximum value (ensure it's at least 0)
                                                               0                                // Default value
                                                               ));

etc

    return { params.begin(), params.end() };
}