mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Enforce video/audio extension by mime type.
This commit is contained in:
parent
abcf55c498
commit
49c9e08b6c
2 changed files with 21 additions and 2 deletions
|
@ -484,13 +484,13 @@ void DocumentData::setattributes(
|
||||||
|| type == AnimatedDocument
|
|| type == AnimatedDocument
|
||||||
|| type == RoundVideoDocument
|
|| type == RoundVideoDocument
|
||||||
|| isAnimation()) {
|
|| isAnimation()) {
|
||||||
if (_nameType != Type::Video) {
|
if (!enforceNameType(Type::Video)) {
|
||||||
type = FileDocument;
|
type = FileDocument;
|
||||||
_additional = nullptr;
|
_additional = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (type == SongDocument || type == VoiceDocument || isAudioFile()) {
|
if (type == SongDocument || type == VoiceDocument || isAudioFile()) {
|
||||||
if (_nameType != Type::Audio) {
|
if (!enforceNameType(Type::Audio)) {
|
||||||
type = FileDocument;
|
type = FileDocument;
|
||||||
_additional = nullptr;
|
_additional = nullptr;
|
||||||
}
|
}
|
||||||
|
@ -951,6 +951,24 @@ void DocumentData::setFileName(const QString &remoteFileName) {
|
||||||
_nameType = Core::DetectNameType(_filename);
|
_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() {
|
void DocumentData::setLoadedInMediaCacheLocation() {
|
||||||
_location = Core::FileLocation();
|
_location = Core::FileLocation();
|
||||||
_flags |= Flag::LoadedInMediaCache;
|
_flags |= Flag::LoadedInMediaCache;
|
||||||
|
|
|
@ -341,6 +341,7 @@ private:
|
||||||
void setMaybeSupportsStreaming(bool supports);
|
void setMaybeSupportsStreaming(bool supports);
|
||||||
void setLoadedInMediaCacheLocation();
|
void setLoadedInMediaCacheLocation();
|
||||||
void setFileName(const QString &remoteFileName);
|
void setFileName(const QString &remoteFileName);
|
||||||
|
bool enforceNameType(Core::NameType nameType);
|
||||||
|
|
||||||
void finishLoad();
|
void finishLoad();
|
||||||
void handleLoaderUpdates();
|
void handleLoaderUpdates();
|
||||||
|
|
Loading…
Add table
Reference in a new issue