/* 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 */ #include "data/business/data_business_info.h" #include "apiwrap.h" #include "data/data_session.h" #include "main/main_session.h" namespace Data { BusinessInfo::BusinessInfo(not_null owner) : _owner(owner) { } BusinessInfo::~BusinessInfo() = default; const WorkingHours &BusinessInfo::workingHours() const { return _workingHours.current(); } rpl::producer BusinessInfo::workingHoursValue() const { return _workingHours.value(); } void BusinessInfo::saveWorkingHours(WorkingHours data) { _workingHours = std::move(data); } void BusinessInfo::preload() { preloadTimezones(); } void BusinessInfo::preloadTimezones() { if (!_timezones.current().list.empty() || _timezonesRequestId) { return; } _timezonesRequestId = _owner->session().api().request( MTPhelp_GetTimezonesList(MTP_int(_timezonesHash)) ).done([=](const MTPhelp_TimezonesList &result) { result.match([&](const MTPDhelp_timezonesList &data) { _timezonesHash = data.vhash().v; const auto proj = [](const MTPtimezone &result) { return Timezone{ .id = qs(result.data().vid()), .name = qs(result.data().vname()), .utcOffset = result.data().vutc_offset().v, }; }; _timezones = Timezones{ .list = ranges::views::all( data.vtimezones().v ) | ranges::views::transform( proj ) | ranges::to_vector, }; }, [](const MTPDhelp_timezonesListNotModified &) { }); }).send(); } rpl::producer BusinessInfo::timezonesValue() const { const_cast(this)->preloadTimezones(); return _timezones.value(); } } // namespace Data