tldraw/apps
alex 965bc10997
[1/4] Blob storage in TLStore (#4068)
Reworks the store to include information about how blob assets
(images/videos) are stored/retrieved. This replaces the old
internal-only `assetOptions` prop, and supplements the existing
`registerExternalAssetHandler` API.

Previously, `registerExternalAssetHandler` had two responsibilities:
1. Extracting asset metadata
2. Uploading the asset and returning its URL

Existing `registerExternalAssetHandler` implementation will still work,
but now uploading is the responsibility of a new `editor.uploadAsset`
method which calls the new store-based upload method. Our default asset
handlers extract metadata, then call that new API. I think this is a
pretty big improvement over what we had before: overriding uploads was a
pretty common ask, but doing so meant having to copy paste our metadata
extraction which felt pretty fragile. Just in this codebase, we had a
bunch of very slightly different metadata extraction code-paths that had
been copy-pasted around then diverged over time. Now, you can change how
uploads work without having to mess with metadata extraction and
vice-versa.

As part of this we also:
1. merge the old separate asset indexeddb store with the main one.
because this warrants some pretty big migration stuff, i refactored our
indexed-db helpers to work around an instance instead of being free
functions
2. move our existing asset stuff over to the new approach
3. add a new hook in `sync-react` to create a demo store with the new
assets

### Change type

- [x] `api`

### Release notes

Introduce a new `assets` option for the store, describing how to save
and retrieve asset blobs like images & videos from e.g. a user-content
CDN. These are accessible through `editor.uploadAsset` and
`editor.resolveAssetUrl`. This supplements the existing
`registerExternalAssetHandler` API: `registerExternalAssetHandler` is
for customising metadata extraction, and should call
`editor.uploadAsset` to save assets. Existing
`registerExternalAssetHandler` calls will still work, but if you're only
using them to configure uploads and don't want to customise metadata
extraction, consider switching to the new `assets` store prop.
2024-07-10 13:00:18 +00:00
..
apps-script google meet: add hardware whiteboard integration (#3765) 2024-05-20 14:52:05 +00:00
bemo-worker put sync stuff in bemo worker (#4060) 2024-07-03 14:10:54 +00:00
docs Fix examples URL in docs app (#4129) 2024-07-10 09:07:16 +00:00
dotcom [1/4] Blob storage in TLStore (#4068) 2024-07-10 13:00:18 +00:00
dotcom-asset-upload introduce images.tldraw.xyz image optimisation worker (#4069) 2024-07-08 16:25:53 +00:00
dotcom-worker Allow null origins on dotcom worker requests (#4105) 2024-07-09 10:08:28 +00:00
examples [1/4] Blob storage in TLStore (#4068) 2024-07-10 13:00:18 +00:00
health-worker main: fix health worker wrnagler names 2024-07-01 15:44:30 +01:00
huppy followups to z-index and PR template (#4054) 2024-07-09 09:22:43 +00:00
images.tldraw.xyz introduce images.tldraw.xyz image optimisation worker (#4069) 2024-07-08 16:25:53 +00:00
vscode Unfurl bookmarks in worker (#4039) 2024-07-01 14:40:03 +00:00