2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-31 06:26:18 +00:00

Set correct cache tags for different file types.

This commit is contained in:
John Preston
2018-08-29 00:09:55 +03:00
parent e2f08d4161
commit 55f60866cb
9 changed files with 119 additions and 31 deletions

View File

@@ -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();

View File

@@ -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;

View File

@@ -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()) {