mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-07 23:53:58 +02:00
Show chats list badge only for non-empty calls.
This commit is contained in:
parent
fa55fd7dd7
commit
732bc38e8e
8 changed files with 38 additions and 12 deletions
|
@ -67,7 +67,7 @@ ChannelData::ChannelData(not_null<Data::Session*> owner, PeerId id)
|
||||||
mgInfo = nullptr;
|
mgInfo = nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (change.diff & MTPDchannel::Flag::f_call_active) {
|
if (change.diff & MTPDchannel::Flag::f_call_not_empty) {
|
||||||
if (const auto history = this->owner().historyLoaded(this)) {
|
if (const auto history = this->owner().historyLoaded(this)) {
|
||||||
history->updateChatListEntry();
|
history->updateChatListEntry();
|
||||||
}
|
}
|
||||||
|
@ -708,7 +708,8 @@ void ChannelData::clearCall() {
|
||||||
owner().unregisterGroupCall(_call.get());
|
owner().unregisterGroupCall(_call.get());
|
||||||
_call = nullptr;
|
_call = nullptr;
|
||||||
session().changes().peerUpdated(this, UpdateFlag::GroupCall);
|
session().changes().peerUpdated(this, UpdateFlag::GroupCall);
|
||||||
removeFlags(MTPDchannel::Flag::f_call_active);
|
removeFlags(MTPDchannel::Flag::f_call_active
|
||||||
|
| MTPDchannel::Flag::f_call_not_empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Data {
|
namespace Data {
|
||||||
|
|
|
@ -102,7 +102,7 @@ public:
|
||||||
| MTPDchannel::Flag::f_restricted
|
| MTPDchannel::Flag::f_restricted
|
||||||
| MTPDchannel::Flag::f_signatures
|
| MTPDchannel::Flag::f_signatures
|
||||||
| MTPDchannel::Flag::f_username
|
| MTPDchannel::Flag::f_username
|
||||||
| MTPDchannel::Flag::f_call_active
|
| MTPDchannel::Flag::f_call_not_empty
|
||||||
| MTPDchannel::Flag::f_slowmode_enabled;
|
| MTPDchannel::Flag::f_slowmode_enabled;
|
||||||
using Flags = Data::Flags<
|
using Flags = Data::Flags<
|
||||||
MTPDchannel::Flags,
|
MTPDchannel::Flags,
|
||||||
|
|
|
@ -85,13 +85,34 @@ void GroupCall::requestParticipants() {
|
||||||
});
|
});
|
||||||
_participantsSliceAdded.fire({});
|
_participantsSliceAdded.fire({});
|
||||||
_participantsRequestId = 0;
|
_participantsRequestId = 0;
|
||||||
|
changeChannelEmptyCallFlag();
|
||||||
}).fail([=](const RPCError &error) {
|
}).fail([=](const RPCError &error) {
|
||||||
_fullCount = _participants.size();
|
_fullCount = _participants.size();
|
||||||
_allReceived = true;
|
_allReceived = true;
|
||||||
_participantsRequestId = 0;
|
_participantsRequestId = 0;
|
||||||
|
changeChannelEmptyCallFlag();
|
||||||
}).send();
|
}).send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GroupCall::changeChannelEmptyCallFlag() {
|
||||||
|
constexpr auto flag = MTPDchannel::Flag::f_call_not_empty;
|
||||||
|
if (_channel->call() != this) {
|
||||||
|
return;
|
||||||
|
} else if (fullCount() > 0) {
|
||||||
|
if (!(_channel->flags() & flag)) {
|
||||||
|
_channel->addFlags(flag);
|
||||||
|
_channel->session().changes().peerUpdated(
|
||||||
|
_channel,
|
||||||
|
Data::PeerUpdate::Flag::GroupCall);
|
||||||
|
}
|
||||||
|
} else if (_channel->flags() & flag) {
|
||||||
|
_channel->removeFlags(flag);
|
||||||
|
_channel->session().changes().peerUpdated(
|
||||||
|
_channel,
|
||||||
|
Data::PeerUpdate::Flag::GroupCall);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int GroupCall::fullCount() const {
|
int GroupCall::fullCount() const {
|
||||||
return _fullCount.current();
|
return _fullCount.current();
|
||||||
}
|
}
|
||||||
|
@ -138,6 +159,7 @@ void GroupCall::applyCall(const MTPGroupCall &call, bool force) {
|
||||||
_canChangeJoinMuted = data.is_can_change_join_muted();
|
_canChangeJoinMuted = data.is_can_change_join_muted();
|
||||||
_version = data.vversion().v;
|
_version = data.vversion().v;
|
||||||
_fullCount = data.vparticipants_count().v;
|
_fullCount = data.vparticipants_count().v;
|
||||||
|
changeChannelEmptyCallFlag();
|
||||||
}, [&](const MTPDgroupCallDiscarded &data) {
|
}, [&](const MTPDgroupCallDiscarded &data) {
|
||||||
const auto id = _id;
|
const auto id = _id;
|
||||||
const auto channel = _channel;
|
const auto channel = _channel;
|
||||||
|
@ -240,6 +262,7 @@ void GroupCall::applyParticipantsSlice(
|
||||||
}
|
}
|
||||||
if (sliceSource == ApplySliceSource::UpdateReceived) {
|
if (sliceSource == ApplySliceSource::UpdateReceived) {
|
||||||
_fullCount = changedCount;
|
_fullCount = changedCount;
|
||||||
|
changeChannelEmptyCallFlag();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,7 @@ private:
|
||||||
void applyParticipantsMutes(
|
void applyParticipantsMutes(
|
||||||
const MTPDupdateGroupCallParticipants &update);
|
const MTPDupdateGroupCallParticipants &update);
|
||||||
void requestUnknownSsrcs();
|
void requestUnknownSsrcs();
|
||||||
|
void changeChannelEmptyCallFlag();
|
||||||
|
|
||||||
const not_null<ChannelData*> _channel;
|
const not_null<ChannelData*> _channel;
|
||||||
const uint64 _id = 0;
|
const uint64 _id = 0;
|
||||||
|
|
|
@ -443,7 +443,7 @@ bool IsUserOnline(not_null<UserData*> user) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ChannelHasActiveCall(not_null<ChannelData*> channel) {
|
bool ChannelHasActiveCall(not_null<ChannelData*> channel) {
|
||||||
return (channel->flags() & MTPDchannel::Flag::f_call_active);
|
return (channel->flags() & MTPDchannel::Flag::f_call_not_empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Data
|
} // namespace Data
|
||||||
|
|
|
@ -686,7 +686,11 @@ not_null<PeerData*> Session::processChat(const MTPChat &data) {
|
||||||
} else {
|
} else {
|
||||||
channel->setUnavailableReasons({});
|
channel->setUnavailableReasons({});
|
||||||
}
|
}
|
||||||
channel->setFlags(data.vflags().v);
|
const auto callFlag = MTPDchannel::Flag::f_call_not_empty;
|
||||||
|
const auto callNotEmpty = (data.vflags().v & callFlag)
|
||||||
|
|| (channel->call() && channel->call()->fullCount() > 0);
|
||||||
|
channel->setFlags(data.vflags().v
|
||||||
|
| (callNotEmpty ? callFlag : MTPDchannel::Flag(0)));
|
||||||
//if (const auto feedId = data.vfeed_id()) { // #feed
|
//if (const auto feedId = data.vfeed_id()) { // #feed
|
||||||
// channel->setFeed(feed(feedId->v));
|
// channel->setFeed(feed(feedId->v));
|
||||||
//} else {
|
//} else {
|
||||||
|
|
|
@ -3010,9 +3010,7 @@ void InnerWidget::userOnlineUpdated(not_null<PeerData*> peer) {
|
||||||
if (!history) {
|
if (!history) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updateRowCornerStatusShown(
|
updateRowCornerStatusShown(history, Data::IsUserOnline(user));
|
||||||
history,
|
|
||||||
Data::OnlineTextActive(user, base::unixtime::now()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void InnerWidget::groupHasCallUpdated(not_null<PeerData*> peer) {
|
void InnerWidget::groupHasCallUpdated(not_null<PeerData*> peer) {
|
||||||
|
@ -3024,9 +3022,7 @@ void InnerWidget::groupHasCallUpdated(not_null<PeerData*> peer) {
|
||||||
if (!history) {
|
if (!history) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
updateRowCornerStatusShown(
|
updateRowCornerStatusShown(history, Data::ChannelHasActiveCall(group));
|
||||||
history,
|
|
||||||
group->flags() & MTPDchannel::Flag::f_call_active);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void InnerWidget::updateRowCornerStatusShown(
|
void InnerWidget::updateRowCornerStatusShown(
|
||||||
|
|
|
@ -238,13 +238,13 @@ void BasicRow::paintUserpic(
|
||||||
if (historyForCornerBadge->peer->isUser()) {
|
if (historyForCornerBadge->peer->isUser()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
p.setOpacity(shown);
|
|
||||||
const auto actionPainter = historyForCornerBadge->sendActionPainter();
|
const auto actionPainter = historyForCornerBadge->sendActionPainter();
|
||||||
const auto bg = active
|
const auto bg = active
|
||||||
? st::dialogsBgActive
|
? st::dialogsBgActive
|
||||||
: st::dialogsBg;
|
: st::dialogsBg;
|
||||||
const auto size = st::dialogsCallBadgeSize;
|
const auto size = st::dialogsCallBadgeSize;
|
||||||
const auto skip = st::dialogsCallBadgeSkip;
|
const auto skip = st::dialogsCallBadgeSkip;
|
||||||
|
p.setOpacity(shown);
|
||||||
p.translate(st::dialogsPadding);
|
p.translate(st::dialogsPadding);
|
||||||
actionPainter->paintSpeaking(
|
actionPainter->paintSpeaking(
|
||||||
p,
|
p,
|
||||||
|
@ -254,6 +254,7 @@ void BasicRow::paintUserpic(
|
||||||
bg,
|
bg,
|
||||||
now);
|
now);
|
||||||
p.translate(-st::dialogsPadding);
|
p.translate(-st::dialogsPadding);
|
||||||
|
p.setOpacity(1.);
|
||||||
}
|
}
|
||||||
|
|
||||||
Row::Row(Key key, int pos) : _id(key), _pos(pos) {
|
Row::Row(Key key, int pos) : _id(key), _pos(pos) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue