Skip to content

Commit

Permalink
wip build
Browse files Browse the repository at this point in the history
  • Loading branch information
john-preston committed Sep 25, 2024
1 parent 51e8cab commit 578974b
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 22 deletions.
71 changes: 50 additions & 21 deletions Telegram/SourceFiles/api/api_updates.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2881,6 +2881,10 @@ void Updates::applyUpdate(const TLupdate &update) {
owner.applyLastMessage(data);
}, [&](const TLDupdateChatPosition &data) {
owner.applyDialogPosition(data);
}, [&](const TLDupdateChatAddedToList &data) {
// ?? can be in chat list and without position in that list
}, [&](const TLDupdateChatRemovedFromList &data) {
// ?? can be not in chat list and with a position in that list
}, [&](const TLDupdateChatMessageSender &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
if (const auto peer = owner.peerLoaded(peerId)) {
Expand Down Expand Up @@ -2915,6 +2919,13 @@ void Updates::applyUpdate(const TLupdate &update) {
if (const auto history = owner.historyLoaded(peerId)) {
history->setUnreadMark(data.vis_marked_as_unread().v);
}
}, [&](const TLDupdateChatViewAsTopics &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
if (const auto peer = owner.peerLoaded(peerId)) {
if (const auto channel = peer->asChannel()) {
channel->setViewAsMessagesFlag(!data.vview_as_topics().v);
}
}
}, [&](const TLDupdateChatBlockList &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
if (const auto peer = session().data().peerLoaded(peerId)) {
Expand Down Expand Up @@ -2986,6 +2997,8 @@ void Updates::applyUpdate(const TLupdate &update) {
}
}, [&](const TLDupdateActiveEmojiReactions &data) {
owner.reactions().refreshActive(data);
}, [&](const TLDupdateAvailableMessageEffects &data) {
owner.reactions().refreshEffects(data);
}, [&](const TLDupdateDefaultReactionType &data) {
owner.reactions().refreshFavorite(data);
}, [&](const TLDupdateChatNotificationSettings &data) {
Expand All @@ -3005,6 +3018,7 @@ void Updates::applyUpdate(const TLupdate &update) {
return Data::DefaultNotify::Broadcast;
});
owner.notifySettings().apply(type, data.vnotification_settings());
}, [&](const TLDupdateReactionNotificationSettings &data) {
}, [&](const TLDupdateChatMessageAutoDeleteTime &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
if (const auto peer = owner.peerLoaded(peerId)) {
Expand All @@ -3015,6 +3029,11 @@ void Updates::applyUpdate(const TLupdate &update) {
if (const auto peer = owner.peerLoaded(peerId)) {
peer->setActionBar(data.vaction_bar());
}
}, [&](const TLDupdateChatBusinessBotManageBar &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
if (const auto peer = owner.peerLoaded(peerId)) {
peer->updateBusinessBot(data.vbusiness_bot_manage_bar());
}
}, [&](const TLDupdateChatBackground &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
if (const auto peer = owner.peerLoaded(peerId)) {
Expand Down Expand Up @@ -3055,6 +3074,11 @@ void Updates::applyUpdate(const TLupdate &update) {
history->applyPosition(position.data());
}
}
}, [&](const TLDupdateChatEmojiStatus &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
if (const auto peer = owner.peerLoaded(peerId)) {
peer->setEmojiStatus(data.vemoji_status());
}
}, [&](const TLDupdateChatFolders &data) {
owner.chatsFilters().apply(data);
}, [&](const TLDupdateChatOnlineMemberCount &data) {
Expand Down Expand Up @@ -3168,11 +3192,12 @@ void Updates::applyUpdate(const TLupdate &update) {
session().data().stickers().apply(data);
}, [&](const TLDupdateSavedNotificationSounds &data) {
session().api().ringtones().applyUpdate();
}, [&](const TLDupdateSelectedBackground &data) {
}, [&](const TLDupdateDefaultBackground &data) {
}, [&](const TLDupdateChatThemes &data) {
session().data().cloudThemes().applyUpdate(data);
}, [&](const TLDupdateAccentColors &data) {
session().applyAccentColors(data);
}, [&](const TLDupdateProfileAccentColors &data) {
}, [&](const TLDupdateLanguagePackStrings &data) {
Lang::CurrentCloudManager().apply(data);
}, [&](const TLDupdateTermsOfService &data) {
Expand Down Expand Up @@ -3238,26 +3263,6 @@ void Updates::applyUpdate(const TLupdate &update) {
}, [&](const TLDupdateFileAddedToDownloads &data) {
}, [&](const TLDupdateFileDownload &data) {
}, [&](const TLDupdateFileRemovedFromDownloads &data) {
}, [&](const TLDupdateAddChatMembersPrivacyForbidden &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
if (const auto peer = owner.peerLoaded(peerId)) {
auto users = std::vector<not_null<UserData*>>();
for (const auto &id : data.vuser_ids().v) {
if (const auto user = owner.userLoaded(UserId(id.v))) {
users.push_back(user);
}
}
if (const auto window = Core::App().windowFor(peer)) {
if (const auto controller = window->sessionController()) {
if (&controller->session() == &peer->session()) {
ChatInviteForbidden(
window->uiShow(),
peer,
std::move(users));
}
}
}
}
}, [&](const TLDupdateAutosaveSettings &data) {
}, [&](const TLDupdateForumTopicInfo &data) {
const auto peerId = peerFromTdbChat(data.vchat_id());
Expand All @@ -3267,6 +3272,21 @@ void Updates::applyUpdate(const TLupdate &update) {
topic->applyInfo(data.vinfo());
}
}
}, [&](const TLDupdateOwnedStarCount &data) {
session().setCredits(data.vstar_count().v);
}, [&](const TLDupdateSpeechRecognitionTrial &data) {
session().api().transcribes().apply(data);
}, [&](const TLDupdateSpeedLimitNotification &data) {
if (const auto window = Core::App().activeWindow()) {
if (const auto controller = window->sessionController()) {
if (&controller->session() == &session()) {
controller->content()->showNonPremiumLimitToast(
!data.vis_upload().v);
}
}
}
}, [&](const TLDupdateContactCloseBirthdays &data) {

}, [&](const TLDupdateStory &data) {
owner.stories().apply(data);
}, [&](const TLDupdateStoryDeleted &data) {
Expand All @@ -3278,6 +3298,13 @@ void Updates::applyUpdate(const TLupdate &update) {
}, [&](const TLDupdateStoryStealthMode &data) {
owner.stories().apply(data);

}, [&](const TLDupdateSavedMessagesTags &data) {
owner.reactions().refreshMyTags(data);
}, [&](const TLDupdateSavedMessagesTopic &data) {
owner.savedMessages().apply(data);
}, [&](const TLDupdateSavedMessagesTopicCount &data) {
owner.savedMessages().apply(data);

}, [&](const TLDupdateQuickReplyShortcut &data) {
owner.shortcutMessages().apply(data);
}, [&](const TLDupdateQuickReplyShortcutDeleted &data) {
Expand All @@ -3290,6 +3317,8 @@ void Updates::applyUpdate(const TLupdate &update) {
// Updates below are handled in a different place.
}, [&](const TLDupdateConnectionState &data) {
}, [&](const TLDupdateServiceNotification &data) {
}, [&](const TLDupdateChatRevenueAmount &data) {
}, [&](const TLDupdateStarRevenueStatus &data) {

// Updates below are not relevant.
}, [&](const TLDupdateStorySendSucceeded &data) {
Expand Down
34 changes: 33 additions & 1 deletion Telegram/SourceFiles/data/data_peer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -775,6 +775,29 @@ void PeerData::checkFolder(FolderId folderId) {
}
#endif

void PeerData::updateBusinessBot(const TLbusinessBotManageBar *bar) {
if (!bar) {
clearBusinessBot();
return;
}
const auto &data = bar->data();
if (!_barDetails) {
_barDetails = std::make_unique<PeerBarDetails>();
}
_barDetails->businessBot = _owner->user(data.vbot_user_id().v);
_barDetails->businessBotManageUrl = data.vmanage_url().v;
if (const auto settings = barSettings()) {
setBarSettings(*settings
| PeerBarSetting::HasBusinessBot
| (data.vis_bot_paused().v
? PeerBarSetting::BusinessBotPaused
: PeerBarSetting(0))
| (data.vcan_bot_reply().v
? PeerBarSetting::BusinessBotCanReply
: PeerBarSetting(0)));
}
}

void PeerData::clearBusinessBot() {
if (const auto details = _barDetails.get()) {
if (details->requestChatDate) {
Expand Down Expand Up @@ -950,7 +973,6 @@ bool PeerData::changeBackgroundEmojiId(
? cloudBackgroundEmoji->v
: DocumentId());
}
#endif

bool PeerData::changeColor(
const tl::conditional<MTPPeerColor> &cloudColor) {
Expand All @@ -962,6 +984,7 @@ bool PeerData::changeColor(
: DocumentId());
return changed1 || changed2;
}
#endif

void PeerData::fillNames() {
_nameWords.clear();
Expand Down Expand Up @@ -1290,6 +1313,12 @@ void PeerData::setEmojiStatus(const MTPEmojiStatus &status) {
}
#endif

void PeerData::setEmojiStatus(const TLemojiStatus *status) {
setEmojiStatus(
status ? status->data().vcustom_emoji_id().v : 0,
status ? status->data().vexpiration_date().v : 0);
}

void PeerData::setEmojiStatus(DocumentId emojiStatusId, TimeId until) {
if (_emojiStatusId != emojiStatusId) {
_emojiStatusId = emojiStatusId;
Expand Down Expand Up @@ -1379,7 +1408,10 @@ bool PeerData::isRepliesChat() const {
if (id != kTestId && id != kProductionId) {
return false;
}
#if 0 // mtp
return ((session().mtp().environment() == MTP::Environment::Production)
#endif
return (!session().isTestMode()
? kProductionId
: kTestId) == id;
}
Expand Down
6 changes: 6 additions & 0 deletions Telegram/SourceFiles/data/data_peer.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ class TLchatNotificationSettings;
class TLchatActionBar;
class TLfile;
class TLchatAvailableReactions;
class TLbusinessBotManageBar;
class TLemojiStatus;
} // namespace Tdb

namespace Data {
Expand Down Expand Up @@ -213,7 +215,10 @@ class PeerData {
[[nodiscard]] DocumentId backgroundEmojiId() const;
bool changeBackgroundEmojiId(DocumentId id);

#if 0 // mtp
void setEmojiStatus(const MTPEmojiStatus &status);
#endif
void setEmojiStatus(const Tdb::TLemojiStatus *status);
void setEmojiStatus(DocumentId emojiStatusId, TimeId until = 0);
[[nodiscard]] DocumentId emojiStatusId() const;

Expand Down Expand Up @@ -420,6 +425,7 @@ class PeerData {
[[nodiscard]] UserData *businessBot() const;
[[nodiscard]] QString businessBotManageUrl() const;
void clearBusinessBot();
void updateBusinessBot(const Tdb::TLbusinessBotManageBar *bar);

enum class TranslationFlag : uchar {
Unknown,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,14 @@ For license and copyright information please follow this link:
#include <QtSvg/QSvgRenderer>
#include <QtWidgets/QApplication>

#include "tdb/tdb_account.h"
#include "tdb/tdb_tl_scheme.h"

namespace Info::ChannelEarn {
namespace {

using namespace Tdb;

using EarnInt = Data::EarnInt;

[[nodiscard]] bool WithdrawalEnabled(not_null<Main::Session*> session) {
Expand Down Expand Up @@ -299,6 +304,41 @@ void InnerWidget::load() {
state->apiLifetime.destroy();
state->apiCreditsLifetime.destroy();

const auto peerId = _peer->id;
_peer->session().tdb().updates(
) | rpl::start_with_next([=](const TLupdate &update) {
update.match([&](const TLDupdateStarRevenueStatus &data) {
if (peerId != peerFromSender(data.vowner_id())) {
return;
}
const auto &status = data.vstatus().data();
auto &e = _state.creditsEarn;
e.currentBalance = status.vcurrent_count().v;
e.availableBalance = status.vavailable_count().v;
e.overallRevenue = status.vtotal_count().v;
e.isWithdrawalEnabled = status.vwithdrawal_enabled().v;
e.nextWithdrawalAt = (status.vwithdrawal_enabled().v
? QDateTime::currentDateTime().addSecs(
status.vnext_withdrawal_in().v)
: QDateTime()),
state->apiCreditsHistory.request({}, [=](
const Data::CreditsStatusSlice &data) {
_state.creditsStatusSlice = data;
_stateUpdated.fire({});
});
}, [&](const TLDupdateChatRevenueAmount &data) {
if (peerId != peerFromTdbChat(data.vchat_id())) {
return;
}
const auto &amount = data.vrevenue_amount().data();
auto &e = _state.currencyEarn;
e.currentBalance = amount.vbalance_amount().v;
e.availableBalance = amount.vavailable_amount().v;
e.overallRevenue = amount.vtotal_amount().v;
_stateUpdated.fire({});
}, [](const auto &) {});
}, lifetime());
#if 0 // mtp
_peer->session().account().mtpUpdates(
) | rpl::start_with_next([=, peerId = _peer->id](
const MTPUpdates &updates) {
Expand Down Expand Up @@ -350,6 +390,7 @@ void InnerWidget::load() {
}
});
}, lifetime());
#endif
};

_showFinished.events(
Expand All @@ -360,10 +401,12 @@ void InnerWidget::load() {
state->apiCreditsHistory.request({}, [=](
const Data::CreditsStatusSlice &data) {
_state.creditsStatusSlice = data;
#if 0 // mtp
::Api::PremiumPeerBot(
&_peer->session()
) | rpl::start_with_next([=](not_null<PeerData*> bot) {
_state.premiumBotId = bot->id;
#endif
state->apiCredits.request(
) | rpl::start_with_error_done([=](const QString &error) {
if (canViewCredits) {
Expand All @@ -376,8 +419,10 @@ void InnerWidget::load() {
_state.creditsEarn = state->apiCredits.data();
finish();
}, state->apiCreditsLifetime);
#if 0 // mtp
state->apiPremiumBotLifetime.destroy();
}, state->apiPremiumBotLifetime);
#endif
});
}, state->apiLifetime);
}, lifetime());
Expand Down
6 changes: 6 additions & 0 deletions Telegram/SourceFiles/window/window_session_controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1606,6 +1606,7 @@ SessionController::SessionController(
}));
}, _lifetime);

#if 0 // mtp
session->downloader().nonPremiumDelays(
) | rpl::start_with_next([=](DocumentId id) {
checkNonPremiumLimitToastDownload(id);
Expand All @@ -1615,6 +1616,7 @@ SessionController::SessionController(
) | rpl::start_with_next([=](FullMsgId id) {
checkNonPremiumLimitToastUpload(id);
}, _lifetime);
#endif

session->addWindow(this);

Expand All @@ -1624,6 +1626,7 @@ SessionController::SessionController(
});
}

#if 0 // mtp
bool SessionController::skipNonPremiumLimitToast(bool download) const {
if (session().premium()) {
return true;
Expand Down Expand Up @@ -1667,6 +1670,7 @@ void SessionController::checkNonPremiumLimitToastUpload(FullMsgId id) {
session().saveSettingsDelayed();
}
}
#endif

void SessionController::suggestArchiveAndMute() {
const auto weak = base::make_weak(this);
Expand Down Expand Up @@ -1988,7 +1992,9 @@ void SessionController::setupPremiumToast() {
}) | rpl::distinct_until_changed() | rpl::skip(
1
) | rpl::filter([=](bool premium) {
#if 0 // mtp
session().mtp().requestConfig();
#endif
return premium;
}) | rpl::start_with_next([=] {
MainWindowShow(this).showToast({
Expand Down

0 comments on commit 578974b

Please sign in to comment.