Fix for VFS crashes

Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
This commit is contained in:
Claudio Cambra 2022-03-19 23:30:59 +01:00
parent d99a65f017
commit 98e297bf0b

View file

@ -551,33 +551,38 @@ void User::processCompletedSyncItem(const Folder *folder, const SyncFileItemPtr
activity._message = messageFromFileAction(activity._fileAction, fileName); activity._message = messageFromFileAction(activity._fileAction, fileName);
} }
if(activity._fileAction != "file_deleted") { if(activity._fileAction != "file_deleted" && !item->isEmpty()) {
auto remotePath = folder->remotePath(); auto remotePath = folder->remotePath();
remotePath.append(activity._fileAction == "file_renamed" ? item->_renameTarget : activity._file); remotePath.append(activity._fileAction == "file_renamed" ? item->_renameTarget : activity._file);
const auto localFiles = FolderMan::instance()->findFileInLocalFolders(item->_file, account()); const auto localFiles = FolderMan::instance()->findFileInLocalFolders(item->_file, account());
if (!localFiles.isEmpty()) { if (!localFiles.isEmpty()) {
const QMimeType mimeType = _mimeDb.mimeTypeForFile(QFileInfo(localFiles.constFirst())); const auto firstFilePath = localFiles.constFirst();
const auto itemJournalRecord = item->toSyncJournalFileRecordWithInode(firstFilePath);
// Set the preview data, though for now we can skip setting file ID, link, and view if(!itemJournalRecord.isVirtualFile()) {
PreviewData preview; const auto mimeType = _mimeDb.mimeTypeForFile(QFileInfo(localFiles.constFirst()));
preview._mimeType = mimeType.name();
preview._filename = fileName;
if(item->isDirectory()) { // Set the preview data, though for now we can skip setting file ID, link, and view
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/folder.svg"); PreviewData preview;
preview._isMimeTypeIcon = true; preview._mimeType = mimeType.name();
} else if(mimeType.isValid() && mimeType.inherits("text/plain")) { preview._filename = fileName;
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/text.svg");
preview._isMimeTypeIcon = true; if(item->isDirectory()) {
} else if (mimeType.isValid() && mimeType.inherits("application/pdf")) { preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/folder.svg");
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/application-pdf.svg"); preview._isMimeTypeIcon = true;
preview._isMimeTypeIcon = true; } else if(mimeType.isValid() && mimeType.inherits("text/plain")) {
} else { preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/text.svg");
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/files/api/v1/thumbnail/150/150/") + remotePath; preview._isMimeTypeIcon = true;
preview._isMimeTypeIcon = false; } else if (mimeType.isValid() && mimeType.inherits("application/pdf")) {
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/application-pdf.svg");
preview._isMimeTypeIcon = true;
} else {
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/files/api/v1/thumbnail/150/150/") + remotePath;
preview._isMimeTypeIcon = false;
}
activity._previews.append(preview);
} }
activity._previews.append(preview);
} }
} }