Commit Graph
94 Commits
Author SHA1 Message Date
Jacek Krasiukianis e684a4b949 Collect Bundle extensions in one place 2025-07-30 13:35:31 +02:00
Timotei-Alexandru Palade 59998aea3f chore: ET-3715 Add Rust logs to Sentry crashes 2025-07-30 08:29:34 +00:00
Jacek Krasiukianis be4620c6fe ET-611 Upsell screen 2025-07-25 13:56:49 +00:00
Ludovico Rossi 1debd93e18 feat(ET-2969): Add change password setting 2025-07-24 16:25:15 +01:00
Jacek Krasiukianis 29ca6fde80 Print logs from webView console 2025-07-21 14:41:06 +02:00
Maciej Gomółka b5f86ccaf2 Refactor after the CR 2025-07-18 12:38:33 +02:00
Mateusz Szklarek c8c0398844 Fix last failing snapshot tests - use traits with hardcoded calendar/date 2025-07-17 11:56:24 +01:00
Mateusz Szklarek ceb3879057 Fix failing tests in ContactFormatterTests - use UTC calendar 2025-07-17 11:57:02 +02:00
Mateusz Szklarek 38c46c165d Refactor: Replace nonisolated(unsafe) Calendar with @TaskLocal
The `DateEnvironment.calendar` property was previously marked with `nonisolated(unsafe)`,
which disables crucial compiler safety checks for a mutable global variable.
This pattern is unsafe and can lead to data races and unpredictable behavior in
concurrent environments.

This commit replaces `nonisolated(unsafe)` with the modern `@TaskLocal`
property wrapper available in Swift 6.1. This provides a much safer API
for managing context-specific data.

