Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v10: Improved multi-store usage support #156

Draft
wants to merge 73 commits into
base: main
Choose a base branch
from

Conversation

JaffaKetchup
Copy link
Owner

@JaffaKetchup JaffaKetchup commented May 24, 2024

This PR builds on v9, and fully embraces the new many-to-many relationship between tiles and stores to allow for more flexibility when constructing the tile provider.
This allows full & easy support for the ideas in #24 and #83: stores may now be treated as regions if wanted, which allows huge amounts of flexibility and a better UX.

Additionally, vector tiles are now supported in theory, as the internal caching/retrieval logic of the ImageProvider has been exposed, although it is out of scope to fully implement support for it.

See CHANGELOG for full details.

(fixes #24)
(fixes #83)
(fixes #84)

…leProvider`

Replaced `FMTCTileProviderSettings.maxStoreLength` with `maxLength` on each store individually
Exposed direct constructor for `FMTCTileProvider`
Refactored and exposed tile provider logic into seperate `getBytes` method
Added more `CacheBehavior` options
Added toggle for hit/miss stat recording
Added tests
Improved documentation
Added internal `_DownloadManagerControlCmd` enum to better describe commands sent to/from the download manager thread (instead of numbers)
Refactored download recovery startup to avoid waiting for manager thread to send already known information
Refactored `RootRecovery` singleton instance mangement to be class-internal
…y update when buffer cleared)

Improved performance of bulk download thread buffer trackers
Added `StoreReadWriteBehavior` for improved customizability
Deprecated `obscuredQueryParams`
Added `urlTransformer` & `urlTransformerOmitKeyValues` [as replacement for above
Refactored `_FMTCImageProvider` internals
Added `DebuggingTileBuilder` to example app
Fixed bugs
Improved performance of circle tile generation algorithm
*Reduced* performance of circle tile count algorithm
Improved performance of tile generation algorithms with specified `end`s
Updated NDK version for example app
Upgraded actions for workflow
Enabled caching of actions for workflow
…cted in example app)

Fixed bug in internal `_sharedWriteSingleTile` where `writeAllNotIn` was not `null`
Fixed bug when calculating `tileExistsInUnspecifiedStoresOnly` in `_internalGetBytes` (now `tileRetrievableFromOtherStoresAsFallback`)
Renamed `TileLoadingInterceptorResult.tileExistsInUnspecifiedStoresOnly` to `.tileRetrievedFromOtherStoresAsFallback` & added `resultPath` requirement for truthy
Renamed `TileLoadingInterceptorResultPath.noFetch` & `.fetched` to `.cacheAsFallback` & `.fetchedFromNetwork` respectively
Added `FMTCTileProvider.otherStoresStrategy` & `.useOtherStoresAsFallbackOnly` management to example app
Added storage of some settings to shared preferences in example app
Minor internal improvements
Minor documentation improvements
Improved CONTRIBUTING
Minor improvements to `FMTCImageProvider`
Deprecated `BaseRegion` & `DownloadableRegion` `.when` & `.maybeWhen`
Improved documentation
Discovered unintended behaviour
…without `isRepeat` set

Undeprecated `DownloadableRegion.(maybe)When`
Added `StackTrace` output to `TileLoadingInterceptorResult.error` (converted existing type to Record)
Improved documentation
Updated CHANGELOG
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant