Fix local folders exceptions

This commit is contained in:
Eric Kotato 2020-12-29 01:37:48 +03:00
parent 31fd8f3d55
commit b1277c3d59
3 changed files with 9 additions and 45 deletions

View file

@ -68,14 +68,12 @@ ChatFilter ChatFilter::local(
if (filterPeer.type == LocalFolder::Peer::Type::User) { if (filterPeer.type == LocalFolder::Peer::Type::User) {
const auto user = owner->user(filterPeer.id); const auto user = owner->user(filterPeer.id);
user->setAccessHash(filterPeer.accessHash);
peer = (PeerData *)user; peer = (PeerData *)user;
} else if (filterPeer.type == LocalFolder::Peer::Type::Chat) { } else if (filterPeer.type == LocalFolder::Peer::Type::Chat) {
const auto chat = owner->chat(filterPeer.id); const auto chat = owner->chat(filterPeer.id);
peer = (PeerData *)chat; peer = (PeerData *)chat;
} else if (filterPeer.type == LocalFolder::Peer::Type::Channel) { } else if (filterPeer.type == LocalFolder::Peer::Type::Channel) {
const auto channel = owner->channel(filterPeer.id); const auto channel = owner->channel(filterPeer.id);
channel->setAccessHash(filterPeer.accessHash);
peer = (PeerData *)channel; peer = (PeerData *)channel;
} }
return peer ? owner->history(peer).get() : nullptr; return peer ? owner->history(peer).get() : nullptr;
@ -233,8 +231,7 @@ LocalFolder ChatFilter::toLocal(int cloudOrder, FilterId replaceId) const {
: history->peer->isChat() : history->peer->isChat()
? LocalFolder::Peer::Type::Chat ? LocalFolder::Peer::Type::Chat
: LocalFolder::Peer::Type::User, : LocalFolder::Peer::Type::User,
.id = peerToBareInt(peer->id), .id = peerToBareInt(peer->id)
.accessHash = hash
}); });
always.remove(history); always.remove(history);
} }
@ -254,8 +251,7 @@ LocalFolder ChatFilter::toLocal(int cloudOrder, FilterId replaceId) const {
: history->peer->isChat() : history->peer->isChat()
? LocalFolder::Peer::Type::Chat ? LocalFolder::Peer::Type::Chat
: LocalFolder::Peer::Type::User, : LocalFolder::Peer::Type::User,
.id = peerToBareInt(peer->id), .id = peerToBareInt(peer->id)
.accessHash = hash
}); });
} }
auto never = std::vector<LocalFolder::Peer>(); auto never = std::vector<LocalFolder::Peer>();
@ -274,8 +270,7 @@ LocalFolder ChatFilter::toLocal(int cloudOrder, FilterId replaceId) const {
: history->peer->isChat() : history->peer->isChat()
? LocalFolder::Peer::Type::Chat ? LocalFolder::Peer::Type::Chat
: LocalFolder::Peer::Type::User, : LocalFolder::Peer::Type::User,
.id = peerToBareInt(peer->id), .id = peerToBareInt(peer->id)
.accessHash = hash
}); });
} }
const auto &session = App::main()->session(); const auto &session = App::main()->session();

View file

