| 73 | } |
| 74 | |
| 75 | void Ringtones::upload( |
| 76 | const QString &filename, |
| 77 | const QString &filemime, |
| 78 | const QByteArray &content) { |
| 79 | const auto ready = PrepareRingtoneDocument( |
| 80 | _api.instance().mainDcId(), |
| 81 | filename, |
| 82 | filemime, |
| 83 | content); |
| 84 | |
| 85 | const auto uploadedData = UploadedData{ filename, filemime, content }; |
| 86 | const auto fakeId = FullMsgId( |
| 87 | _session->userPeerId(), |
| 88 | _session->data().nextLocalMessageId()); |
| 89 | const auto already = ranges::find_if( |
| 90 | _uploads, |
| 91 | [&](const auto &d) { |
| 92 | return uploadedData.filemime == d.second.filemime |
| 93 | && uploadedData.filename == d.second.filename; |
| 94 | }); |
| 95 | if (already != end(_uploads)) { |
| 96 | _session->uploader().cancel(already->first); |
| 97 | _uploads.erase(already); |
| 98 | } |
| 99 | _uploads.emplace(fakeId, uploadedData); |
| 100 | _session->uploader().upload(fakeId, ready); |
| 101 | } |
| 102 | |
| 103 | void Ringtones::ready(const FullMsgId &msgId, const MTPInputFile &file) { |
| 104 | const auto maybeUploadedData = _uploads.take(msgId); |
no test coverage detected