Commit graph

41 commits

Author SHA1 Message Date
das
d4de59d7ce fix tests part 1 2025-10-17 12:07:41 +02:00
das
74eb86ac21 wip 4 2025-10-17 11:10:04 +02:00
das
7d51f72a42 wip 2025-10-16 16:30:14 +02:00
abp
1f8a297849
fix failing tests
Co-authored-by: map <mpfau@users.noreply.github.com>
2025-10-15 17:46:05 +02:00
sug
7c1c8e3a7e wip: test 2025-10-15 16:33:29 +02:00
sug
3cdcb88e81
wip: test 2025-10-15 15:56:05 +02:00
sug
5b8b49d316
wip: Add connectivity model to spam handler 2025-10-15 15:56:04 +02:00
sug
3f09b0f5db
wip: tests2 2025-10-15 15:56:03 +02:00
sug
1bc8ebdc4e
wip: tests 2025-10-15 15:56:03 +02:00
sug
f48bd25fea
wip: test 2 2025-10-15 15:55:59 +02:00
sug
af7c05011c wip: test 2025-10-14 15:53:36 +02:00
hrb-hub
33f4432484 Fix base64url.replace is not a function error when reactivating alias
The error is a result of an incorrect assumption that EntityUpdateData's
instanceListId is null for ElementEntities when processing entity
updates, when in fact instanceListId is an empty string.

Changing EntityUpdateData.instanceListId's type to NonEmptyString | null
and setting it to null for ElementEntity updates early should help
prevent bugs caused by such assumptions.

Close #9420

Co-authored-by: bir <bir@tutao.de>
Co-authored-by: ivk <ivk@tutao.de>
2025-08-29 10:26:11 +02:00
jhm
5e8aa2bf05
introduce PrefetchStatus in entityUpdateData
We introduce a PrefetchStatus to account for instances not returned
by the server as early as possible. This ensures that we do not throw
in case of 404 not found or 403 not authorized error, when instances
corresponding to create or update entityUpdates have already been
deleted or permissions have been revoked.

Co-authored-by: abp <abp@tutao.de>
2025-07-04 14:14:32 +02:00
abp
4db7e9b1e9
add prefetching to missed entityUpdates, instance/patch on EntityUpdate
When processing the missed entityUpdates in EventQueue in EventBusClient
, we group entityUpdates based on typeRefs and listIds and do
loadMultiple requests instead of loading them one-by-one (prefetching).
Additionally, when the client is online, the server enriches the
WebSocket message with either the instance (in case of a CREATE event),
or with the patches list (in case of an UPDATE event) so that we do not
need to do an additional GET request and can either put the instance
into the cache or update the entry on the cache using the PatchMerger
instead.

Co-authored-by: abp <abp@tutao.de>
Co-authored-by: das <das@tutao.de>
Co-authored-by: jomapp <17314077+jomapp@users.noreply.github.com>
Co-authored-by: Kinan <104761667+kibibytium@users.noreply.github.com>
Co-authored-by: map <mpfau@users.noreply.github.com>
Co-authored-by: sug <sug@tutao.de>
2025-07-02 14:00:11 +02:00
wrd
900bd4c16f Lazy load inboxRuleHandel to prevent null mailModel
Close #9094

Co-authored-by: ivk <ivk@tutao.de>
2025-06-12 16:58:23 +02:00
ivk
9e31ee0409 Inject type model resolvers
Passing instances explicitly avoids the situations where some of them
might not be initialized.

We also simplified the entity handling by converting entity updates to
data with resolved types early so that the listening code doesn't have
to deal with it.

We did fix some of the bad test practices, e.g. setting/restoring env
incorrectly. This matters now because accessors for type model
initializers check env.mode.

Co-authored-by: paw <paw-hub@users.noreply.github.com>
2025-05-27 14:52:44 +02:00
Kinan
edbf281b88
switch to typeIds and attrIds, add SystemMV126, TutanotaMV86, BaseMV2
Refactor our instance deserialization/serialization pipeline, both on
TypeScript and on Rust [sdk] to use typeId and attributeIds instead of
typeNames and attributeNames. We furthermore ignore cardinalities
on associations until the instance layer and always
store associations as arrays. This commit introduces **eventual
consistency** on the client, i.e. we are from now on always storing data
in the newest schema format (activeApplicationVersionsForWritingSum)
which ensures that all data is already available on the client after
updating the client to a newer version. This removes the need for
offline migrations on the client and also removes backward migrations
on the server. Furthermore, the server model types are now available
on the client, retrievable through the ApplicationTypesFacade. This is
our first step towards FastSync.

Co-authored-by: nig <nig@tutao.de>
Co-authored-by: abp <abp@tutao.de>
Co-authored-by: jomapp <17314077+jomapp@users.noreply.github.com>
Co-authored-by: map <mpfau@users.noreply.github.com>
Co-authored-by: sug <sug@tutao.de>
Co-authored-by: Kinan <104761667+kibibytium@users.noreply.github.com>
2025-04-28 12:44:35 +02:00
ivk
7a5dec30aa Use resolve conversations service when executing mail actions
Close #8506

