* fix: always set extension from provided file
The livephoto case can also happen with other files; for example, we
receive a DNG file as JPEG but then still call it .dng
Fixes#29805, partially addresses #28602
* chore: test cases for file extension naming
* fix: still part of live photo hidden on bg upload
* add foreground tests
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* fix(mobile): mark Live Photo motion part hidden on upload
* review suggestion
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* feat: add playbackStyle to local asset entity and related database schema
* implement conversion function for playbackStyle in local sync service
* implement conversion function for playbackStyle in local sync service
* refactor: remove deducedPlaybackStyle from TrashedLocalAssetEntityData
* add playbackStyle column to trashed local asset entity
* make playbackStyle non-nullable across the mobile codebase
* Streamline playbackStyle backfill:
- only backfill local assets playbackStyle in flutter/dart code
- only update trashed local assets in db migration
* bump target database version to 23 and update migration logic for playbackStyle
* set playback_style to 0 in merged_asset.drift as its a getter in base asset
* run make pigeon
* Populate playbackStyle for trashed assets during native migration