data_business_info.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include "data/business/data_business_common.h"
  9. namespace Data {
  10. class Session;
  11. class BusinessInfo final {
  12. public:
  13. explicit BusinessInfo(not_null<Session*> owner);
  14. ~BusinessInfo();
  15. void preload();
  16. void saveWorkingHours(WorkingHours data, Fn<void(QString)> fail);
  17. void saveChatIntro(ChatIntro data, Fn<void(QString)> fail);
  18. void saveLocation(BusinessLocation data, Fn<void(QString)> fail);
  19. void saveAwaySettings(AwaySettings data, Fn<void(QString)> fail);
  20. void applyAwaySettings(AwaySettings data);
  21. [[nodiscard]] AwaySettings awaySettings() const;
  22. [[nodiscard]] bool awaySettingsLoaded() const;
  23. [[nodiscard]] rpl::producer<> awaySettingsChanged() const;
  24. void saveGreetingSettings(
  25. GreetingSettings data,
  26. Fn<void(QString)> fail);
  27. void applyGreetingSettings(GreetingSettings data);
  28. [[nodiscard]] GreetingSettings greetingSettings() const;
  29. [[nodiscard]] bool greetingSettingsLoaded() const;
  30. [[nodiscard]] rpl::producer<> greetingSettingsChanged() const;
  31. void preloadTimezones();
  32. [[nodiscard]] bool timezonesLoaded() const;
  33. [[nodiscard]] rpl::producer<Timezones> timezonesValue() const;
  34. private:
  35. const not_null<Session*> _owner;
  36. rpl::variable<Timezones> _timezones;
  37. std::optional<AwaySettings> _awaySettings;
  38. rpl::event_stream<> _awaySettingsChanged;
  39. std::optional<GreetingSettings> _greetingSettings;
  40. rpl::event_stream<> _greetingSettingsChanged;
  41. mtpRequestId _timezonesRequestId = 0;
  42. int32 _timezonesHash = 0;
  43. };
  44. [[nodiscard]] QString FindClosestTimezoneId(
  45. const std::vector<Timezone> &list);
  46. } // namespace Data