Fix thumbnails for new files made while client open

Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
This commit is contained in:
Claudio Cambra 2022-04-11 13:36:06 +02:00 committed by Matthieu Gallien
parent 617666304f
commit 7b65c1ceed
No known key found for this signature in database
GPG Key ID: 7D0F74F05C22F553
3 changed files with 60 additions and 17 deletions

View File

@ -46,7 +46,7 @@ ActivityLink ActivityLink::createFomJsonObject(const QJsonObject &obj)
return activityLink;
}
OCC::Activity Activity::fromActivityJson(const QJsonObject json, const AccountPtr account)
OCC::Activity Activity::fromActivityJson(const QJsonObject &json, const AccountPtr account)
{
const auto activityUser = json.value(QStringLiteral("user")).toString();
@ -118,8 +118,9 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject json, const AccountPt
}
const auto previewsData = json.value(QStringLiteral("previews")).toArray();
const QMimeDatabase mimeDb;
for(const auto preview : previewsData) {
for(const auto &preview : previewsData) {
const auto jsonPreviewData = preview.toObject();
PreviewData data;
@ -129,11 +130,10 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject json, const AccountPt
data._view = jsonPreviewData.value(QStringLiteral("view")).toString();
data._filename = jsonPreviewData.value(QStringLiteral("filename")).toString();
if(data._mimeType.contains(QStringLiteral("text/"))) {
data._source = account->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/text.svg");
data._isMimeTypeIcon = true;
} else if (data._mimeType.contains(QStringLiteral("/pdf"))) {
data._source = account->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/application-pdf.svg");
const auto mimeType = mimeDb.mimeTypeForName(data._mimeType);
if(data._mimeType.contains(QStringLiteral("text/")) || data._mimeType.contains(QStringLiteral("/pdf"))) {
data._source = account->url().toString() + relativeServerFileTypeIconPath(mimeType);
data._isMimeTypeIcon = true;
} else {
data._source = jsonPreviewData.value(QStringLiteral("source")).toString();
@ -164,4 +164,52 @@ OCC::Activity Activity::fromActivityJson(const QJsonObject json, const AccountPt
return activity;
}
QString Activity::relativeServerFileTypeIconPath(const QMimeType &mimeType)
{
if(mimeType.isValid() && mimeType.inherits("text/plain")) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/text.svg");
} else if (mimeType.isValid() && mimeType.name().startsWith("image")) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/image.svg");
} else if (mimeType.isValid() && mimeType.name().startsWith("audio")) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/audio.svg");
} else if (mimeType.isValid() && mimeType.name().startsWith("video")) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/video.svg");
} else if (mimeType.isValid() && (mimeType.inherits("application/vnd.oasis.opendocument.text") ||
mimeType.inherits("application/msword") ||
mimeType.inherits("application/vnd.openxmlformats-officedocument.wordprocessingml.document") ||
mimeType.inherits("application/vnd.openxmlformats-officedocument.wordprocessingml.template")||
mimeType.inherits("application/vnd.ms-word.document.macroEnabled.12") ||
mimeType.inherits("application/vnd.ms-word.template.macroEnabled.12") ||
mimeType.inherits("application/vnd.apple.pages"))) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/x-office-document.svg");
} else if (mimeType.isValid() && mimeType.inherits("application/vnd.oasis.opendocument.graphics")) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/x-office-drawing.svg");
} else if (mimeType.isValid() && (mimeType.inherits("application/vnd.oasis.opendocument.presentation") ||
mimeType.inherits("application/vnd.ms-powerpoint") ||
mimeType.inherits("application/vnd.openxmlformats-officedocument.presentationml.presentation") ||
mimeType.inherits("application/vnd.openxmlformats-officedocument.presentationml.template") ||
mimeType.inherits("application/vnd.openxmlformats-officedocument.presentationml.slideshow") ||
mimeType.inherits("application/vnd.ms-powerpoint.addin.macroEnabled.12") ||
mimeType.inherits("application/vnd.ms-powerpoint.presentation.macroEnabled.12") ||
mimeType.inherits("application/vnd.ms-powerpoint.template.macroEnabled.12") ||
mimeType.inherits("application/vnd.ms-powerpoint.slideshow.macroEnabled.12") ||
mimeType.inherits("application/vnd.apple.keynote"))) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/x-office-presentation.svg");
} else if (mimeType.isValid() && (mimeType.inherits("application/vnd.oasis.opendocument.spreadsheet") ||
mimeType.inherits("application/vnd.ms-excel") ||
mimeType.inherits("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") ||
mimeType.inherits("application/vnd.openxmlformats-officedocument.spreadsheetml.template") ||
mimeType.inherits("application/vnd.ms-excel.sheet.macroEnabled.12") ||
mimeType.inherits("application/vnd.ms-excel.template.macroEnabled.12") ||
mimeType.inherits("application/vnd.ms-excel.addin.macroEnabled.12") ||
mimeType.inherits("application/vnd.ms-excel.sheet.binary.macroEnabled.12") ||
mimeType.inherits("application/vnd.apple.numbers"))) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/x-office-document.svg");
} else if (mimeType.isValid() && mimeType.inherits("application/pdf")) {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/application-pdf.svg");
} else {
return QStringLiteral("/index.php/apps/theming/img/core/filetypes/file.svg");
}
}
}

View File

@ -99,7 +99,9 @@ public:
SyncFileItemType
};
static Activity fromActivityJson(const QJsonObject json, const AccountPtr account);
static Activity fromActivityJson(const QJsonObject &json, const AccountPtr account);
static QString relativeServerFileTypeIconPath(const QMimeType &mimeType);
struct RichSubjectParameter {
QString type; // Required

View File

@ -567,19 +567,12 @@ void User::processCompletedSyncItem(const Folder *folder, const SyncFileItemPtr
PreviewData preview;
preview._mimeType = mimeType.name();
preview._filename = fileName;
preview._isMimeTypeIcon = true;
if(item->isDirectory()) {
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/folder.svg");
preview._isMimeTypeIcon = true;
} else if(mimeType.isValid() && mimeType.inherits("text/plain")) {
preview._source = account()->url().toString() + QStringLiteral("/index.php/apps/theming/img/core/filetypes/text.svg");
preview._isMimeTypeIcon = true;
} 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;
preview._source = account()->url().toString() + Activity::relativeServerFileTypeIconPath(mimeType);
}
activity._previews.append(preview);
}