fix: translator crashes

This commit is contained in:
AlexeyZavar
2025-11-05 10:58:52 +03:00
parent aa57a17af6
commit 4a7552fdab
2 changed files with 11 additions and 5 deletions
@@ -43,12 +43,12 @@ TranslateManager::Builder::Builder(
, _toLang(to_lang) {
}
TranslateManager::Builder &TranslateManager::Builder::done(std::function < void(const Result &) > cb) {
TranslateManager::Builder &TranslateManager::Builder::done(std::function<void(const Result &)> cb) {
_done = std::move(cb);
return *this;
}
TranslateManager::Builder &TranslateManager::Builder::fail(std::function < void(const MTP::Error &) > cb) {
TranslateManager::Builder &TranslateManager::Builder::fail(std::function<void(const MTP::Error &)> cb) {
_fail = std::move(cb);
return *this;
}
@@ -242,7 +242,8 @@ bool TranslateManager::cancel(mtpRequestId requestId) {
if (it->second.cancel) {
it->second.cancel();
}
_pending.erase(it);
// already erased by `triggerFail`
// _pending.erase(it);
return true;
}
@@ -329,4 +330,4 @@ void TranslateManager::removeLeastRecentlyUsed() {
_cacheList.pop_back();
}
}
}
+6 -1
View File
@@ -230,7 +230,7 @@ void TranslateBox(
const auto send = [=](LanguageId to) {
loading->show(anim::type::instant);
translated->hide(anim::type::instant);
Ayu::Translator::TranslateManager::currentInstance()->request(
const auto reqId = Ayu::Translator::TranslateManager::currentInstance()->request(
&peer->session(),
MTP_flags(flags),
msgId ? peer->input : MTP_inputPeerEmpty(),
@@ -261,6 +261,11 @@ void TranslateBox(
showText(
Ui::Text::Italic(tr::lng_translate_box_error(tr::now)));
}).send();
box->boxClosing() | rpl::start_with_next([=]
{
Ayu::Translator::TranslateManager::currentInstance()->cancel(reqId);
}, box->lifetime());
};
state->to.value() | rpl::start_with_next(send, box->lifetime());