mirror of
https://github.com/telegramdesktop/tdesktop
synced 2025-01-03 21:32:16 +00:00
Set correct cache tags for different file types.
This commit is contained in:
parent
e2f08d4161
commit
55f60866cb
@ -771,13 +771,15 @@ void DocumentData::save(
|
||||
&_urlLocation,
|
||||
size,
|
||||
fromCloud,
|
||||
autoLoading);
|
||||
autoLoading,
|
||||
cacheTag());
|
||||
} else if (!_access && !_url.isEmpty()) {
|
||||
_loader = new webFileLoader(
|
||||
_url,
|
||||
toFile,
|
||||
fromCloud,
|
||||
autoLoading);
|
||||
autoLoading,
|
||||
cacheTag());
|
||||
} else {
|
||||
_loader = new mtpFileLoader(
|
||||
_dc,
|
||||
@ -790,7 +792,8 @@ void DocumentData::save(
|
||||
size,
|
||||
(saveToCache() ? LoadToCacheAsWell : LoadToFileOnly),
|
||||
fromCloud,
|
||||
autoLoading);
|
||||
autoLoading,
|
||||
cacheTag());
|
||||
}
|
||||
|
||||
_loader->connect(_loader, SIGNAL(progress(FileLoader*)), App::main(), SLOT(documentLoadProgress(FileLoader*)));
|
||||
@ -1098,6 +1101,19 @@ Storage::Cache::Key DocumentData::cacheKey() const {
|
||||
}
|
||||
}
|
||||
|
||||
uint8 DocumentData::cacheTag() const {
|
||||
if (type == StickerDocument) {
|
||||
return Data::kStickerCacheTag;
|
||||
} else if (isVoiceMessage()) {
|
||||
return Data::kVoiceMessageCacheTag;
|
||||
} else if (isVideoMessage()) {
|
||||
return Data::kVideoMessageCacheTag;
|
||||
} else if (isAnimation()) {
|
||||
return Data::kAnimationCacheTag;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
QString DocumentData::composeNameString() const {
|
||||
if (auto songData = song()) {
|
||||
return ComposeNameString(
|
||||
|
@ -180,6 +180,7 @@ public:
|
||||
|
||||
MediaKey mediaKey() const;
|
||||
Storage::Cache::Key cacheKey() const;
|
||||
uint8 cacheTag() const;
|
||||
|
||||
static QString ComposeNameString(
|
||||
const QString &filename,
|
||||
|
@ -357,7 +357,9 @@ bool MediaPhoto::updateSentMedia(const MTPMessageMedia &media) {
|
||||
}
|
||||
Auth().data().cache().putIfEmpty(
|
||||
Data::StorageCacheKey(key),
|
||||
image->savedData());
|
||||
Storage::Cache::Database::TaggedValue(
|
||||
image->savedData(),
|
||||
Data::kImageCacheTag));
|
||||
};
|
||||
auto &sizes = photo.c_photo().vsizes.v;
|
||||
auto max = 0;
|
||||
|
@ -41,6 +41,12 @@ Storage::Cache::Key StorageCacheKey(const StorageImageLocation &location);
|
||||
Storage::Cache::Key WebDocumentCacheKey(const WebFileLocation &location);
|
||||
Storage::Cache::Key UrlCacheKey(const QString &location);
|
||||
|
||||
constexpr auto kImageCacheTag = uint8(0x01);
|
||||
constexpr auto kStickerCacheTag = uint8(0x02);
|
||||
constexpr auto kVoiceMessageCacheTag = uint8(0x03);
|
||||
constexpr auto kVideoMessageCacheTag = uint8(0x04);
|
||||
constexpr auto kAnimationCacheTag = uint8(0x05);
|
||||
|
||||
} // namespace Data
|
||||
|
||||
struct MessageGroupId {
|
||||
|
@ -1732,7 +1732,8 @@ void FormController::loadFile(File &file) {
|
||||
file.size,
|
||||
LoadToCacheAsWell,
|
||||
LoadFromCloudOrLocal,
|
||||
false));
|
||||
false,
|
||||
Data::kImageCacheTag));
|
||||
const auto loader = j->second.get();
|
||||
loader->connect(loader, &mtpFileLoader::progress, [=] {
|
||||
if (loader->finished()) {
|
||||
@ -2341,9 +2342,11 @@ void FormController::fillDownloadedFile(
|
||||
const auto &bytes = i->uploadData->bytes;
|
||||
Auth().data().cache().put(
|
||||
Data::DocumentCacheKey(destination.dcId, destination.id),
|
||||
QByteArray(
|
||||
reinterpret_cast<const char*>(bytes.data()),
|
||||
bytes.size()));
|
||||
Storage::Cache::Database::TaggedValue(
|
||||
QByteArray(
|
||||
reinterpret_cast<const char*>(bytes.data()),
|
||||
bytes.size()),
|
||||
Data::kImageCacheTag));
|
||||
}
|
||||
|
||||
auto FormController::parseValue(
|
||||
|
@ -107,9 +107,17 @@ WebLoadMainManager *_webLoadMainManager = nullptr;
|
||||
|
||||
} // namespace
|
||||
|
||||
FileLoader::FileLoader(const QString &toFile, int32 size, LocationType locationType, LoadToCacheSetting toCache, LoadFromCloudSetting fromCloud, bool autoLoading)
|
||||
FileLoader::FileLoader(
|
||||
const QString &toFile,
|
||||
int32 size,
|
||||
LocationType locationType,
|
||||
LoadToCacheSetting toCache,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading,
|
||||
uint8 cacheTag)
|
||||
: _downloader(&Auth().downloader())
|
||||
, _autoLoading(autoLoading)
|
||||
, _cacheTag(cacheTag)
|
||||
, _filename(toFile)
|
||||
, _file(_filename)
|
||||
, _toCache(toCache)
|
||||
@ -471,15 +479,17 @@ mtpFileLoader::mtpFileLoader(
|
||||
not_null<StorageImageLocation*> location,
|
||||
Data::FileOrigin origin,
|
||||
int32 size,
|
||||
LoadFromCloudSetting fromCloud
|
||||
, bool autoLoading)
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading,
|
||||
uint8 cacheTag)
|
||||
: FileLoader(
|
||||
QString(),
|
||||
size,
|
||||
UnknownFileLocation,
|
||||
LoadToCacheAsWell,
|
||||
fromCloud,
|
||||
autoLoading)
|
||||
autoLoading,
|
||||
cacheTag)
|
||||
, _dcId(location->dc())
|
||||
, _location(location)
|
||||
, _origin(origin) {
|
||||
@ -502,14 +512,16 @@ mtpFileLoader::mtpFileLoader(
|
||||
int32 size,
|
||||
LoadToCacheSetting toCache,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading)
|
||||
bool autoLoading,
|
||||
uint8 cacheTag)
|
||||
: FileLoader(
|
||||
to,
|
||||
size,
|
||||
type,
|
||||
toCache,
|
||||
fromCloud,
|
||||
autoLoading)
|
||||
autoLoading,
|
||||
cacheTag)
|
||||
, _dcId(dc)
|
||||
, _id(id)
|
||||
, _accessHash(accessHash)
|
||||
@ -527,14 +539,16 @@ mtpFileLoader::mtpFileLoader(
|
||||
const WebFileLocation *location,
|
||||
int32 size,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading)
|
||||
bool autoLoading,
|
||||
uint8 cacheTag)
|
||||
: FileLoader(
|
||||
QString(),
|
||||
size,
|
||||
UnknownFileLocation,
|
||||
LoadToCacheAsWell,
|
||||
fromCloud,
|
||||
autoLoading)
|
||||
autoLoading,
|
||||
cacheTag)
|
||||
, _dcId(location->dc())
|
||||
, _urlLocation(location) {
|
||||
auto shiftedDcId = MTP::downloadDcId(_dcId, 0);
|
||||
@ -957,7 +971,11 @@ bool mtpFileLoader::feedPart(int offset, bytes::const_span buffer) {
|
||||
|| _locationType == UnknownFileLocation
|
||||
|| _toCache == LoadToCacheAsWell) {
|
||||
if (const auto key = cacheKey()) {
|
||||
Auth().data().cache().put(*key, base::duplicate(_data));
|
||||
Auth().data().cache().put(
|
||||
*key,
|
||||
Storage::Cache::Database::TaggedValue(
|
||||
base::duplicate(_data),
|
||||
_cacheTag));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1105,8 +1123,20 @@ mtpFileLoader::~mtpFileLoader() {
|
||||
cancelRequests();
|
||||
}
|
||||
|
||||
webFileLoader::webFileLoader(const QString &url, const QString &to, LoadFromCloudSetting fromCloud, bool autoLoading)
|
||||
: FileLoader(QString(), 0, UnknownFileLocation, LoadToCacheAsWell, fromCloud, autoLoading)
|
||||
webFileLoader::webFileLoader(
|
||||
const QString &url,
|
||||
const QString &to,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading,
|
||||
uint8 cacheTag)
|
||||
: FileLoader(
|
||||
QString(),
|
||||
0,
|
||||
UnknownFileLocation,
|
||||
LoadToCacheAsWell,
|
||||
fromCloud,
|
||||
autoLoading,
|
||||
cacheTag)
|
||||
, _url(url)
|
||||
, _requestSent(false)
|
||||
, _already(0) {
|
||||
@ -1167,7 +1197,11 @@ void webFileLoader::onFinished(const QByteArray &data) {
|
||||
|
||||
if (_localStatus == LocalStatus::NotFound) {
|
||||
if (const auto key = cacheKey()) {
|
||||
Auth().data().cache().put(*key, base::duplicate(_data));
|
||||
Auth().data().cache().put(
|
||||
*key,
|
||||
Storage::Cache::Database::TaggedValue(
|
||||
base::duplicate(_data),
|
||||
_cacheTag));
|
||||
}
|
||||
}
|
||||
_downloader->taskFinished().notify();
|
||||
|
@ -72,7 +72,15 @@ class FileLoader : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
FileLoader(const QString &toFile, int32 size, LocationType locationType, LoadToCacheSetting, LoadFromCloudSetting fromCloud, bool autoLoading);
|
||||
FileLoader(
|
||||
const QString &toFile,
|
||||
int32 size,
|
||||
LocationType locationType,
|
||||
LoadToCacheSetting toCache,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading,
|
||||
uint8 cacheTag);
|
||||
|
||||
bool finished() const {
|
||||
return _finished;
|
||||
}
|
||||
@ -163,6 +171,7 @@ protected:
|
||||
|
||||
bool _paused = false;
|
||||
bool _autoLoading = false;
|
||||
uint8 _cacheTag = 0;
|
||||
bool _inQueue = false;
|
||||
bool _finished = false;
|
||||
bool _cancelled = false;
|
||||
@ -197,7 +206,8 @@ public:
|
||||
Data::FileOrigin origin,
|
||||
int32 size,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading);
|
||||
bool autoLoading,
|
||||
uint8 cacheTag);
|
||||
mtpFileLoader(
|
||||
int32 dc,
|
||||
uint64 id,
|
||||
@ -209,12 +219,14 @@ public:
|
||||
int32 size,
|
||||
LoadToCacheSetting toCache,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading);
|
||||
bool autoLoading,
|
||||
uint8 cacheTag);
|
||||
mtpFileLoader(
|
||||
const WebFileLocation *location,
|
||||
int32 size,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading);
|
||||
bool autoLoading,
|
||||
uint8 cacheTag);
|
||||
|
||||
int32 currentOffset(bool includeSkipped = false) const override;
|
||||
Data::FileOrigin fileOrigin() const override;
|
||||
@ -317,7 +329,8 @@ public:
|
||||
const QString &url,
|
||||
const QString &to,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading);
|
||||
bool autoLoading,
|
||||
uint8 cacheTag);
|
||||
|
||||
int32 currentOffset(bool includeSkipped = false) const override;
|
||||
|
||||
|
@ -129,7 +129,9 @@ void Uploader::uploadMedia(const FullMsgId &msgId, const SendMediaReady &media)
|
||||
if (document->saveToCache()) {
|
||||
Auth().data().cache().put(
|
||||
document->cacheKey(),
|
||||
base::duplicate(media.data));
|
||||
Storage::Cache::Database::TaggedValue(
|
||||
base::duplicate(media.data),
|
||||
document->cacheTag()));
|
||||
}
|
||||
}
|
||||
if (!media.file.isEmpty()) {
|
||||
@ -156,7 +158,9 @@ void Uploader::upload(
|
||||
if (document->saveToCache()) {
|
||||
Auth().data().cache().put(
|
||||
document->cacheKey(),
|
||||
base::duplicate(file->content));
|
||||
Storage::Cache::Database::TaggedValue(
|
||||
base::duplicate(file->content),
|
||||
document->cacheTag()));
|
||||
}
|
||||
}
|
||||
if (!file->filepath.isEmpty()) {
|
||||
|
@ -1024,7 +1024,9 @@ void RemoteImage::setImageBytes(
|
||||
if (!location.isNull() && !bytes.isEmpty()) {
|
||||
Auth().data().cache().putIfEmpty(
|
||||
Data::StorageCacheKey(location),
|
||||
base::duplicate(bytes));
|
||||
Storage::Cache::Database::TaggedValue(
|
||||
base::duplicate(bytes),
|
||||
Data::kImageCacheTag));
|
||||
}
|
||||
}
|
||||
|
||||
@ -1165,7 +1167,8 @@ FileLoader *StorageImage::createLoader(
|
||||
origin,
|
||||
_size,
|
||||
fromCloud,
|
||||
autoLoading);
|
||||
autoLoading,
|
||||
Data::kImageCacheTag);
|
||||
}
|
||||
|
||||
WebFileImage::WebFileImage(
|
||||
@ -1220,7 +1223,8 @@ FileLoader *WebFileImage::createLoader(
|
||||
&_location,
|
||||
_size,
|
||||
fromCloud,
|
||||
autoLoading);
|
||||
autoLoading,
|
||||
Data::kImageCacheTag);
|
||||
}
|
||||
|
||||
DelayedStorageImage::DelayedStorageImage() : StorageImage(StorageImageLocation())
|
||||
@ -1359,7 +1363,12 @@ FileLoader *WebImage::createLoader(
|
||||
Data::FileOrigin origin,
|
||||
LoadFromCloudSetting fromCloud,
|
||||
bool autoLoading) {
|
||||
return new webFileLoader(_url, QString(), fromCloud, autoLoading);
|
||||
return new webFileLoader(
|
||||
_url,
|
||||
QString(),
|
||||
fromCloud,
|
||||
autoLoading,
|
||||
Data::kImageCacheTag);
|
||||
}
|
||||
|
||||
namespace internal {
|
||||
|
Loading…
Reference in New Issue
Block a user