Repository navigation
feat: scope CoreData records and downloads storage by instance - #679
Conversation
Core/Course/Downloads CoreData models: add optional instanceKey to
CDDownloadData, CDOfflineProgress, CDCourseItem, and
CDDownloadCoursePreview, widening their uniqueness constraints so two
instances can't collide on the same id.
CorePersistence/CoursePersistence/DownloadsPersistence: filter every
fetch by the current instance's key and stamp it on every save. Also
fixes DownloadsPersistence.saveDownloadCourses never stamping the key,
which would have made every load return NoCachedDataError once reads
became instance-scoped.
Add InstanceFilePathProvider (Core/Network): nests downloads under
Documents/{instanceKey}/{userId}_Files/, replacing DownloadManager's
old un-scoped {userId}_Files path.
Wire instanceStore/filePathProvider through AppAssembly,
NetworkAssembly, and ScreenAssembly.
|
Thanks for the pull request, @RawanMatar89! This repository is currently maintained by Once you've gone through the following steps feel free to tag them in a comment and let them know that your changes are ready for engineering review. 🔘 Get product approvalIf you haven't already, check this list to see if your contribution needs to go through the product review process.
🔘 Provide contextTo help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:
🔘 Get a green buildIf one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green. DetailsWhere can I find more information?If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources: When can I expect my changes to be merged?Our goal is to get community contributions seen and reviewed as efficiently as possible. However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:
💡 As a result it may take up to several weeks or months to complete a review and merge your PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #679 +/- ##
==============================
==============================
☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
The merge-base changed after approval.
The merge-base changed after approval.
The merge-base changed after approval.
The merge-base changed after approval.
The merge-base changed after approval.
Summary
Extends instance isolation to CoreData records and on-disk downloads, so cached course
data, offline progress, and downloaded files no longer bleed between instances.
Changes
instanceKeytoCDDownloadData,CDOfflineProgress(Core),
CDCourseItem(Course), andCDDownloadCoursePreview(Downloads), widening eachentity's uniqueness constraint to include it.
CorePersistence/CoursePersistence/DownloadsPersistence: every fetch nowfilters by the current instance's key (via
NSCompoundPredicatealongside anycaller-supplied predicate), every save stamps it.
DownloadsPersistence.saveDownloadCoursesnever stamped the key on save even though readsfiltered by it — every load would have silently returned
NoCachedDataErroronce fetchesbecame instance-scoped. Fixed to stamp on save, consistent with the other two persistence
classes.
InstanceFilePathProvider(Core/Network) — nests downloads underDocuments/{instanceKey}/{userId}_Files/, replacingDownloadManager's old un-scoped{userId}_Filespath.instanceStore/filePathProviderthroughAppAssembly,NetworkAssembly, andScreenAssembly.DownloadManagerTestsfor the newfilePathProviderinitializer parameter.Out of scope