Enforce video/audio extension by mime type.

This commit is contained in:
John Preston 2024-04-16 12:49:10 +04:00
parent abcf55c498
commit 49c9e08b6c
2 changed files with 21 additions and 2 deletions

View File

@ -484,13 +484,13 @@ void DocumentData::setattributes(
|| type == AnimatedDocument
|| type == RoundVideoDocument
|| isAnimation()) {
if (_nameType != Type::Video) {
if (!enforceNameType(Type::Video)) {
type = FileDocument;
_additional = nullptr;
}
}
if (type == SongDocument || type == VoiceDocument || isAudioFile()) {
if (_nameType != Type::Audio) {
if (!enforceNameType(Type::Audio)) {
type = FileDocument;
_additional = nullptr;
}
@ -951,6 +951,24 @@ void DocumentData::setFileName(const QString &remoteFileName) {
_nameType = Core::DetectNameType(_filename);
}
bool DocumentData::enforceNameType(Core::NameType nameType) {
if (_nameType == nameType) {
return true;
}
const auto base = _filename.isEmpty() ? u"file"_q : _filename;
const auto mime = Core::MimeTypeForName(mimeString());
const auto patterns = mime.globPatterns();
for (const auto &pattern : mime.globPatterns()) {
const auto now = base + QString(pattern).replace('*', QString());
if (Core::DetectNameType(now) == nameType) {
_filename = now;
_nameType = nameType;
return true;
}
}
return false;
}
void DocumentData::setLoadedInMediaCacheLocation() {
_location = Core::FileLocation();
_flags |= Flag::LoadedInMediaCache;

View File

@ -341,6 +341,7 @@ private:
void setMaybeSupportsStreaming(bool supports);
void setLoadedInMediaCacheLocation();
void setFileName(const QString &remoteFileName);
bool enforceNameType(Core::NameType nameType);
void finishLoad();
void handleLoaderUpdates();