Added ability to view stories anonymously from info stories section.
This commit is contained in:
@@ -247,22 +247,8 @@ void FillSourceMenu(
|
||||
add(viewProfileText, [=] {
|
||||
controller->showPeerInfo(peer);
|
||||
}, channel ? &st::menuIconInfo : &st::menuIconProfile);
|
||||
if (peer->session().premiumPossible()
|
||||
&& peer->isUser()
|
||||
&& !peer->hasActiveVideoStream()
|
||||
&& peer->hasUnreadStories()) {
|
||||
const auto now = base::unixtime::now();
|
||||
const auto stealth = owner->stories().stealthMode();
|
||||
add(tr::lng_stories_view_anonymously(tr::now), [=] {
|
||||
Media::Stories::SetupStealthMode(
|
||||
controller->uiShow(),
|
||||
Media::Stories::StealthModeDescriptor{
|
||||
[=] { controller->openPeerStories(peer->id); },
|
||||
&st::storiesStealthStyleDefault,
|
||||
});
|
||||
}, ((peer->session().premium() || (stealth.enabledTill > now))
|
||||
? &st::menuIconStealth
|
||||
: &st::menuIconStealthLocked));
|
||||
if (!peer->hasActiveVideoStream() && peer->hasUnreadStories()) {
|
||||
Media::Stories::AddStealthModeMenu(add, peer, controller);
|
||||
}
|
||||
const auto in = [&](Data::StorySourcesList list) {
|
||||
return ranges::contains(
|
||||
|
||||
@@ -38,6 +38,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "history/history_item_helpers.h"
|
||||
#include "media/stories/media_stories_controller.h" // ...TogglePinnedToast.
|
||||
#include "media/stories/media_stories_share.h" // PrepareShareBox.
|
||||
#include "media/stories/media_stories_stealth.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "window/window_peer_menu.h"
|
||||
#include "ui/widgets/menu/menu_add_action_callback.h"
|
||||
@@ -74,6 +75,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "styles/style_chat.h"
|
||||
#include "styles/style_credits.h" // giftBoxHiddenMark
|
||||
#include "styles/style_chat_helpers.h"
|
||||
#include "styles/style_media_stories.h"
|
||||
|
||||
#include <QtWidgets/QApplication>
|
||||
#include <QtGui/QClipboard>
|
||||
@@ -1327,6 +1329,10 @@ void ListWidget::showContextMenu(
|
||||
}
|
||||
if (const auto peer = _controller->key().storiesPeer()) {
|
||||
if (!peer->isSelf() && IsStoryMsgId(globalId.itemId.msg)) {
|
||||
::Media::Stories::AddStealthModeMenu(
|
||||
Ui::Menu::CreateAddActionCallback(_contextMenu),
|
||||
peer,
|
||||
_controller->parentController());
|
||||
const auto storyId = FullStoryId{
|
||||
globalId.itemId.peer,
|
||||
StoryIdFromMsgId(globalId.itemId.msg),
|
||||
|
||||
@@ -23,12 +23,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||
#include "ui/text/text_utilities.h"
|
||||
#include "ui/toast/toast.h"
|
||||
#include "ui/widgets/buttons.h"
|
||||
#include "ui/widgets/popup_menu.h"
|
||||
#include "ui/widgets/menu/menu_add_action_callback.h"
|
||||
#include "ui/painter.h"
|
||||
#include "window/window_controller.h"
|
||||
#include "window/window_session_controller.h"
|
||||
#include "styles/style_media_view.h"
|
||||
#include "styles/style_media_stories.h"
|
||||
#include "styles/style_layers.h"
|
||||
#include "styles/style_menu_icons.h"
|
||||
|
||||
namespace Media::Stories {
|
||||
namespace {
|
||||
@@ -375,6 +378,30 @@ void SetupStealthMode(
|
||||
}
|
||||
}
|
||||
|
||||
void AddStealthModeMenu(
|
||||
const Ui::Menu::MenuCallback &add,
|
||||
not_null<PeerData*> peer,
|
||||
not_null<Window::SessionController*> controller) {
|
||||
if (!peer->session().premiumPossible() || !peer->isUser()) {
|
||||
return;
|
||||
}
|
||||
const auto now = base::unixtime::now();
|
||||
const auto stealth = peer->owner().stories().stealthMode();
|
||||
add(
|
||||
tr::lng_stories_view_anonymously(tr::now),
|
||||
[=] {
|
||||
SetupStealthMode(
|
||||
controller->uiShow(),
|
||||
StealthModeDescriptor{
|
||||
[=] { controller->openPeerStories(peer->id); },
|
||||
&st::storiesStealthStyleDefault,
|
||||
});
|
||||
},
|
||||
((peer->session().premium() || (stealth.enabledTill > now))
|
||||
? &st::menuIconStealth
|
||||
: &st::menuIconStealthLocked));
|
||||
}
|
||||
|
||||
QString TimeLeftText(int left) {
|
||||
Expects(left >= 0);
|
||||
|
||||
|
||||
@@ -15,6 +15,14 @@ namespace ChatHelpers {
|
||||
class Show;
|
||||
} // namespace ChatHelpers
|
||||
|
||||
namespace Ui::Menu {
|
||||
struct MenuCallback;
|
||||
} // namespace Ui::Menu
|
||||
|
||||
namespace Window {
|
||||
class SessionController;
|
||||
} // namespace Window
|
||||
|
||||
namespace Media::Stories {
|
||||
|
||||
struct StealthModeDescriptor {
|
||||
@@ -26,6 +34,11 @@ void SetupStealthMode(
|
||||
std::shared_ptr<ChatHelpers::Show> show,
|
||||
StealthModeDescriptor descriptor = {});
|
||||
|
||||
void AddStealthModeMenu(
|
||||
const Ui::Menu::MenuCallback &add,
|
||||
not_null<PeerData*> peer,
|
||||
not_null<Window::SessionController*> controller);
|
||||
|
||||
[[nodiscard]] QString TimeLeftText(int left);
|
||||
|
||||
} // namespace Media::Stories
|
||||
|
||||
Reference in New Issue
Block a user