std::optional<std::string> FindUsersCity(bool non_default) {
return GetOrOpenContactsServerConnection()
.transform([](auto&& contacts) { return contacts->GetUserId(); })
.and_then([](auto&& uid) {
return GetOrOpenGeoServerConnection().transform(
[&uid](auto&& geo) { return geo->GetLocation(*uid); });
})
.transform([](auto&& uloc) { return uloc->GetCityName(); });
}