MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / addPrivacyButton

Method addPrivacyButton

Telegram/SourceFiles/settings/settings_builder.cpp:347–385  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

345}
346
347Ui::SettingsButton *SectionBuilder::addPrivacyButton(PrivacyButtonArgs &&args) {
348 const auto controller = this->controller();
349 const auto session = this->session();
350
351 const auto button = addButton({
352 .id = args.id,
353 .title = rpl::duplicate(args.title),
354 .st = &st::settingsButtonNoIcon,
355 .label = PrivacyButtonLabel(session, args.key),
356 .keywords = args.keywords,
357 });
358 if (button) {
359 const auto id = args.id;
360 const auto premium = args.premium;
361 const auto shower = Ui::CreateChild<rpl::lifetime>(button);
362 const auto factory = args.controllerFactory;
363 button->addClickHandler([=, key = args.key] {
364 *shower = session->api().userPrivacy().value(
365 key
366 ) | rpl::take(
367 1
368 ) | rpl::on_next(crl::guard(controller, [=](
369 const Api::UserPrivacy::Rule &value) {
370 controller->show(Box<EditPrivacyBox>(
371 controller,
372 factory(),
373 value));
374 }));
375 });
376 if (premium) {
377 AddPrivacyPremiumStar(
378 button,
379 session,
380 std::move(args.title),
381 st::settingsButtonNoIcon.padding);
382 }
383 }
384 return button;
385}
386
387Ui::Checkbox *SectionBuilder::addCheckbox(CheckboxArgs &&args) {
388 const auto factory = [&](not_null<Ui::VerticalLayout*> container) {

Callers 1

BuildPrivacySectionFunction · 0.80

Calls 7

controllerMethod · 0.95
sessionMethod · 0.95
PrivacyButtonLabelFunction · 0.85
AddPrivacyPremiumStarFunction · 0.85
apiMethod · 0.80
valueMethod · 0.45
showMethod · 0.45

Tested by

no test coverage detected