- Fixes#111237022 - Unable to save any changes to CloudLibrary items
- Add useIncrementedNameDuringTypeChange to PrintItemWrapper to control naming behavior
- Pass useIncrementedName value though from provider factory all the way to PrintItemWrapper
- Prevent duplicate calls to GetPrintItemWrapperAsync within the same callstack i.e. pass instance through
- Only rename files when switching to AMF and use different logic for different provider types
- Add path helper methods to PrintItemWrapper for clarity and conciseness in callers
- Add LibraryRootNotice event
- Hook LibraryRootNotice into new Socketeer LibraryRootNotice DeviceEvent
- Listen for LibraryRootNotice in LibraryProviderSelector and call ReloadData to ping ProviderFactories for visibility
- Refactor LibraryProviderSharedPlugin for clarity
- Refactor LibraryProviderSharedPlugin to support refreshing visibility logic after ShouldBeShown() calls
- Revise AcquireCollectionData() to use 'internal' access modifier for reuse in LibraryProviderSharedPlugin
- Ensure the input field on CloudShareRedeemForm is focused by default, make buttons available to test automation
- Add new test for 'Shared with Me' folder visibility
- Update existing Purchased folder test to look for revised item name
- Replace magic 'ProviderSelectorKey' token with static member for compile time consistency
- Prevent the LibraryProviderSelector from creating new providers when it already has ones loaded, stored and referenced
- Add WebRequest2 type to support custom post/request values
- Prevent accidental construction of ProviderSQLite objects inside of ProviderSQLite constructor
- Initialize .baseLibraryCollection during rootLibraryCollection construction to prevent null reference errors
caused by access before assignment
- Remove AddItem -> AddStlOrGcode -> AddItem recursion - Fixes crash due to concurrent writes to default.mcp
- Add sqlite async methods and supporting logic to ensure disk IO operations aren’t run in parallel
- Consolidate logic around sample part extraction from StaticData from various areas into a single method
- Rename that method from SyncCalibrationFilesToDisk to EnsureSamplePartsExist
- Break apart the large LINQ query into discrete and easier to understand steps
- Add shared base class for sqlite backed library providers and resuse common code in base
- Guard against cache deletion during one-time library initialization
- Discard StreamReader cases in favor of ReadAllText - Ensures .Dispose is always called and is ultra succinct
- Purge orphaned code