Update contacts estimation

Signed-off-by: Christopher Ng <chrng8@gmail.com>
pull/32206/head
Christopher Ng 4 years ago
parent f2850a6c06
commit 9fbbbc7ca6
  1. 21
      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);
}
/**

Loading…
Cancel
Save