- Fix missing timezones
- Remove the UTC prefix from timezone display text to align with web app
- Remove unnecessary layout builder
- Created a custom `DropdownSearchMenu` widget
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Initial look at fixing issue where images are uploaded to the wrong album if a shared album conflicts with a local users album.
* Use owner instead of shared flag when fetching albums.
* Fix issue with refreshRemoteAlbums getting shared items twice and removed incorrect isShared comment.
Using `getAll(shared: true)` gets all shared albums the user can access (regardless of owner, despite the previous comment).
Using `getAll(shared: null)` gets all albums (incuding shared = true and shared = false). I presume the intent here was to get albums that were shared (and not mine), and not shared (ie: mine), but the logic is way off. It also just then combines them - so makes more sense to just get them in a single call.
* Fix formatting.
* Fixed tests.
* Revert "Fixed tests."
This reverts commit c38f5af5acfc38444b00ed716755c241d297216a.
* Revert "Fix issue with refreshRemoteAlbums getting shared items twice and removed incorrect isShared comment."
This reverts commit 979ce90abf22c6cd80ff06f61a08d0c03092991b.
* Added comments to explain why filters behave the way they do for getAll() albums.
---------
Co-authored-by: Tom graham <tomg@questps.com.au>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* setup ios
* chore: succesfully sent media to the app
* share from Android
* wip: navigate to share screen
* wip: UI for displaying upload candidate
* wip: logic
* wip: upload logic
* wip: up up up we got it up
* wip
* wip
* wip
* upload state
* feat: i18n
* fix: release build ios'
* feat: clear file cache
* pr feedback
* using const for checking download status
---------
Co-authored-by: Alex <alex@pop-os.localdomain>
* auth
* URL switch
* mobile app
* caps
* headers, app changes
* oxford comma
* Match case to other use in Immich
* add url
* asset download also causes issues
* fix(mobile): fix text search
* chore(mobile): add tests for SearchPage
* fix(mobile): fix render overflow for small screens
Needed for SearchPage test to not throw overflow error
* chore(mobile): update import_rule_openapi
* styling
* preserve styling and skip a test
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fix(deps): update dependency @nestjs/swagger to v8
* chore: generate open api
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Dietzler <mail@ddietzler.dev>
* feat(mobile): album view sort order
* feat: add error message
* refactor(mobile): album page (#14659)
* refactor album page
* update lint rule
* const record
* fix: updating sort order when pull to refresh
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Move sort toggle button to bottom sheet menu
* chore: revert multiselectgrid loading status
* chore: revert multiselectgrid loading status
---------
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
* Merge Faces sorted by Similarity
* Adds face sorting to the side panel face merger
* run make open-api
* Make it one query
* Only have the single order by when sorting by closest face
* add native player library
* splitup the player
* stateful widget
* refactor: native_video_player
* fix: handle buffering
* turn on volume when video plays
* fix: aspect ratio
* fix: handle remote asset orientation
* refinements and fixes
fix orientation for remote assets
wip separate widget
separate video loader widget
fixed memory leak
optimized seeking, cleanup
debug context pop
use global key
back to one widget
fixed rebuild
wait for swipe animation to finish
smooth hero animation for remote videos
faster scroll animation
* clean up logging
* refactor aspect ratio calculation
* removed unnecessary import
* transitive dependencies
* fixed referencing uninitialized orientation
* use correct ref to build android
* higher res placeholder for local videos
* slightly lower delay
* await things
* fix controls when swiping between image and video
* linting
* extra smooth seeking, add comments
* chore: generate router page
* use current asset provider and loadAsset
* fix stack handling
* improved motion photo handling
* use visibility for motion videos
* error handling for async calls
* fix duplicate key error
* maybe fix duplicate key error
* increase delay for hero animation
* faster initialization for remote videos
* ensure dimensions for memory cards
* make aspect ratio logic reusable, optimizations
* refactor: move exif search from aspect ratio to orientation
* local orientation on ios is unreliable; prefer remote
* fix no audio in silent mode on ios
* increase bottom bar opacity to account for hdr
* remove unused import
* fix live photo play button not updating
* fix map marker -> galleryviewer
* remove video_player
* fix hdr playback on android
* fix looping
* remove unused dependencies
* update to latest player commit
* fix player controls hiding when video is not playing
* fix restart video
* stop showing motion video after ending when looping is disabled
* delay video initialization to avoid placeholder flicker
* faster animation
* shorter delay
* small delay for image -> video on android
* fix: lint
* hide stacked children when controls are hidden, avoid bottom bar dropping
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: mertalev <101130780+mertalev@users.noreply.github.com>
* feat(server): Add publicUsers toggle for user search
* tests
* docs: add check:typescript for web PR checklist
* return auth.user when publicUsers is false - app testing
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fix(mobile): make widgets rebuild on locale changes
This will make the make the pages to instantly refresh the correct
translated string, without the need to pop and push the settings page.
* fix(mobile): set the default intl locale
This is needed because across the app, you don't pass the context.locale
to DateFormat, so by default it uses the system's locale. This will fix
the issue without the need to refactor a lot of code.
* feat(mobile): create localeProvider
This provider can be used to refresh providers that provide UI elements
and get cached.
* fix(mobile): refresh asset providers on locale change
This is necessary to update the locale on the already evaluated
DateFormat.
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* feat(mobile): create localeProvider
This provider can be used to refresh providers that provide UI elements
and get cached.
* feat(mobile): use default font for locales not supported by Overpass
* chore(mobile): fix test
* refactor(mobile): use Locale instead of String
* chore(mobile): make all search filters dismissible
* chore(mobile): make ImmichAppBarDialog dismissible
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* use sets in album sync, concurrent futures
* batch excluded asset IDs
* update test
* take advantage of sets in Recents check
* move log statement
* smaller diff
* expose detailed user storage stats + display them in the storage per user table
* chore: openapi & sql
* fix: fix test stubs
* fix: formatting errors, e2e test and server test
* fix: upper lower case typo in spec file
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fixed the local ids selecting issue
* code: updated impl inside deleteLocalOnlyAssets
* fix: used png instead of jpg to maintain picture quality
* Revert "fix: used png instead of jpg to maintain picture quality"
This reverts commit 04f2ed54e40b454a057f97872836d71af50b06de.
* fix: update logic from code-review perspective
* refractor (mobile) : Dart fix applied
* fix (mobile) : Updated multi grid as per requirement
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* refactor(mobile): DB repository for asset, backup, sync service
* review feedback
* fix bug found by Alex
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* add packages
* create download task
* show progress
* save video and image
* show progress info
* live photo wip
* download and link live photos
* Update list of assets
* wip
* correct progress
* add state to download
* revert unncessary change
* repository pattern
* translation
* remove unused code
* update method call from repository
* remove unused variable
* handle multiple livephotos download
* remove logging statement
* lint
* not removing all records
* feat: metadata in UserPreference
* feat: web metadata settings
* feat: web metadata settings
* fix: typo
* patch openapi
* fix: missing translation key
* new organization of preference strucutre
* feature settings on web
* localization
* added and used feature settings
* add default value to response dto
* patch openapi
* format en.json file
* implement helper method
* use tags preference logic
* Fix logic bug and add tests
* fix preference can be null in detail panel
* feat: tags
* fix: folder tree icons
* navigate to tag from detail panel
* delete tag
* Tag position and add tag button
* Tag asset in detail panel
* refactor form
* feat: navigate to tag page from clicking on a tag
* feat: delete tags from the tag page
* refactor: moving tag section in detail panel and add + tag button
* feat: tag asset action in detail panel
* refactor add tag form
* fdisable add tag button when there is no selection
* feat: tag bulk endpoint
* feat: tag colors
* chore: clean up
* chore: unit tests
* feat: write tags to sidecar
* Remove tag and auto focus on tag creation form opened
* chore: regenerate migration
* chore: linting
* add color picker to tag edit form
* fix: force render tags timeline on navigating back from asset viewer
* feat: read tags from keywords
* chore: clean up
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Add proper colors to create album button
Allow creation of empty albums with names, or non-empty albums without names
* Add proper colors to create album button
Allow creation of empty albums with names, or non-empty albums without names
* Small changes
* Revert change
* Simplify logic
* lint
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* add root resource path '/' to mobile oauth scheme
* chore: add oauth-callback path
* add root resource path '/' to mobile oauth scheme
* chore: add oauth-callback path
* fix: make sure there are three forward slash in callback URL
---------
Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* curating assets with albums to upload
* sorting for background backup
* background upload works
* transform fields string array to javascript array
* send json array
* generate sql
* refactor upload callback
* remove albums info from upload payload
* mechanism to create album on album selection
* album creation
* Sync to upload album
* Remove unused service
* unify name changes
* Add mechanism to sync uploaded assets to albums
* Put add to album operation after updating the UI state
* clean up
* background album sync
* add to album in background context
* remove add to album in callback
* refactor
* refactor
* refactor
* fix: make sure all selected albums are selected for building upload candidate
* clean up
* add manual sync button
* lint
* revert server changes
* pr feedback
* revert time filtering
* const
* sync album on manual upload
* linting
* pr feedback and proper time filtering
* wording
* fix(web): align search filter behavior to show all camera models
* fix(mobile): align search filter behavior to clear camera model when make is set
* (mobile) correctly clear the model controller
* fix(mobile) re-add text controller to dropdown
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Fix null name
* Fix null name and Fix button
* Remove extension correctly
* Refactoring the code and formatting
* formatting
* Fix for the extension name
* feat: folder view poc
* fix(folder-view): ui modifications
* fix(folder-view): improves utility return types
* fix(folder-view): update getAssetsByOriginalPath
Endpoint now only returns direct children of the path instead of all images in all subfolders. Functions renamed and scoped to "folder", endpoints renamed
* fix(folder-view): improve typing
* fix(folder-view): replaces css with tailwind
* fix(folder-view): includes folders in main panel
* feat(folder-view): folder cache implementation
* fix(folder-view): can now search for absolute paths
* fix(folder-view): sets default sort to alphabetical by filename
* refactor/styling the browser view
* double click to navigate
* folder tree
* use correct side bar icon
* styling when selected
* correct open icon
* folder layout
* return assetReponseDto
* it's alive
* update new api
* more styling for folder tree
* use query params and path viewer
* use arrow up left for parent folder backward navigation
* use arrow up left for parent folder backward navigation
* encode URL
* handle long folder name
* refactor to the view controller
* remove unused code
* clear cache when logout
* cleaning up
* cleaning up web
* clean as new
* clean as new
* pr feedback + show asset name
* add tests
* add tests
* remove generated file
* lint
* revert docker-compose.dev file
* Update server/src/services/view.service.ts
Co-authored-by: Jason Rasmussen <jason@rasm.me>
* Update server/src/services/view.service.ts
Co-authored-by: Jason Rasmussen <jason@rasm.me>
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
Co-authored-by: Jason Rasmussen <jason@rasm.me>
* refactor: stacks
* mobile: get it built
* chore: feedback
* fix: sync and duplicates
* mobile: remove old stack reference
* chore: add primary asset id
* revert change to asset entity
* mobile: refactor mobile api
* mobile: sync stack info after creating stack
* mobile: update timeline after deleting stack
* server: update asset updatedAt when stack is deleted
* mobile: simplify action
* mobile: rename to match dto property
* fix: web test
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* Add Exif-Rating
* Integrate star rating as own component
* Add e2e tests for rating and validation
* Rename component and async handleChangeRating
* Display rating can be enabled in app settings
* Correct i18n reference
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
* Star rating: change from slider to buttons
* Star rating for clarity
* Design updates.
* Renaming and code optimization
* chore: clean up
* chore: e2e formatting
* light mode border and default value
---------
Co-authored-by: Christoph Suter <christoph@suter-burri.ch>
Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
Co-authored-by: Mert <101130780+mertalev@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat: keep screen active on backup
* show dialog
* improve dialog and use shared timer
* get rid of confirmation dialog
* fix timer logic
* fix: set timeout to 60 seconds
* fix: revert unwanted change
* fix: properly hide status bar
* remove unwanted change
* fix: properly restore status bar when waking up
* clean up
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* date time component
* rename to info_sheet
* simplify map info
* Edit datetime sheet
* fix janking when scroll on info sheet
* Location refactor
* refactor name
* Update date time after editing
* localize rebuild to smaller component
* restore advanced bottom sheet
* reassign EXIF back to local database
* remove print statements