Add autosave for blog post drafts to local storage #448
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implementation Complete: Save unsaved blog posts in local storage ✅
This PR implements automatic saving of unsaved blog posts to browser's local storage, addressing the feature request in the issue.
Implementation Checklist:
Features Implemented:
Technical Details:
Service Layer:
IBlogPostDraftService- Interface for draft managementBlogPostDraftService- Implementation handling all draft persistence logic with proper null checksCheckForSavedDraftAsync()- Checks if a draft exists and returns saved timeSaveDraftAsync()- Saves draft to local storageRestoreDraftAsync()- Restores draft from local storageDiscardDraftAsync()- Removes draft from local storageGetTimeSinceAutoSave()- Formats elapsed time since last saveComponent Changes:
CreateNewBlogPost.razor- Now usesIBlogPostDraftServiceinstead of directly accessingILocalStorageServiceFiles Modified:
IBlogPostDraftService.cs- New interfaceBlogPostDraftService.cs- New service implementation with null safetyServiceExtensions.cs- Registered service in DI containerCreateNewBlogPost.razor- Refactored to use serviceCreateNewModel.cs- AddedFromDraftmethodDraftBlogPostModel.cs- DTO for draft serializationILocalStorageService.cs- AddedRemoveItemAsyncmethodLocalStorageService.cs- ImplementedRemoveItemAsyncTesting:
Security Summary:
Notes:
This implementation follows the maintainer's suggestion to use local storage and addresses the feedback to extract logic into a service for better separation of concerns and maintainability.
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.