The key benefits of this change are:
- **Thread Safety:** `@TaskLocal` is inherently safe. The property is read-only by default, and modifications are confined to the specific task's scope.
- **Scoped Modifications:** Changes to the calendar are made via the `withValue` function, which guarantees that the modification only applies within a local scope and does not leak, preventing global state pollution.
- **Improved Clarity:** The API now clearly expresses its intent. Consumers must explicitly create a local scope to use a different calendar, making the code more predictable and easier to reason about.
2025-07-16 16:35:40 +02:00
Jacek Krasiukianis d21f99a61d Xcode 26 compatibility 2025-07-07 17:32:39 +02:00
Jacek Krasiukianis 59d08e38a1 ET-638 Reusable APIConfig and ApiEnvId initializers 2025-07-07 08:18:23 +00:00
Jacek Krasiukianis 2622a6a43f ET-638 Reusable lock screen 2025-07-02 15:48:02 +02:00
Timotei-Alexandru Palade f451650d9b chore: Increase the min mail version to 7.0.1 2025-07-02 12:20:05 +00:00
Maciej Gomółka 814f729283 Use correct dsn 2025-06-25 14:29:37 +02:00
Maciej Gomółka 00697123e1 Disable not needed Sentry SDK options 2025-06-25 13:32:29 +02:00
Xavi Gil eba4398f7e ET-3415: Fix, to handle web view process termination 2025-06-20 08:56:47 +00:00
Mateusz Szklarek 88ba47c15a Replace ComposerContactEmail with existing SingleRecipientEntry model 2025-06-17 15:19:23 +02:00
Mateusz Szklarek 4e08a972db Pass displayName instead of empty string when opening composer 2025-06-17 15:00:27 +02:00
Mateusz Szklarek 8cc58c414f Extend ContactsDraftPresenter protocol with new function for opening group 2025-06-12 16:09:00 +02:00
Maciej Gomółka 9e8453af9c Refactor after the CR 2025-06-12 13:52:56 +00:00
Maciej Gomółka ee449d9f17 Integrate Sentry 2025-06-12 13:52:56 +00:00
Maciej Gomółka 6e04d439d0 Add Sentry package to the project 2025-06-12 13:52:56 +00:00
Mateusz Szklarek 06c4a9e97a Refactor interface for opening draft with given contact 2025-06-12 08:47:54 +00:00
Mateusz Szklarek caf0c2b1f8 Implement openDraft with contacts method
Extend `DraftPresenter` with `ContactsDraftPresenter` protocol
2025-06-12 08:47:54 +00:00
Mateusz Szklarek 00265b6cf5 Implement openURL action in ContactDetailsStateStore 2025-06-12 08:47:54 +00:00
Xavi Gil 35fb60d46e ET-3323: Change sender feature 2025-06-12 08:12:47 +00:00
Jacek Krasiukianis 13da72b6f1 Remove unused code 2025-06-10 08:15:16 +00:00
Jacek Krasiukianis 9ac03facad CR: more explicit generic parameter 2025-06-03 13:15:39 +00:00
Jacek Krasiukianis de1dcc0337 ET-2995 Do not update badge when secondary accounts receive notifications 2025-06-03 13:15:39 +00:00
Xavi Gil 3d529e62aa ET-625: Schedule Send custom date picker 2025-05-28 10:58:33 +00:00
Xavi Gil e46e601143 ET-2993: Schedule send, SDK integration for scheduling 2025-05-21 13:16:36 +00:00
Jacek Krasiukianis 534e22ae21 CR: avoid access level on extension 2025-05-21 11:22:16 +00:00
Jacek Krasiukianis 146edc3d42 Remove unused code 2025-05-21 11:22:16 +00:00
Jacek Krasiukianis cd186d3fd6 ET-2523 Integrate payments 2025-05-20 12:36:00 +00:00
Jacek Krasiukianis 9e3d3e6ded ET-2956 Switching environment in TestFlight builds 2025-05-16 08:57:53 +00:00
Maciej Gomółka 7f233f832e Add content to change pin and disalbe pin screens 2025-05-13 15:19:09 +02:00
Maciej Gomółka 0bb604c8dd Add logic to the confirm PIN screen 2025-05-13 15:19:09 +02:00
Jacek Krasiukianis 7e6e26a25a Simplify API config 2025-05-13 10:12:59 +00:00
Jacek Krasiukianis da59e00c4c Collect common localizable strings 2025-05-12 09:00:35 +00:00
Jacek Krasiukianis 407a65864e use better waiting in tests, get rid of async 2025-04-30 10:42:34 +00:00
Jacek Krasiukianis e4754f200b ET-2807 Do not fail inactive tasks 2025-04-30 10:42:34 +00:00
Maciej Gomółka dc15c2c91b Move Routing to the core to make it re-usable 2025-04-29 13:32:13 +00:00
Jacek Krasiukianis 9e205b96e6 Cleanup whitespace 2025-04-29 11:07:38 +02:00
Xavi Gil d9e01577d6 Merge branch 'main' into release/5.0.1 2025-04-28 11:27:56 +02:00
Xavi Gil ceef7680dd ET-2736, ET-2738: Composer add inline image from camera picker 2025-04-23 10:01:56 +00:00
Mateusz Szklarek e6dc813d84 Make action closure async, move Task to UI layer and remove TaskFactory 2025-04-17 18:32:04 +02:00
Mateusz Szklarek 71493bdbb6 Revert "Replace TaskFactory with Task.yield() in tests"
This reverts commit db5043555f0c068d833d2e65be8eb13494383574.
2025-04-17 18:32:04 +02:00
Mateusz Szklarek a9a2a8e7cf Replace TaskFactory with Task.yield() in tests
Reference: https://www.avanderlee.com/concurrency/task-sleep-vs-yield-differences/#when-should-i-use-task-yield
2025-04-17 18:32:04 +02:00
Mateusz Szklarek 47ca084227 Change operation closure to @Sendable 2025-04-17 14:32:47 +02:00
Mateusz Szklarek 4b90471c18 Move makeTask function to separate TaskFactory component
The main idea here is to be able to be able to catch task inside the test
2025-04-17 14:04:08 +02:00