kotatogram-desktop/Telegram/SourceFiles/data/business/data_business_info.cpp
2024-03-08 10:53:58 +04:00

71 lines
1.8 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
*/
#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<Session*> owner)
: _owner(owner) {
}
BusinessInfo::~BusinessInfo() = default;
const WorkingHours &BusinessInfo::workingHours() const {
return _workingHours.current();
}
rpl::producer<WorkingHours> 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<Timezones> BusinessInfo::timezonesValue() const {
const_cast<BusinessInfo*>(this)->preloadTimezones();
return _timezones.value();
}
} // namespace Data