@ -328,9 +328,6 @@ QByteArray GenerateSettingsJson(bool areDefault = false) {
auto peerObj = QJsonObject(); auto peerObj = QJsonObject();
peerObj.insert(qsl("type"), peerTypeToStr(peer.type)); peerObj.insert(qsl("type"), peerTypeToStr(peer.type));
peerObj.insert(qsl("id"), peer.id); peerObj.insert(qsl("id"), peer.id);
if (peer.accessHash != 0) {
peerObj.insert(qsl("hash"), QString::number(peer.accessHash));
}
folderNever << peerObj; folderNever << peerObj;
} }
folderObject.insert(qsl("never"), folderNever); folderObject.insert(qsl("never"), folderNever);
@ -340,9 +337,6 @@ QByteArray GenerateSettingsJson(bool areDefault = false) {
auto peerObj = QJsonObject(); auto peerObj = QJsonObject();
peerObj.insert(qsl("type"), peerTypeToStr(peer.type)); peerObj.insert(qsl("type"), peerTypeToStr(peer.type));
peerObj.insert(qsl("id"), peer.id); peerObj.insert(qsl("id"), peer.id);
if (peer.accessHash != 0) {
peerObj.insert(qsl("hash"), QString::number(peer.accessHash));
}
folderPinned << peerObj; folderPinned << peerObj;
} }
folderObject.insert(qsl("pinned"), folderPinned); folderObject.insert(qsl("pinned"), folderPinned);
@ -352,9 +346,6 @@ QByteArray GenerateSettingsJson(bool areDefault = false) {
auto peerObj = QJsonObject(); auto peerObj = QJsonObject();
peerObj.insert(qsl("type"), peerTypeToStr(peer.type)); peerObj.insert(qsl("type"), peerTypeToStr(peer.type));
peerObj.insert(qsl("id"), peer.id); peerObj.insert(qsl("id"), peer.id);
if (peer.accessHash != 0) {
peerObj.insert(qsl("hash"), QString::number(peer.accessHash));
}
folderAlways << peerObj; folderAlways << peerObj;
} }
folderObject.insert(qsl("always"), folderAlways); folderObject.insert(qsl("always"), folderAlways);
@ -806,9 +797,9 @@ bool Manager::readCustomFile() {
} }
auto isPeerTypeRead = ReadStringOption(peer, "type", [&](auto type) { auto isPeerTypeRead = ReadStringOption(peer, "type", [&](auto type) {
peerStruct.type = QString::compare(type.toLower(), "channel") peerStruct.type = (QString::compare(type.toLower(), "channel") == 0)
? LocalFolder::Peer::Type::Channel ? LocalFolder::Peer::Type::Channel
: QString::compare(type.toLower(), "chat") : (QString::compare(type.toLower(), "chat") == 0)
? LocalFolder::Peer::Type::Chat ? LocalFolder::Peer::Type::Chat
: LocalFolder::Peer::Type::User; : LocalFolder::Peer::Type::User;
}); });
@ -817,13 +808,6 @@ bool Manager::readCustomFile() {
peerStruct.type = LocalFolder::Peer::Type::User; peerStruct.type = LocalFolder::Peer::Type::User;
} }
ReadStringOption(peer, "hash", [&](auto hashString) {
const auto hash = hashString.toULongLong();
if (hash) {
peerStruct.accessHash = hash;
}
});
folderStruct.never.push_back(peerStruct); folderStruct.never.push_back(peerStruct);
} }
}); });
@ -846,9 +830,9 @@ bool Manager::readCustomFile() {
} }
auto isPeerTypeRead = ReadStringOption(peer, "type", [&](auto type) { auto isPeerTypeRead = ReadStringOption(peer, "type", [&](auto type) {
peerStruct.type = QString::compare(type.toLower(), "channel") peerStruct.type = (QString::compare(type.toLower(), "channel") == 0)
? LocalFolder::Peer::Type::Channel ? LocalFolder::Peer::Type::Channel
: QString::compare(type.toLower(), "chat") : (QString::compare(type.toLower(), "chat") == 0)
? LocalFolder::Peer::Type::Chat ? LocalFolder::Peer::Type::Chat
: LocalFolder::Peer::Type::User; : LocalFolder::Peer::Type::User;
}); });
@ -857,13 +841,6 @@ bool Manager::readCustomFile() {
peerStruct.type = LocalFolder::Peer::Type::User; peerStruct.type = LocalFolder::Peer::Type::User;
} }
ReadStringOption(peer, "hash", [&](auto hashString) {
const auto hash = hashString.toULongLong();
if (hash) {
peerStruct.accessHash = hash;
}
});
folderStruct.pinned.push_back(peerStruct); folderStruct.pinned.push_back(peerStruct);
} }
}); });
@ -886,9 +863,9 @@ bool Manager::readCustomFile() {
} }
auto isPeerTypeRead = ReadStringOption(peer, "type", [&](auto type) { auto isPeerTypeRead = ReadStringOption(peer, "type", [&](auto type) {
peerStruct.type = QString::compare(type.toLower(), "channel") peerStruct.type = (QString::compare(type.toLower(), "channel") == 0)
? LocalFolder::Peer::Type::Channel ? LocalFolder::Peer::Type::Channel
: QString::compare(type.toLower(), "chat") : (QString::compare(type.toLower(), "chat") == 0)
? LocalFolder::Peer::Type::Chat ? LocalFolder::Peer::Type::Chat
: LocalFolder::Peer::Type::User; : LocalFolder::Peer::Type::User;
}); });
@ -897,13 +874,6 @@ bool Manager::readCustomFile() {
peerStruct.type = LocalFolder::Peer::Type::User; peerStruct.type = LocalFolder::Peer::Type::User;
} }
ReadStringOption(peer, "hash", [&](auto hashString) {
const auto hash = hashString.toULongLong();
if (hash) {
peerStruct.accessHash = hash;
}
});
folderStruct.always.push_back(peerStruct); folderStruct.always.push_back(peerStruct);
} }
}); });

View file

@ -146,7 +146,6 @@ struct LocalFolder {
Type type; Type type;
int32 id; int32 id;
uint64 accessHash = 0;
inline bool operator==(const Peer& other) { inline bool operator==(const Peer& other) {
return type == other.type return type == other.type