receive_sharing_intent requires iOS 14.0+. Flutter 3.38.9 upgrade
raised minimum deployment target, so all targets must be consistent
with Podfile's platform :ios, '14.0'.
Wrap CreateNewLabelModal with PopScope(canPop: false) while the
creation request is in flight so that tapping the barrier
(barrierDismissible: true) cannot dispose the modal and cancel
the stream subscription before the result is delivered.
- Make LabelModalMixin interactor getters non-nullable; remove force-unwraps at call sites
- Show positiveLabel and add semanticLabel in progressing button for accessibility
- Use timestamp-based label name in E2E scenario to prevent flakiness on reused accounts
- Guard labelAs action with isLabelAvailable check in SingleEmailController
- Don't pop back on label creation failure so users can retry without losing context
- Block modal dismissal while label creation request is in flight
- Null-guard email.id before toggling label in ThreadView::onCreateANewLabelAction
- Log stackTrace and rethrow in DialogRouter to distinguish errors from user cancel
* Add folder info when open mail list from Label
(cherry picked from commit de0bb4ee02030ca90126766a8713a6826d791acd)
* Add unit test for `hasMailboxLabel` function in BaseEmailItemTile mixin
(cherry picked from commit 18f8d1847acccd6f95006b93903f0caa6c0408df)
* TF-4292 Add E2E test for test case `Add folder info when open mail list from Label` on mobile
(cherry picked from commit 1c209e333510db161522e4449ad7fb2e5d28399f)
Adds the ability to close the email detail/thread detail view by pressing
the ESC key, following the same pattern used for closing the composer.
Changes:
- Add closeThreadDetail to MailViewActionShortcutType enum
- Map ESC key to closeThreadDetail in AppShortcutManager
- Handle closeThreadDetail action in HandleMailShortcutActionsExtension
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* Add `Events` filter checkbox in Advanced Search form
* Perform search email by `Events` filter in Advanced Search form
* Add `Event` quick search button in Search view
* Use `keywords` replace to `headers` for search event filter