Skip to content

Commit

Permalink
Fix scanning app data with metadata
Browse files Browse the repository at this point in the history
Previously we were listening to change in the appdata folder but an
appdata scan didn't setup the file system, so the view was unavailable.

**Test plan:**

1. rm -rf data/appdata_...../preview data/<user>/Media
2. occ files:scan-app-data
3. occ files:scan <user>

No errors and the files and metadata are correctly removed from the
database too.

Signed-off-by: Carl Schwan <[email protected]>
  • Loading branch information
CarlSchwan committed Apr 21, 2022
1 parent 12ed5c9 commit 3b4efc7
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions lib/private/Metadata/FileEventListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,26 @@ private function shouldExtractMetadata(Node $node): bool {
}

$path = $node->getPath();
return $this->isCorrectPath($path);
}

private function isCorrectPath(string $path): bool {
// TODO make this more dynamic, we have the same issue in other places
return !str_starts_with($path, 'appdata_') && !str_starts_with($path, 'files_versions/') && !str_starts_with($path, 'files_trashbin/');
}

public function handle(Event $event): void {
if ($event instanceof NodeRemovedFromCache) {
if (!$this->isCorrectPath($event->getPath())) {
// Don't listen to paths for which we don't extract metadata
return;
}
$view = Filesystem::getView();
if (!$view) {
// Should not happen since a scan in the user folder should setup
// the file system.
return;
}
$info = $view->getFileInfo($event->getPath());
if ($info && $info->getType() === FileInfo::TYPE_FILE) {
$this->manager->clearMetadata($info->getId());
Expand Down

0 comments on commit 3b4efc7

Please sign in to comment.