MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / addLoading

Method addLoading

Telegram/SourceFiles/data/data_download_manager.cpp:213–257  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

211}
212
213void DownloadManager::addLoading(DownloadObject object) {
214 Expects(object.item != nullptr);
215 Expects(object.document != nullptr);
216
217 const auto item = object.item;
218 auto &data = sessionData(item);
219
220 const auto already = ranges::find(data.downloading, item, ByItem);
221 if (already != end(data.downloading)) {
222 const auto document = already->object.document;
223 const auto photo = already->object.photo;
224 if (document == object.document && photo == object.photo) {
225 check(item);
226 return;
227 }
228 remove(data, already);
229 }
230
231 const auto size = object.document->size;
232 const auto path = object.document->loadingFilePath();
233 if (path.isEmpty()) {
234 return;
235 }
236
237 const auto shownExists = !data.downloading.empty()
238 && !data.downloading.front().hiddenByView;
239 data.downloading.push_back({
240 .object = object,
241 .started = computeNextStartDate(),
242 .path = path,
243 .total = size,
244 .hiddenByView = (!shownExists
245 && item->history()->owner().queryItemVisibility(item)),
246 });
247 _loading.emplace(item);
248 _loadingDocuments.emplace(object.document);
249 _loadingProgress = DownloadProgress{
250 .ready = _loadingProgress.current().ready,
251 .total = _loadingProgress.current().total + size,
252 };
253 _loadingListChanges.fire({});
254 _clearLoadingTimer.cancel();
255
256 check(item);
257}
258
259void DownloadManager::check(not_null<const HistoryItem*> item) {
260 auto &data = sessionData(item);

Callers 1

SaveAndTrackMethod · 0.80

Calls 11

loadingFilePathMethod · 0.80
frontMethod · 0.80
queryItemVisibilityMethod · 0.80
emplaceMethod · 0.80
isEmptyMethod · 0.45
emptyMethod · 0.45
ownerMethod · 0.45
historyMethod · 0.45
currentMethod · 0.45
fireMethod · 0.45
cancelMethod · 0.45

Tested by

no test coverage detected