Ensure consistency of patterns/design in react explorer code, dedupe code where possible
Now that the majority of explorers are migrated to react, let's go back through and make sure we are being consistent across each explorer with regards to patterns and designs. Additionally, let's reduce code duplication where possible. Areas initially thought of as warranty attention include:
- data source implementations (including support for global sort and load all)
- listening for clipboard changings
- customizing columns
- context menu and toolbar config handling
- error handling
Feel free to include/investigate additional areas.
For 1.33, please do independent investigation into coming up with actionable things we can do regarding this topic. After investigationg, discuss together and create engineering issues for 1.34.
### Areas of Improvement
- [ ] https://github.com/microsoft/AzureStorageExplorer/issues/7738
- [ ] https://github.com/microsoft/AzureStorageExplorer/issues/7737
- [ ] https://github.com/microsoft/AzureStorageExplorer/issues/7493
- [ ] Determine best format for HTML files, location of script tags
- [ ] #7526
- [ ] https://github.com/microsoft/AzureStorageExplorer/issues/7950
- [ ] https://github.com/microsoft/AzureStorageExplorer/issues/7508
Potential places that can be improved:
- [ ] Split Context and State.
- [ ] Aggregate data loading state properties related to a sub-object in state.
- [ ] Use state to track data loading type.
Let's move all suggestions to the first comment so we can keep them together in a task list.
The conclusion of a recent discussion is to implement a custom DataGridHook that can handle all the common logic for deriving props needed by DataGrid from the Explorer. The common logic include paging, selection, sorting, and data loading orchestration. This DataGridHook will help us de-duplicate code for these common logic in the existing explorers. Craig will work on a prototype in 1.34.0.
Main deliverable for 1.34: Share the data loading code/logic among our explorers:
- Data source
- Event lifecycles for data loadings
Main deliverable for 1.34.0 is effectively done but untested. Pushing back due to higher-priority items.