* Improve scroll performance by introducing repaint boundaries and moving more calculations to providers.
* Add error handing for malformed dates.
* Remove unused method
* Use compute in different places to improve app performance during heavy tasks
* Fix test
* Refactor `List<RenderAssetGridElement>` to separate `RenderList` class and make `fromAssetGroups` a static method of this class.
* Fix loading indicator bug
* Use provider directly
* `RenderList` refactoring
* `AssetNotifier` refactoring
* Move `combine` to static private method
* Extract compute methods in cache services to static private methods.
* Use `tryParse` instead of `parse` with try/catch for dates.
* Fix bug in caching mechanism.
* Fixed state not being used to trigger conditional rendering
* styling
* Corrected state
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Create shared link modal for individual asset
* Added API to create asset shared link
* Added viewer for individual shared link
* Added multiselection app bar
* Refactor gallery viewer to its own component
* Refactor
* Refactor
* Add and remove asset from shared link
* Fixed test
* Fixed notification card doesn't wrap
* Add check asset access when created asset shared link
* pr feedback
* feat(server): support providers without support for custom schemas
* chore: unit tests
* chore: test mobile override
* chore: add details to the docs
* refactor(server): device info service
* use upsertDeviceInfo in mobile app
* fix: return types and dedupe code
Co-authored-by: Fynn Petersen-Frey <zoodyy@users.noreply.github.com>
* Add generated openapi docs to website
* Uppercase API link in navbar
* fix(docs): open api empty summary (#1069)
* feat(docs): Use /docs/api path for swagger docs
* Sync api version to be the same as the server
* Update version
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat(mobile): use cached asset info if unchanged instead of downloading all assets
This adds an HTTP ETag to the getAllAssets endpoint and client-side support in the app.
If locally cache content is identical to the content on the server, the potentially large list of all assets does not need to be downloaded.
* use ts import instead of require
* Added return type for oauth/callback
* Remove console.log
* Redirect app
* Wording
* Added loading state change
* Added OAuth login on mobile
* Return correct status for correct redirection
* Auto discovery OAuth Login
* feat: add admin config module for user configured config, uses it for ffmpeg
* feat: add api endpoint to retrieve admin config settings and values
* feat: add settings panel to admin page on web (wip)
* feat: add api endpoint to update the admin config
* chore: re-generate openapi spec after rebase
* refactor: move from admin config to system config naming
* chore: move away from UseGuards to new @Authenticated decorator
* style: dark mode styling for lists and fix conflicting colors
* wip: 2 column design, no edit button
* refactor: system config
* chore: generate open api
* chore: rm broken test
* chore: cleanup types
* refactor: config module names
Co-authored-by: Zack Pollard <zackpollard@ymail.com>
Co-authored-by: Zack Pollard <zack.pollard@moonpig.com>
* introduce Asset as composition of AssetResponseDTO and AssetEntity
* filter out duplicate assets (that are both local and remote, take only remote for now)
* only allow remote images to be added to albums
* introduce ImmichImage to render Asset using local or remote data
* optimized deletion of local assets
* local video file playback
* allow multiple methods to wait on background service finished
* skip local assets when adding to album from home screen
* fix and optimize delete
* show gray box placeholder for local assets
* add comments
* fix bug: duplicate assets in state after onNewAssetUploaded
* delete and restore user from admin UI
* addressed review comments and fix e2e test
* added cron job to delete user, and some formatting changes
* addressed review comments
* adding missing queue registration
* First implementation that uses new API
* Various UI improvements
* Create new album from home screen
* Fix padding when in multiselect mode
* Alex Suggestions
* Change to album after creation
* Add new query parameter to API endpoint that allows adding assets to albums which potentially contain assets that are already part of this album.
* Change API endpoint
* Generate new APIs
* Fixed test
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>