Merge tag 'v4.10.0' into dev

# Conflicts:
#	README.md
#	Telegram/Resources/winrc/Telegram.rc
#	Telegram/Resources/winrc/Updater.rc
#	Telegram/SourceFiles/apiwrap.cpp
#	Telegram/SourceFiles/core/version.h
#	Telegram/SourceFiles/data/data_stories.cpp
#	Telegram/SourceFiles/platform/win/windows_app_user_model_id.cpp
#	Telegram/lib_ui
#	snap/snapcraft.yaml
This commit is contained in:
ZavaruKitsu
2023-09-23 10:58:57 +03:00
353 changed files with 7144 additions and 3482 deletions
+26 -4
View File
@@ -919,7 +919,17 @@ not_null<PeerData*> Session::processChat(const MTPChat &data) {
| Flag::NoForwards
| Flag::JoinToWrite
| Flag::RequestToJoin
| Flag::Forum;
| Flag::Forum
| ((!minimal && !data.is_stories_hidden_min())
? Flag::StoriesHidden
: Flag());
const auto storiesState = minimal
? std::optional<Data::Stories::PeerSourceState>()
: data.is_stories_unavailable()
? Data::Stories::PeerSourceState()
: !data.vstories_max_id()
? std::optional<Data::Stories::PeerSourceState>()
: stories().peerSourceState(channel, data.vstories_max_id()->v);
const auto flagsSet = (data.is_broadcast() ? Flag::Broadcast : Flag())
| (data.is_verified() ? Flag::Verified : Flag())
| (data.is_scam() ? Flag::Scam : Flag())
@@ -945,8 +955,20 @@ not_null<PeerData*> Session::processChat(const MTPChat &data) {
| (data.is_join_request() ? Flag::RequestToJoin : Flag())
| ((data.is_forum() && data.is_megagroup())
? Flag::Forum
: Flag())
| ((!minimal
&& !data.is_stories_hidden_min()
&& data.is_stories_hidden())
? Flag::StoriesHidden
: Flag());
channel->setFlags((channel->flags() & ~flagsMask) | flagsSet);
if (!minimal && storiesState) {
result->setStoriesState(!storiesState->maxId
? UserData::StoriesState::None
: (storiesState->maxId > storiesState->readTill)
? UserData::StoriesState::HasUnread
: UserData::StoriesState::HasRead);
}
channel->setPhoto(data.vphoto());
@@ -2699,7 +2721,7 @@ void Session::checkSelfDestructItems() {
auto nextDestructIn = crl::time(0);
for (auto i = _selfDestructItems.begin(); i != _selfDestructItems.cend();) {
if (const auto item = message(*i)) {
if (auto destructIn = item->getSelfDestructIn(now)) {
if (const auto destructIn = item->getSelfDestructIn(now)) {
if (nextDestructIn > 0) {
accumulate_min(nextDestructIn, destructIn);
} else {
@@ -3425,12 +3447,12 @@ void Session::webpageApplyFields(
for (const auto &attribute : attributes->v) {
attribute.match([&](const MTPDwebPageAttributeStory &data) {
storyId = FullStoryId{
peerFromUser(data.vuser_id()),
peerFromMTP(data.vpeer()),
data.vid().v,
};
if (const auto embed = data.vstory()) {
story = stories().applyFromWebpage(
peerFromUser(data.vuser_id()),
peerFromMTP(data.vpeer()),
*embed);
} else if (const auto maybe = stories().lookup(storyId)) {
story = *maybe;