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 85 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
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
Split output of `StoreDownload.startForeground` into two seperate streams
Reworked `DownloadProgress`
Added `retryFailedRequestTiles` option to `startForeground` to support retry of failed tiles
Renamed `check` to `countTiles` (with deprecation)
Minor efficiency improvements in bulk downloading
Improved example app
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment