* feat(mobile): delete assets from device only
* mobile: add backed up only toggle for delete device only
* remove toggle inside alert and show different content
* mobile: change content color for local only
* mobile: delete local only button to dialog
* style: display bottom action in two lines
* feat: separate delete buttons
* fix: incorrect error message for ownedRemoteSelection
* feat(mobile): long-press delete to permanently delete asset
* chore: add todo to handle long press to delete in gallery_viewer
* chore: rebase on deletion branch
* feat(mobile): long-press delete to permanently delete asset
* fix(mobile): update minChildSize of control bottom app bar
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix(mobile): handle asset removal state from trash for merged assets
* fix(mobile): use appropriate text for trash / delete
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* feat(mobile): delete assets from device only
* mobile: add backed up only toggle for delete device only
* remove toggle inside alert and show different content
* mobile: change content color for local only
* mobile: delete local only button to dialog
* style: display bottom action in two lines
* feat: separate delete buttons
* fix: incorrect error message for ownedRemoteSelection
* fix: handle remoteOnly from delete everywhere
* request confirmation for local only only when non-backed assets are in selection
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix(mobile): Load assets on "Live-Images" page
Instead of requesting the server for the relevant entries, we can use
the local DB.
This change fixes loading errors when going to the "Live-Images" page.
It is similar to the work done with #5971.
* fix(mobile): Fix Recently added page
* fix: handle livePhotos using originFileWithSubType
* remove livePhoto asset cache
* fetch live photo video name from entity
* fix: video file not detected
* chore: pull main
* fix: set correct header
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* reverts: 5566
* fix: stitch livePhoto only in iOS
* fix: PMProgressHandler only on iOS
* ios: fallback to saving image if livephoto fails
---------
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* refactor: migrate album sort option to provider
* refactor: use sort order in add to album sheet list
* test(mobile): album_sort_options_provider unit tests
* refactor: sort shared albums with user selected sort
* refactor: use listview to render shared albums
* refactor: rename to AlbumSortByOptions
* refactor: remove filtering inside sort functions
* font size
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* feat(mobile): unify asset grid multiselect actions
* add favorite & archive page
* show edit date&place on main photos screen
* Reposition exit button
* Sort favorite with the same order as other view
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix(mobile): album thumbnail list tile overflow on large album title
* fix: notify clients about live photo linked event
* refactor: notify clients during meta extraction
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* chore: text correction
* fix: update activities stat only when the widget is mounted
* feat(mobile): edit date time
* feat(mobile): edit location
* chore(build): update gradle wrapper - 7.6.3
* style: dropdownmenu styling
* style: wrap locationpicker in singlechildscrollview
* test: add unit test for getTZAdjustedTimeAndOffset
* pr changes
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* refactor: scaffoldwhen to log errors during scaffold body render
* refactor: onError and onLoading scaffoldbody
* refactor: more scaffold body to custom extension
* refactor: add skiploadingonrefresh
* Snackbar color
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
This fixes issue #4397 and automatically adds the https protocol to the server endpoint url if it is missing
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* refactor: mobile - send livephoto as a separate request
* fix: create new request for live asset
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* fix(mobile): use proper context for popping out from share
* mobile: use proper context for popping
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* fix(mobile): Mark more strings for translation
Moving more strings to the `i18n` JSON file, and also including their
es-US translations.
* Add more translatable strings
* fix(mobile): Cannot return to logged in screen due to name changes
* fix(mobile): Cannot return to logged in screen due to name changes
* remove deadcode
* test deprecate
* Add deprecated decorator
* revert api change
* refactor: move all extensions to separate package
* refactor(mobile): add BuildContext extension
* refactor(mobile): use theme getters from context
* refactor(mobile): use media query size from context
* refactor(mobile): use auto router methods from context
* refactor(mobile): use navigator methods from context
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* maplibre on web, custom styles from server
Actually use new vector tile server, custom style.json
support multiple style files, light/dark mode
cleanup, use new map everywhere
send file directly instead of loading first
better light/dark mode switching
remove leaflet
fix mapstyles dto, first draft of map settings
delete and add styles
fix delete default styles
fix tests
only allow one light and one dark style url
revert config core changes
fix server config store
fix tests
move axios fetches to repo
fix package-lock
fix tests
* open api
* add assets to docker container
* web: use mapSettings color for style
* style: add unique ids to map styles
* mobile: use style json for vector / raster
* do not use svelte-material-icons
* add click events to markers, simplify asset detail map
* improve map performance by using asset thumbnails for markers instead of original file
* Remove custom attribution
(by request)
* mobile: update map attribution
* style: map dark mode
* style: map light mode
* zoom level for state
* styling
* overflow gradient
* Limit maxZoom to 14
* mobile: listen for mapStyle changes in MapThumbnail
* mobile: update concurrency
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: bo0tzz <git@bo0tzz.me>
Co-authored-by: Alex <alex.tran1502@gmail.com>
This change makes albums with same start and end date, to just display a
single date.
Currently, date range is displayed as `Nov 9 - Nov 9 2023`. With this
change, just `Nov 9 2023` is displayed. No changes are made for albums
where start and end dates do not match.
* feat(mobile): shared album activity disable handling
* not show comment/like option on non-shared album, alternative text when activity is disabled
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix(server): global activity like duplicate search
* mobile: user_circle_avatar - fallback to text icon if no profile pic available
* mobile: use favourite icon in search "your activity"
* feat(mobile): shared album activities
* mobile: align hearts with user profile icon
* styling
* replace bottom sheet with dismissible
* add auto focus to the input
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
* mobile: tool-tip for server url in app bar dialog
* fix: Add Inkwell around the entire profile image
* mobile: open documentation and github in browser
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* refactor(mobile): add app bar to library and sharing
* mobile: add app bar dialog
* fix(mobile): refetch profile image only when path is changed
* mobile: add server url to dialog
* mobile: move trash to library app bar
* replace discord link with github
* user confirmation before sign out
* edit some styles
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix(mobile): render error on switching asset while video playing
* fix(mobile): generate proper hero tags for assets from DTOs
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* refactor: server info model to use data classes instead of dtos
* mobile: add return types and refactor private variables in map / stack
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
* add shared links page
* feat(mobile): shared link items
* feat(mobile): create / edit shared links page
* server: add changeExpiryTime to SharedLinkEditDto
* fix(mobile): edit expiry to never
* mobile: add icon when shares list is empty
* mobile: create new share from album / timeline
* mobile: add translation texts
* mobile: minor ui fixes
* fix: handle serverURL with /api path
* mobile: show share link on successful creation
* mobile: shared links list - 2 column layout
* mobile: use sharedlink pod class instead of dto
* mobile: show error on link creation
* mobile: show share icon only when remote assets are in selection
* mobile: use server endpoint instead of server url
* styling
* styling
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* Add translations for new album sort options
* Support additional album sort options like on web
* Update generated code
* Fix lint
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
* fix: don't reveal user count publicly
* fix: mobile and user controller
* fix: update other frontend endpoints
* fix: revert openapi change
* chore: open api
* fix: initialize
* openapi
---------
Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
* fix: timezone bucket timezones
* chore: open api
* fix: interpret local time in utc
* fix: tests
* fix: refactor memory lane
* fix(web): use local date in memory viewer
* chore: set localDateTime non-null
* fix: filter out memories from the current year
* wip: move localDateTime to asset
* fix: correct sorting from db
* fix: migration
* fix: web typo
* fix: formatting
* fix: e2e
* chore: localDateTime is non-null
* chore: more non-nulliness
* fix: asset stub
* fix: tests
* fix: use extract and index for day of year
* fix: don't show memories before today
* fix: cleanup
* fix: tests
* fix: only use localtime for tz
* fix: display memories in client timezone
* fix: tests
* fix: svelte tests
* fix: bugs
* chore: open api
---------
Co-authored-by: Jonathan Jogenfors <jonathan@jogenfors.se>
* Add include archive setting to map on web
* open api
* better naming for web isArchived variable
* add withArchived setting to mobile
* (e2e): tests for mapMarker endpoint and isArchived
* isArchived to mobile
* chore: cleanup test
* chore: optimize e2e
---------
Co-authored-by: shalong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
* [BUGFIX] Fix slow album thumbnail generation
When generating the thumbnail of an album, all of the pictures of the
album are retrieved but only the first picture of the album is used.
Retrieving all of the pictures of the album at once can cause huge performance
issues on large albums.
Since only the first picture is used to generate the thumbnail, this commit
uses the getAssetListPaged method instead of getAssetListRange, effectively
retrieving only the first picture of the album.
* [DEVMINOR] Remove unecessary check
As we already check for the number of assets in the album, when
fetching assets using `album.getAssetListPaged` the returned result
won't be empty.
---------
Co-authored-by: Azsde <aelkaim@pixium-vision.com>
* feat(mobile): upload image assets before videos (#3872)
* feat(mobile): upload image assets before videos
* mobile: sort by creation date before uploading assets
* feat(mobile): upload newest assets first for foreground upload
* feat(mobile): upload images before videos only for background backup