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