init
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
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
Close stale issues and PRs / stale (push) Has been cancelled
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
Needs user action. / needs-user-action (push) Failing after 8s
Can't reproduce. / cant-reproduce (push) Failing after 8s
Close stale issues and PRs / stale (push) Has been cancelled
This commit is contained in:
71
Telegram/SourceFiles/data/notify/data_peer_notify_settings.h
Normal file
71
Telegram/SourceFiles/data/notify/data_peer_notify_settings.h
Normal file
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
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
|
||||
Reference in New Issue
Block a user