2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-05 09:05:14 +00:00

Update API scheme to layer 93. Broken.

This commit is contained in:
John Preston
2019-01-03 18:39:19 +04:00
parent 47edb71a68
commit d2d6b319b6
38 changed files with 486 additions and 463 deletions

View File

@@ -156,7 +156,8 @@ namespace App {
case mtpc_chatParticipants: {
const auto &d(p.c_chatParticipants());
chat = App::chat(d.vchat_id.v);
auto canEdit = chat->canEdit();
// #TODO groups
auto canEdit = chat->canEditInformation();
if (!requestBotInfos || chat->version <= d.vversion.v) { // !requestBotInfos is true on getFullChat result
chat->version = d.vversion.v;
auto &v = d.vparticipants.v;
@@ -166,7 +167,8 @@ namespace App {
: (chat->participants.begin()->second + 1);
chat->invitedByMe.clear();
chat->admins.clear();
chat->removeFlags(MTPDchat::Flag::f_admin);
// #TODO groups
//chat->removeFlags(MTPDchat::Flag::f_admin);
for (auto i = v.cbegin(), e = v.cend(); i != e; ++i) {
int32 uid = 0, inviter = 0;
switch (i->type()) {
@@ -197,7 +199,8 @@ namespace App {
if (i->type() == mtpc_chatParticipantAdmin) {
chat->admins.insert(user);
if (user->isSelf()) {
chat->addFlags(MTPDchat::Flag::f_admin);
// #TODO groups
// chat->addFlags(MTPDchat::Flag::f_admin);
}
}
} else {
@@ -232,7 +235,8 @@ namespace App {
}
}
}
if (canEdit != chat->canEdit()) {
// #TODO groups
if (canEdit != chat->canEditInformation()) {
Notify::peerUpdatedDelayed(chat, Notify::PeerUpdate::Flag::ChatCanEdit);
}
} break;
@@ -284,7 +288,8 @@ namespace App {
Auth().api().requestPeer(chat);
} else if (chat->version <= d.vversion.v && chat->count > 0) {
chat->version = d.vversion.v;
auto canEdit = chat->canEdit();
// #TODO groups
auto canEdit = chat->canEditInformation();
const auto user = App::userLoaded(d.vuser_id.v);
if (user) {
if (chat->participants.empty()) {
@@ -299,7 +304,8 @@ namespace App {
chat->invitedByMe.remove(user);
chat->admins.remove(user);
if (user->isSelf()) {
chat->removeFlags(MTPDchat::Flag::f_admin);
// #TODO groups
// chat->removeFlags(MTPDchat::Flag::f_admin);
}
History *h = App::historyLoaded(chat->id);
@@ -325,39 +331,14 @@ namespace App {
chat->invalidateParticipants();
chat->count--;
}
if (canEdit != chat->canEdit()) {
// #TODO groups
if (canEdit != chat->canEditInformation()) {
Notify::peerUpdatedDelayed(chat, Notify::PeerUpdate::Flag::ChatCanEdit);
}
Notify::peerUpdatedDelayed(chat, Notify::PeerUpdate::Flag::MembersChanged);
}
}
void feedChatAdmins(const MTPDupdateChatAdmins &d) {
auto chat = App::chat(d.vchat_id.v);
if (chat->version <= d.vversion.v) {
auto wasCanEdit = chat->canEdit();
auto badVersion = (chat->version + 1 < d.vversion.v);
chat->version = d.vversion.v;
if (mtpIsTrue(d.venabled)) {
chat->addFlags(MTPDchat::Flag::f_admins_enabled);
} else {
chat->removeFlags(MTPDchat::Flag::f_admins_enabled);
}
if (badVersion || mtpIsTrue(d.venabled)) {
chat->invalidateParticipants();
Auth().api().requestPeer(chat);
}
if (wasCanEdit != chat->canEdit()) {
Notify::peerUpdatedDelayed(
chat,
Notify::PeerUpdate::Flag::ChatCanEdit);
}
Notify::peerUpdatedDelayed(
chat,
Notify::PeerUpdate::Flag::AdminsChanged);
}
}
void feedParticipantAdmin(const MTPDupdateChatParticipantAdmin &d) {
ChatData *chat = App::chat(d.vchat_id.v);
if (chat->version + 1 < d.vversion.v) {
@@ -366,12 +347,14 @@ namespace App {
Auth().api().requestPeer(chat);
} else if (chat->version <= d.vversion.v && chat->count > 0) {
chat->version = d.vversion.v;
auto canEdit = chat->canEdit();
// #TODO groups
auto canEdit = chat->canEditInformation();
UserData *user = App::userLoaded(d.vuser_id.v);
if (user) {
if (mtpIsTrue(d.vis_admin)) {
if (user->isSelf()) {
chat->addFlags(MTPDchat::Flag::f_admin);
// #TODO groups
// chat->addFlags(MTPDchat::Flag::f_admin);
}
if (chat->noParticipantInfo()) {
Auth().api().requestFullPeer(chat);
@@ -380,14 +363,15 @@ namespace App {
}
} else {
if (user->isSelf()) {
chat->removeFlags(MTPDchat::Flag::f_admin);
// #TODO groups
//chat->removeFlags(MTPDchat::Flag::f_admin);
}
chat->admins.remove(user);
}
} else {
chat->invalidateParticipants();
}
if (canEdit != chat->canEdit()) {
if (canEdit != chat->canEditInformation()) {
Notify::peerUpdatedDelayed(chat, Notify::PeerUpdate::Flag::ChatCanEdit);
}
Notify::peerUpdatedDelayed(chat, Notify::PeerUpdate::Flag::AdminsChanged);