| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- 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
- #include "data/business/data_business_common.h"
- namespace Data {
- class Session;
- class BusinessInfo final {
- public:
- explicit BusinessInfo(not_null<Session*> owner);
- ~BusinessInfo();
- void preload();
- void saveWorkingHours(WorkingHours data, Fn<void(QString)> fail);
- void saveChatIntro(ChatIntro data, Fn<void(QString)> fail);
- void saveLocation(BusinessLocation data, Fn<void(QString)> fail);
- void saveAwaySettings(AwaySettings data, Fn<void(QString)> fail);
- void applyAwaySettings(AwaySettings data);
- [[nodiscard]] AwaySettings awaySettings() const;
- [[nodiscard]] bool awaySettingsLoaded() const;
- [[nodiscard]] rpl::producer<> awaySettingsChanged() const;
- void saveGreetingSettings(
- GreetingSettings data,
- Fn<void(QString)> fail);
- void applyGreetingSettings(GreetingSettings data);
- [[nodiscard]] GreetingSettings greetingSettings() const;
- [[nodiscard]] bool greetingSettingsLoaded() const;
- [[nodiscard]] rpl::producer<> greetingSettingsChanged() const;
- void preloadTimezones();
- [[nodiscard]] bool timezonesLoaded() const;
- [[nodiscard]] rpl::producer<Timezones> timezonesValue() const;
- private:
- const not_null<Session*> _owner;
- rpl::variable<Timezones> _timezones;
- std::optional<AwaySettings> _awaySettings;
- rpl::event_stream<> _awaySettingsChanged;
- std::optional<GreetingSettings> _greetingSettings;
- rpl::event_stream<> _greetingSettingsChanged;
- mtpRequestId _timezonesRequestId = 0;
- int32 _timezonesHash = 0;
- };
- [[nodiscard]] QString FindClosestTimezoneId(
- const std::vector<Timezone> &list);
- } // namespace Data
|