diff options
author | Christopher Ng <chrng8@gmail.com> | 2022-04-29 05:33:45 +0300 |
---|---|---|
committer | backportbot-nextcloud[bot] <backportbot-nextcloud[bot]@users.noreply.github.com> | 2022-05-31 03:19:14 +0300 |
commit | eb70231f704c64427f2b3bc9411a3c8962126a9b (patch) | |
tree | 9865098e155ffef4c1f0325786c619d8e5a84005 /apps/dav/lib | |
parent | b85f882c23edb565de55ef43613b6e34c41fd028 (diff) |
Update contacts estimation
Signed-off-by: Christopher Ng <chrng8@gmail.com>
Diffstat (limited to 'apps/dav/lib')
-rw-r--r-- | apps/dav/lib/UserMigration/ContactsMigrator.php | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/apps/dav/lib/UserMigration/ContactsMigrator.php b/apps/dav/lib/UserMigration/ContactsMigrator.php index fc498288810..ae1a61ce4f4 100644 --- a/apps/dav/lib/UserMigration/ContactsMigrator.php +++ b/apps/dav/lib/UserMigration/ContactsMigrator.php @@ -48,6 +48,7 @@ use Sabre\VObject\Splitter\VCard as VCardSplitter; use Sabre\VObject\UUIDUtil; use Safe\Exceptions\ArrayException; use Safe\Exceptions\StringsException; +use Symfony\Component\Console\Output\NullOutput; use Symfony\Component\Console\Output\OutputInterface; use Throwable; @@ -198,15 +199,21 @@ class ContactsMigrator implements IMigrator, ISizeEstimationMigrator { * {@inheritDoc} */ public function getEstimatedExportSize(IUser $user): int { - $principalUri = $this->getPrincipalUri($user); + $addressBookExports = $this->getAddressBookExports($user, new NullOutput()); + $addressBookCount = count($addressBookExports); - return array_sum(array_map( - function (array $addressBookInfo) use ($user): int { - // FIXME 1MiB by addressbook, no idea if this is accurate and if we should go into more details - return 1000; - }, - $this->cardDavBackend->getAddressBooksForUser($principalUri), + // 50B for each metadata JSON + $size = ($addressBookCount * 50) / 1024; + + $contactsCount = array_sum(array_map( + fn (array $data): int => count($data['vCards']), + $addressBookExports, )); + + // 350B for each contact + $size += ($contactsCount * 350) / 1024; + + return (int)ceil($size); } /** |