mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Fix sending paid intro sticker.
This commit is contained in:
parent
72a35ba58b
commit
4ff4e63a11
5 changed files with 38 additions and 5 deletions
|
@ -4346,6 +4346,9 @@ void HistoryInner::refreshAboutView(bool force) {
|
||||||
_aboutView->refreshRequests() | rpl::start_with_next([=] {
|
_aboutView->refreshRequests() | rpl::start_with_next([=] {
|
||||||
updateBotInfo();
|
updateBotInfo();
|
||||||
}, _aboutView->lifetime());
|
}, _aboutView->lifetime());
|
||||||
|
_aboutView->sendIntroSticker() | rpl::start_to_stream(
|
||||||
|
_sendIntroSticker,
|
||||||
|
_aboutView->lifetime());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if (const auto user = _peer->asUser()) {
|
if (const auto user = _peer->asUser()) {
|
||||||
|
@ -4777,6 +4780,11 @@ ClickContext HistoryInner::prepareClickContext(
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auto HistoryInner::sendIntroSticker() const
|
||||||
|
-> rpl::producer<not_null<DocumentData*>> {
|
||||||
|
return _sendIntroSticker.events();
|
||||||
|
}
|
||||||
|
|
||||||
auto HistoryInner::DelegateMixin()
|
auto HistoryInner::DelegateMixin()
|
||||||
-> std::unique_ptr<HistoryMainElementDelegateMixin> {
|
-> std::unique_ptr<HistoryMainElementDelegateMixin> {
|
||||||
return std::make_unique<HistoryMainElementDelegate>();
|
return std::make_unique<HistoryMainElementDelegate>();
|
||||||
|
|
|
@ -221,6 +221,9 @@ public:
|
||||||
Qt::MouseButton button,
|
Qt::MouseButton button,
|
||||||
FullMsgId itemId) const;
|
FullMsgId itemId) const;
|
||||||
|
|
||||||
|
[[nodiscard]] auto sendIntroSticker() const
|
||||||
|
-> rpl::producer<not_null<DocumentData*>>;
|
||||||
|
|
||||||
[[nodiscard]] static auto DelegateMixin()
|
[[nodiscard]] static auto DelegateMixin()
|
||||||
-> std::unique_ptr<HistoryMainElementDelegateMixin>;
|
-> std::unique_ptr<HistoryMainElementDelegateMixin>;
|
||||||
|
|
||||||
|
@ -466,6 +469,7 @@ private:
|
||||||
std::unique_ptr<HistoryView::AboutView> _aboutView;
|
std::unique_ptr<HistoryView::AboutView> _aboutView;
|
||||||
std::unique_ptr<HistoryView::EmptyPainter> _emptyPainter;
|
std::unique_ptr<HistoryView::EmptyPainter> _emptyPainter;
|
||||||
std::unique_ptr<HistoryView::TranslateTracker> _translateTracker;
|
std::unique_ptr<HistoryView::TranslateTracker> _translateTracker;
|
||||||
|
rpl::event_stream<not_null<DocumentData*>> _sendIntroSticker;
|
||||||
|
|
||||||
mutable History *_curHistory = nullptr;
|
mutable History *_curHistory = nullptr;
|
||||||
mutable int _curBlock = 0;
|
mutable int _curBlock = 0;
|
||||||
|
|
|
@ -2525,6 +2525,12 @@ void HistoryWidget::showHistory(
|
||||||
_scroll->hide();
|
_scroll->hide();
|
||||||
_list = _scroll->setOwnedWidget(
|
_list = _scroll->setOwnedWidget(
|
||||||
object_ptr<HistoryInner>(this, _scroll, controller(), _history));
|
object_ptr<HistoryInner>(this, _scroll, controller(), _history));
|
||||||
|
_list->sendIntroSticker(
|
||||||
|
) | rpl::start_with_next([=](not_null<DocumentData*> sticker) {
|
||||||
|
sendExistingDocument(
|
||||||
|
sticker,
|
||||||
|
Api::MessageToSend(prepareSendAction({})));
|
||||||
|
}, _list->lifetime());
|
||||||
_list->show();
|
_list->show();
|
||||||
|
|
||||||
if (const auto channel = _peer->asChannel()) {
|
if (const auto channel = _peer->asChannel()) {
|
||||||
|
|
|
@ -199,7 +199,8 @@ auto GenerateChatIntro(
|
||||||
not_null<Element*> parent,
|
not_null<Element*> parent,
|
||||||
Element *replacing,
|
Element *replacing,
|
||||||
const Data::ChatIntro &data,
|
const Data::ChatIntro &data,
|
||||||
Fn<void(not_null<DocumentData*>)> helloChosen)
|
Fn<void(not_null<DocumentData*>)> helloChosen,
|
||||||
|
Fn<void(not_null<DocumentData*>)> sendIntroSticker)
|
||||||
-> Fn<void(
|
-> Fn<void(
|
||||||
not_null<MediaGeneric*>,
|
not_null<MediaGeneric*>,
|
||||||
Fn<void(std::unique_ptr<MediaGenericPart>)>)> {
|
Fn<void(std::unique_ptr<MediaGenericPart>)>)> {
|
||||||
|
@ -243,9 +244,7 @@ auto GenerateChatIntro(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const auto send = [=] {
|
const auto send = [=] {
|
||||||
Api::SendExistingDocument(Api::MessageToSend(
|
sendIntroSticker(sticker);
|
||||||
Api::SendAction(parent->history())
|
|
||||||
), sticker);
|
|
||||||
};
|
};
|
||||||
return StickerInBubblePart::Data{
|
return StickerInBubblePart::Data{
|
||||||
.sticker = sticker,
|
.sticker = sticker,
|
||||||
|
@ -598,9 +597,17 @@ void AboutView::make(Data::ChatIntro data, bool preview) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
const auto sendIntroSticker = [=](not_null<DocumentData*> sticker) {
|
||||||
|
_sendIntroSticker.fire_copy(sticker);
|
||||||
|
};
|
||||||
owned->overrideMedia(std::make_unique<HistoryView::MediaGeneric>(
|
owned->overrideMedia(std::make_unique<HistoryView::MediaGeneric>(
|
||||||
owned.get(),
|
owned.get(),
|
||||||
GenerateChatIntro(owned.get(), _item.get(), data, helloChosen),
|
GenerateChatIntro(
|
||||||
|
owned.get(),
|
||||||
|
_item.get(),
|
||||||
|
data,
|
||||||
|
helloChosen,
|
||||||
|
sendIntroSticker),
|
||||||
HistoryView::MediaGenericDescriptor{
|
HistoryView::MediaGenericDescriptor{
|
||||||
.maxWidth = st::chatIntroWidth,
|
.maxWidth = st::chatIntroWidth,
|
||||||
.serviceLink = std::make_shared<LambdaClickHandler>(handler),
|
.serviceLink = std::make_shared<LambdaClickHandler>(handler),
|
||||||
|
@ -613,6 +620,10 @@ void AboutView::make(Data::ChatIntro data, bool preview) {
|
||||||
setItem(std::move(owned), data.sticker);
|
setItem(std::move(owned), data.sticker);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rpl::producer<not_null<DocumentData*>> AboutView::sendIntroSticker() const {
|
||||||
|
return _sendIntroSticker.events();
|
||||||
|
}
|
||||||
|
|
||||||
rpl::producer<> AboutView::refreshRequests() const {
|
rpl::producer<> AboutView::refreshRequests() const {
|
||||||
return _refreshRequests.events();
|
return _refreshRequests.events();
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,8 @@ public:
|
||||||
|
|
||||||
void make(Data::ChatIntro data, bool preview = false);
|
void make(Data::ChatIntro data, bool preview = false);
|
||||||
|
|
||||||
|
[[nodiscard]] auto sendIntroSticker() const
|
||||||
|
-> rpl::producer<not_null<DocumentData*>>;
|
||||||
[[nodiscard]] rpl::producer<> refreshRequests() const;
|
[[nodiscard]] rpl::producer<> refreshRequests() const;
|
||||||
[[nodiscard]] rpl::lifetime &lifetime();
|
[[nodiscard]] rpl::lifetime &lifetime();
|
||||||
|
|
||||||
|
@ -63,6 +65,8 @@ private:
|
||||||
DocumentData *_sticker = nullptr;
|
DocumentData *_sticker = nullptr;
|
||||||
int _version = 0;
|
int _version = 0;
|
||||||
|
|
||||||
|
rpl::event_stream<not_null<DocumentData*>> _sendIntroSticker;
|
||||||
|
|
||||||
bool _commonGroupsStale = false;
|
bool _commonGroupsStale = false;
|
||||||
bool _commonGroupsRequested = false;
|
bool _commonGroupsRequested = false;
|
||||||
std::vector<not_null<PeerData*>> _commonGroups;
|
std::vector<not_null<PeerData*>> _commonGroups;
|
||||||
|
|
Loading…
Add table
Reference in a new issue