* fix(mobile): render random widget images at the widget's display resolution
* fix(mobile): cap widget image decode size for panoramas
(cherry picked from commit 3d07c061a38275f8b0d406e1ecc67446497be0e2)
* fix(mobile): show play instead of replay button for unplayed videos
* fix(video): clarify comment for playback status handling
(cherry picked from commit 0d1e1ffecd5df8793ee020f90ddb10d6252dd5d8)
* fix(mobile): limit max zoom by visible image pixels
* fix(mobile): limit max zoom by image pixel size
(cherry picked from commit b246fa7c8a458da2d89c0efa2b2a8db85182ea9c)
* feat(mobile): mobile tags
* fix(mobile); refactoring, replaced hook
* tag provider through asset service
* make search use a tag set
* use tag action directly
* use notification listener
* untag action
* handle untag response
* fix tests and add untag action test
* fix material error from tag picker dialog
* fix(mobile): clip tag picker tiles and update tag overflow
---------
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
Co-authored-by: Santo Shakil <shakil.mezbah@gmail.com>
(cherry picked from commit 83c7ec50056bbefa10869c78457f8882c72275e2)
fix(mobile): show the memories date in every app language (#32259)
(cherry picked from commit 116a9436ad1f8164d9dee904551e5067d724be99)
Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
fix: show date on memories page (#32206)
* fix: show date on memories page
* Clean up API
* Drop imports
---------
(cherry picked from commit 108a3cadbfe3b3e4305c04d8e4217aafb445f626)
Co-authored-by: Alex <alex.tran1502@gmail.com>
Co-authored-by: Adam Gastineau <adam@agg.im>
feat: birthday memory on mobile (#32113)
* feat: birthday memory on mobile
* chore: remove yellow bg colors
* pr feedback
(cherry picked from commit 82cfc4b28b55c660d9c2da00c57437a20585a47b)
Co-authored-by: Alex <alex.tran1502@gmail.com>
fix(mobile): image jumps when full-res image loads during pinch or zoom animation (#31948)
(cherry picked from commit 007c18aec6cc9552fb7d8b7c791c41d7424876b0)
Co-authored-by: Luis Nachtigall <31982496+LeLunZ@users.noreply.github.com>
fix(mobile): don't re-upload a photo the server already has (#31941)
(cherry picked from commit 02063972e82b1bfd17b6fc2e3b3ff39936229ea5)
Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
fix(mobile): don't start the foreground backup in iOS background launches (#31943)
* fix(mobile): don't start the foreground backup in iOS background launches
* add a TODO to remove the background launch check
(cherry picked from commit 3e4492924541a0e73ea3c326fcfcfcd053871610)
Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
fix(mobile): make the iOS background batch wait for its remote sync (#31942)
* fix(mobile): make the iOS background batch wait for its remote sync
* test onIosUpload itself, the worker reads its sync services from the providers
(cherry picked from commit ad93370f0287faafa7db615c726f32bd9e6d30e7)
Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
fix(mobile): face thumbnail stuck blank after renaming a person (#30769)
* fix(mobile): face thumbnail stuck blank after renaming a person
* flatten the codec error guard and rework the tests around framework driven reuse
* trim the image provider tests and note the per load state rule
* keep two small image provider tests: the renamed face and a late failure of a cancelled load
* clearer image provider tests: return the created completer, comment the steps, drop the unused listener, rename to thumbWithChecksum
* use the provider constructor with a lint ignore in the cache key test
(cherry picked from commit a29153e90e127ee26ad7555f6fb7c562b97b4abe)
Co-authored-by: Santo Shakil <santoshakil@users.noreply.github.com>
feat: auto-sync name changes to connected users (#31923)
* feat: auto-sync name changes to connected users
* fix: rename to faceId
* fix: pr feedback
* fix: mobile build
(cherry picked from commit aec7c0d97bd6679b2b300e72e870b83c5ef13c85)
Co-authored-by: Jason Rasmussen <jason@rasm.me>
* ask before deleting local only photos on android 10 and below
* move the delete consent prompt into _cleanupLocalAssets
* ask on android 11 as well before deleting local photos
* ask before deleting only where android shows no prompt
* split the local delete prompt into its own helper
* pick the local delete dialog in one flat branch and rename notBackedUp to isLocalOnly
* run the first resume after a background launch with a full local sync
* keep the untouched lines of the swift file as they were
* check the background launch at the first resume even after a pause