mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-07 15:43:55 +02:00
Excluded non-today birthdays from reminder in top bar from dialogs.
This commit is contained in:
parent
868c7b170e
commit
d1898b9a0b
3 changed files with 30 additions and 8 deletions
|
@ -85,6 +85,7 @@ namespace Data {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using ViewElement = HistoryView::Element;
|
using ViewElement = HistoryView::Element;
|
||||||
|
using UserIds = std::vector<UserId>;
|
||||||
|
|
||||||
// s: box 100x100
|
// s: box 100x100
|
||||||
// m: box 320x320
|
// m: box 320x320
|
||||||
|
@ -4985,7 +4986,7 @@ void Session::clearLocalStorage() {
|
||||||
_bigFileCache->clear();
|
_bigFileCache->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
rpl::producer<std::vector<UserId>> Session::contactBirthdays(bool force) {
|
rpl::producer<UserIds> Session::contactBirthdays(bool force) {
|
||||||
if ((_contactBirthdaysLastDayRequest != -1)
|
if ((_contactBirthdaysLastDayRequest != -1)
|
||||||
&& (_contactBirthdaysLastDayRequest == QDate::currentDate().day())
|
&& (_contactBirthdaysLastDayRequest == QDate::currentDate().day())
|
||||||
&& !force) {
|
&& !force) {
|
||||||
|
@ -5002,7 +5003,8 @@ rpl::producer<std::vector<UserId>> Session::contactBirthdays(bool force) {
|
||||||
).done([=](const MTPcontacts_ContactBirthdays &result) {
|
).done([=](const MTPcontacts_ContactBirthdays &result) {
|
||||||
_contactBirthdaysRequestId = 0;
|
_contactBirthdaysRequestId = 0;
|
||||||
_contactBirthdaysLastDayRequest = QDate::currentDate().day();
|
_contactBirthdaysLastDayRequest = QDate::currentDate().day();
|
||||||
auto users = std::vector<UserId>();
|
auto users = UserIds();
|
||||||
|
auto today = UserIds();
|
||||||
Session::processUsers(result.data().vusers());
|
Session::processUsers(result.data().vusers());
|
||||||
for (const auto &tlContact : result.data().vcontacts().v) {
|
for (const auto &tlContact : result.data().vcontacts().v) {
|
||||||
const auto peerId = tlContact.data().vcontact_id().v;
|
const auto peerId = tlContact.data().vcontact_id().v;
|
||||||
|
@ -5012,15 +5014,20 @@ rpl::producer<std::vector<UserId>> Session::contactBirthdays(bool force) {
|
||||||
data.vday().v,
|
data.vday().v,
|
||||||
data.vmonth().v,
|
data.vmonth().v,
|
||||||
data.vyear().value_or_empty()));
|
data.vyear().value_or_empty()));
|
||||||
|
if (Data::IsBirthdayToday(user->birthday())) {
|
||||||
|
today.push_back(peerToUser(user->id));
|
||||||
|
}
|
||||||
users.push_back(peerToUser(user->id));
|
users.push_back(peerToUser(user->id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_contactBirthdays = std::move(users);
|
_contactBirthdays = std::move(users);
|
||||||
|
_contactBirthdaysToday = std::move(today);
|
||||||
consumer.put_next_copy(_contactBirthdays);
|
consumer.put_next_copy(_contactBirthdays);
|
||||||
}).fail([=](const MTP::Error &error) {
|
}).fail([=](const MTP::Error &error) {
|
||||||
_contactBirthdaysRequestId = 0;
|
_contactBirthdaysRequestId = 0;
|
||||||
_contactBirthdaysLastDayRequest = QDate::currentDate().day();
|
_contactBirthdaysLastDayRequest = QDate::currentDate().day();
|
||||||
_contactBirthdays = {};
|
_contactBirthdays = {};
|
||||||
|
_contactBirthdaysToday = {};
|
||||||
consumer.put_next({});
|
consumer.put_next({});
|
||||||
}).send();
|
}).send();
|
||||||
|
|
||||||
|
@ -5028,7 +5035,7 @@ rpl::producer<std::vector<UserId>> Session::contactBirthdays(bool force) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<std::vector<UserId>> Session::knownContactBirthdays() const {
|
std::optional<UserIds> Session::knownContactBirthdays() const {
|
||||||
if ((_contactBirthdaysLastDayRequest == -1)
|
if ((_contactBirthdaysLastDayRequest == -1)
|
||||||
|| (_contactBirthdaysLastDayRequest != QDate::currentDate().day())) {
|
|| (_contactBirthdaysLastDayRequest != QDate::currentDate().day())) {
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
|
@ -5036,4 +5043,12 @@ std::optional<std::vector<UserId>> Session::knownContactBirthdays() const {
|
||||||
return _contactBirthdays;
|
return _contactBirthdays;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::optional<UserIds> Session::knownBirthdaysToday() const {
|
||||||
|
if ((_contactBirthdaysLastDayRequest == -1)
|
||||||
|
|| (_contactBirthdaysLastDayRequest != QDate::currentDate().day())) {
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
return _contactBirthdaysToday;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Data
|
} // namespace Data
|
||||||
|
|
|
@ -835,8 +835,10 @@ public:
|
||||||
|
|
||||||
[[nodiscard]] rpl::producer<std::vector<UserId>> contactBirthdays(
|
[[nodiscard]] rpl::producer<std::vector<UserId>> contactBirthdays(
|
||||||
bool force = false);
|
bool force = false);
|
||||||
[[nodiscard]] std::optional<std::vector<UserId>> knownContactBirthdays(
|
[[nodiscard]] auto knownContactBirthdays() const
|
||||||
) const;
|
-> std::optional<std::vector<UserId>>;
|
||||||
|
[[nodiscard]] auto knownBirthdaysToday() const
|
||||||
|
-> std::optional<std::vector<UserId>>;
|
||||||
|
|
||||||
void clearLocalStorage();
|
void clearLocalStorage();
|
||||||
|
|
||||||
|
@ -1156,6 +1158,7 @@ private:
|
||||||
mtpRequestId _contactBirthdaysRequestId = 0;
|
mtpRequestId _contactBirthdaysRequestId = 0;
|
||||||
int _contactBirthdaysLastDayRequest = -1;
|
int _contactBirthdaysLastDayRequest = -1;
|
||||||
std::vector<UserId> _contactBirthdays;
|
std::vector<UserId> _contactBirthdays;
|
||||||
|
std::vector<UserId> _contactBirthdaysToday;
|
||||||
|
|
||||||
Groups _groups;
|
Groups _groups;
|
||||||
const std::unique_ptr<ChatFilters> _chatsFilters;
|
const std::unique_ptr<ChatFilters> _chatsFilters;
|
||||||
|
|
|
@ -218,10 +218,14 @@ rpl::producer<Ui::SlideWrap<Ui::RpWidget>*> TopBarSuggestionValue(
|
||||||
|
|
||||||
return;
|
return;
|
||||||
} else if (session->premiumCanBuy()
|
} else if (session->premiumCanBuy()
|
||||||
&& config->suggestionCurrent(kSugBirthdayContacts.utf8())) {
|
&& config->suggestionCurrent(kSugBirthdayContacts.utf8())
|
||||||
|
&& (!session->data().knownBirthdaysToday()
|
||||||
|
|| !session->data().knownBirthdaysToday()->size())) {
|
||||||
session->data().contactBirthdays(
|
session->data().contactBirthdays(
|
||||||
) | rpl::start_with_next(crl::guard(content, [=](
|
) | rpl::start_with_next(crl::guard(content, [=] {
|
||||||
std::vector<UserId> users) {
|
const auto users = session->data()
|
||||||
|
.knownBirthdaysToday().value_or(
|
||||||
|
std::vector<UserId>());
|
||||||
if (users.empty()) {
|
if (users.empty()) {
|
||||||
repeat(repeat);
|
repeat(repeat);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Add table
Reference in a new issue