Ungroup all feed channels from context menu.

This commit is contained in:
John Preston 2018-02-18 17:00:14 +03:00
parent f8c2f339a0
commit 74aa1ad71e
5 changed files with 34 additions and 0 deletions

View File

@ -1429,6 +1429,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
"lng_feed_channels#one" = "{count} channel";
"lng_feed_channels#other" = "{count} channels";
"lng_feed_notifications" = "Feed notifications";
"lng_feed_ungroup_all" = "Ungroup all channels";
"lng_feed_sure_ungroup_all" = "Are you sure you want to ungroup all channels from this feed?";
"lng_feed_ungroup_sure" = "Ungroup";
"lng_info_feed_title" = "Feed Info";
"lng_info_feed_is_default" = "Group new channels";

View File

@ -203,6 +203,19 @@ void ApiWrap::toggleChannelGrouping(
_channelGroupingRequests.emplace(channel, requestId, callback);
}
void ApiWrap::ungroupAllFromFeed(not_null<Data::Feed*> feed) {
const auto flags = MTPchannels_SetFeedBroadcasts::Flag::f_channels
| MTPchannels_SetFeedBroadcasts::Flag::f_also_newly_joined;
request(MTPchannels_SetFeedBroadcasts(
MTP_flags(flags),
MTP_int(feed->id()),
MTP_vector<MTPInputChannel>(0),
MTP_bool(false)
)).done([=](const MTPUpdates &result) {
applyUpdates(result);
}).send();
}
void ApiWrap::sendMessageFail(const RPCError &error) {
if (error.type() == qstr("PEER_FLOOD")) {
Ui::show(Box<InformBox>(

View File

@ -60,6 +60,7 @@ public:
not_null<ChannelData*> channel,
bool group,
base::lambda<void()> callback);
void ungroupAllFromFeed(not_null<Data::Feed*> feed);
using RequestMessageDataCallback = base::lambda<void(ChannelData*, MsgId)>;
void requestMessageData(

View File

@ -76,6 +76,7 @@ private:
void addInfo();
void addSearch();
void addNotifications();
void addUngroup();
not_null<Controller*> _controller;
not_null<Data::Feed*> _feed;
@ -423,6 +424,7 @@ void FeedFiller::fill() {
if (_source == PeerMenuSource::ChatsList) {
addSearch();
}
addUngroup();
}
bool FeedFiller::showInfo() {
@ -477,6 +479,13 @@ void FeedFiller::addSearch() {
});
}
void FeedFiller::addUngroup() {
const auto feed = _feed;
_addAction(lang(lng_feed_ungroup_all), [=] {
PeerMenuUngroupFeed(feed);
});
}
} // namespace
void PeerMenuDeleteContact(not_null<UserData*> user) {
@ -647,6 +656,13 @@ void PeerMenuAddMuteAction(
Ui::AttachAsChild(muteAction, std::move(lifetime));
}
void PeerMenuUngroupFeed(not_null<Data::Feed*> feed) {
Ui::show(Box<ConfirmBox>(
lang(lng_feed_sure_ungroup_all),
lang(lng_feed_ungroup_sure),
[=] { Ui::hideLayer(); Auth().api().ungroupAllFromFeed(feed); }));
}
void ToggleChannelGrouping(not_null<ChannelData*> channel, bool group) {
const auto callback = [=] {
Ui::Toast::Show(lang(group

View File

@ -48,6 +48,7 @@ void PeerMenuDeleteContact(not_null<UserData*> user);
void PeerMenuShareContactBox(not_null<UserData*> user);
void PeerMenuAddContact(not_null<UserData*> user);
void PeerMenuAddChannelMembers(not_null<ChannelData*> channel);
void PeerMenuUngroupFeed(not_null<Data::Feed*> feed);
void ToggleChannelGrouping(not_null<ChannelData*> channel, bool group);
base::lambda<void()> ClearHistoryHandler(not_null<PeerData*> peer);