| 942 | } |
| 943 | |
| 944 | void CaptionLimitBox( |
| 945 | not_null<Ui::GenericBox*> box, |
| 946 | not_null<Main::Session*> session, |
| 947 | int remove, |
| 948 | const style::PremiumLimits *stOverride) { |
| 949 | const auto premium = session->premium(); |
| 950 | const auto premiumPossible = session->premiumPossible(); |
| 951 | |
| 952 | const auto limits = Data::PremiumLimits(session); |
| 953 | const auto defaultLimit = float64(limits.captionLengthDefault()); |
| 954 | const auto premiumLimit = float64(limits.captionLengthPremium()); |
| 955 | const auto currentLimit = premium ? premiumLimit : defaultLimit; |
| 956 | const auto current = std::clamp( |
| 957 | remove + currentLimit, |
| 958 | defaultLimit, |
| 959 | premiumLimit); |
| 960 | |
| 961 | auto text = rpl::combine( |
| 962 | tr::lng_caption_limit1( |
| 963 | lt_count, |
| 964 | rpl::single(currentLimit), |
| 965 | tr::rich), |
| 966 | (!premiumPossible |
| 967 | ? rpl::single(TextWithEntities()) |
| 968 | : tr::lng_caption_limit2( |
| 969 | lt_count, |
| 970 | rpl::single(premiumLimit), |
| 971 | tr::rich)) |
| 972 | ) | rpl::map([](TextWithEntities &&a, TextWithEntities &&b) { |
| 973 | return b.text.isEmpty() |
| 974 | ? a |
| 975 | : a.append(QChar(' ')).append(std::move(b)); |
| 976 | }); |
| 977 | |
| 978 | SimpleLimitBox( |
| 979 | box, |
| 980 | stOverride, |
| 981 | session, |
| 982 | tr::lng_caption_limit_title(), |
| 983 | std::move(text), |
| 984 | "caption_length", |
| 985 | { defaultLimit, current, premiumLimit, &st::premiumIconChats }); |
| 986 | } |
| 987 | |
| 988 | void CaptionLimitReachedBox( |
| 989 | not_null<Ui::GenericBox*> box, |
nothing calls this directly
no test coverage detected