Files
tdesktop/Telegram/SourceFiles/data/notify/data_peer_notify_settings.h
allhaileris afb81b8278
Some checks failed
Docker. / Ubuntu (push) Has been cancelled
User-agent updater. / User-agent (push) Failing after 15s
Lock Threads / lock (push) Failing after 10s
Waiting for answer. / waiting-for-answer (push) Failing after 22s
Close stale issues and PRs / stale (push) Successful in 13s
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
init
2026-02-16 15:50:16 +03:00

72 lines
1.4 KiB
C++

/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
#pragma once
namespace Data {
class NotifyPeerSettingsValue;
enum class DefaultNotify : uint8_t {
User,
Group,
Broadcast,
};
struct NotifySound {
QString title;
QString data;
DocumentId id = 0;
bool none = false;
};
struct MuteValue {
bool unmute = false;
bool forever = false;
int period = 0;
[[nodiscard]] explicit operator bool() const {
return unmute || forever || period;
}
[[nodiscard]] int until() const;
};
inline bool operator==(const NotifySound &a, const NotifySound &b) {
return (a.id == b.id)
&& (a.none == b.none)
&& (a.title == b.title)
&& (a.data == b.data);
}
class PeerNotifySettings {
public:
PeerNotifySettings();
bool change(const MTPPeerNotifySettings &settings);
bool change(
MuteValue muteForSeconds,
std::optional<bool> silentPosts,
std::optional<NotifySound> sound,
std::optional<bool> storiesMuted);
bool resetToDefault();
bool settingsUnknown() const;
std::optional<TimeId> muteUntil() const;
std::optional<bool> silentPosts() const;
std::optional<NotifySound> sound() const;
MTPinputPeerNotifySettings serialize() const;
~PeerNotifySettings();
private:
bool _known = false;
std::unique_ptr<NotifyPeerSettingsValue> _value;
};
} // namespace Data