Co-authored-by: paw <paw-hub@users.noreply.github.com>
Co-authored-by: wrd <wrd@tutao.de>
2025-03-05 16:26:09 +01:00
paw
abd5e3fdc1 Use UnreadMailStateService for marking mails as read/unread
This commit moves the service call to MailFacade and adds tests, too.

Closes #8507
2025-03-05 16:26:09 +01:00
abp
84d4c125f0
remove legacy MailFolders and add TutanotaModelV83
Co-authored-by: jhm <17314077+jomapp@users.noreply.github.com>
2025-02-11 16:53:52 +01:00
wrd
f99bd69ff0 Move indexer and mail search to mail-app 2024-09-23 16:49:37 +02:00
wrd
88355bd5d1 Splits MailModel into two, adding MailboxModel
close pi#214

Calendar only needs access to MailboxModel, MailModel handles deleting
and moving mails
2024-09-23 16:49:37 +02:00
map
2d24bab6f9 MailSet support (static mail listIds)
In order to allow importing of mails we replace legacy MailFolders
(non-static mail listIds) with new MailSets (static mail listIds).
From now on, mails have static mail listIds and static mail elementIds.
To move mails between new MailSets we introduce MailSetEntries
("entries" property on a MailSet), which are index entries sorted by
the received date of the referenced mails (customId). This commit adds
support for new MailSets, while still supporting legacy MailFolders
(mail lists) to support migrating gradually.

* TutanotaModelV74 adds:
  * MailSet support
  * and defaultAlarmList on GroupSettings

* SystemModelV107 adds model changes for counter (unread mails) updates

* Adapt mail list to show MailSet and legacy mails
  The list model is now largely unaware about listIds since it can
  display mails from multiple MailBags. MailBags are static mailLists
  from which a mail is only removed from when the mail is permanently
  deleted.

* Adapt offline storage for mail sets
  Offline storage gained the ability to provide cached entities
  from a list of ids.
2024-08-20 16:19:58 +02:00
and
418b9bc3f9 [Calendar] Clean project code
Co-authored-by: Murilo Pereira <34790144+murilopereirame@users.noreply.github.com>

This commit fixes the Build scripts and missing imports
from rebase. Fixes tests after apps split, and This commit fixes the
Android project changing the gradle task used to build the Android app.
Also fixes some import errors caused by the rebase.
2024-07-26 16:43:00 +02:00
mup
168d048448 [Calendar] Make Calendar Search separation clearer
Co-authored-by: @rih-tutao

other style fixes
2024-07-26 16:43:00 +02:00
mup
70a307ffa1 [Calendar] Fix imports 2024-07-26 16:43:00 +02:00
wrd
8ab3b14edd Move files to new folder structure
Co-authored-by: @rih-tutao
2024-07-26 16:42:13 +02:00
ivk
9b1e3edbae Reconcile CryptoErrors
Introduces a new package in order to avoid tutanota-crypto depending
on the whole tutanota-utils. With this package we can have one canonical
CryptoError.

We add another entry point to tutanota-crypto in order to be able to
import only error classes from any chunk.

We've adjusted moduleResolution for tsconfig to support export maps
for our new entry point.

We've updated @rollup/plugin-typescript to add support for export maps.

We have reorganized utils to adjust the chunking. Error utils are now
a part of the main chunk.

We have moved ServiceWorkerClient into the main chunk because we need
to handle the errors and also because it is anyway invoked only after
the other initialization is done.

close #6342
2024-01-18 14:23:01 +01:00
vis
16a5590760 Disallow Partial instance initializers
Co-authored-by: @paw-hub, @mpfau, @vaf-hub
tutanota#6118
2023-12-12 18:52:44 +01:00
arm
9b03e7a833 Implement shared mailboxes 2023-09-07 16:58:31 +02:00
ivk
ada89d6fc2 Switch to @tutao/otest from ospec 2023-07-28 16:08:22 +02:00
ivk
88b8c399a2 List rewrite, mail list filter
Includes rewrite of Mail/Contact/Search views to use ViewModels

close #5431

Co-authored-by: wrd <wrd@tutao.de>
2023-06-15 16:03:46 +02:00
wrd
e92204dc55 Improve multiselect, add select all, add toolbar, new contact layout
close #5301
close #5306
close #5307

Co-authored-by: wrd <wrd@tutao.de>
Co-authored-by: nig <nig@tutao.de>
2023-04-11 13:05:34 +02:00
ivk
a8b7346446 Introduce lazy chunks for the worker, fix #3165 2023-02-23 16:20:41 +00:00
wrd
e72305eb3f Add ability to move folders
close #4858
2023-01-20 10:26:06 +01:00
ivk
70c37c09d6 Remove some methods from worker 2023-01-20 10:26:06 +01:00
ivk
50b23ebd1b Run prettier on the whole project 2022-12-27 16:08:23 +01:00
ivk
06299fb0c0 Changes after review 2022-12-19 18:08:06 +01:00
nok
c0f9b4086f Cleanup FolderSystem.ts 2022-12-19 18:08:06 +01:00
ivk
3cc58ae1c1 Create MailboxProperties for other users as an admin, #516 2022-11-24 17:35:21 +01:00
ivk
7ec57e1190 Merge api/client tests into a single entry point 2022-05-16 07:59:43 +02:00
Renamed from test/client/mail/MailModelTest.ts (Browse further)