diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp
index cb099afe4..973a44a21 100644
--- a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp
+++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.cpp
@@ -683,6 +683,10 @@ QString InnerWidget::elementAuthorRank(not_null<const Element*> view) {
 	return {};
 }
 
+bool InnerWidget::elementHideTopicButton(not_null<const Element*> view) {
+	return false;
+}
+
 void InnerWidget::saveState(not_null<SectionMemento*> memento) {
 	memento->setFilter(std::move(_filter));
 	memento->setAdmins(std::move(_admins));
diff --git a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.h b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.h
index bbe3c0381..5f55e5d40 100644
--- a/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.h
+++ b/Telegram/SourceFiles/history/admin_log/history_admin_log_inner.h
@@ -141,6 +141,8 @@ public:
 		HistoryView::Element *replacing) override;
 	QString elementAuthorRank(
 		not_null<const HistoryView::Element*> view) override;
+	bool elementHideTopicButton(
+		not_null<const HistoryView::Element*> view) override;
 
 	~InnerWidget();
 
diff --git a/Telegram/SourceFiles/history/history_inner_widget.cpp b/Telegram/SourceFiles/history/history_inner_widget.cpp
index c232aaa1c..46d1a4612 100644
--- a/Telegram/SourceFiles/history/history_inner_widget.cpp
+++ b/Telegram/SourceFiles/history/history_inner_widget.cpp
@@ -324,6 +324,10 @@ public:
 		return {};
 	}
 
+	bool elementHideTopicButton(not_null<const Element*> view) override {
+		return false;
+	}
+
 	not_null<HistoryView::ElementDelegate*> delegate() override {
 		return this;
 	}
diff --git a/Telegram/SourceFiles/history/view/history_view_chat_preview.cpp b/Telegram/SourceFiles/history/view/history_view_chat_preview.cpp
index 91540a729..dddc36695 100644
--- a/Telegram/SourceFiles/history/view/history_view_chat_preview.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_chat_preview.cpp
@@ -126,6 +126,7 @@ private:
 		Painter &p,
 		const Ui::ChatPaintContext &context) override;
 	QString listElementAuthorRank(not_null<const Element*> view) override;
+	bool listElementHideTopicButton(not_null<const Element*> view) override;
 	History *listTranslateHistory() override;
 	void listAddTranslatedItems(
 		not_null<TranslateTracker*> tracker) override;
@@ -279,6 +280,8 @@ void Item::setupTop() {
 	const auto topic = _thread->asTopic();
 	auto nameValue = (topic
 		? Info::Profile::TitleValue(topic)
+		: _thread->peer()->isSelf()
+		? tr::lng_saved_messages()
 		: Info::Profile::NameValue(_thread->peer())
 	) | rpl::start_spawning(_top->lifetime());
 	const auto name = Ui::CreateChild<Ui::FlatLabel>(
@@ -294,18 +297,24 @@ void Item::setupTop() {
 	) | rpl::map([](StatusFields &&fields) {
 		return fields.text;
 	});
-	const auto status = Ui::CreateChild<Ui::FlatLabel>(
-		_top.get(),
-		(topic
-			? Info::Profile::NameValue(topic->channel())
-			: std::move(statusText)),
-		st::previewStatus);
-	std::move(statusFields) | rpl::start_with_next([=](const StatusFields &fields) {
-		status->setTextColorOverride(fields.active
-			? st::windowActiveTextFg->c
-			: std::optional<QColor>());
-	}, status->lifetime());
-	status->setAttribute(Qt::WA_TransparentForMouseEvents);
+	const auto status = _thread->peer()->isSelf()
+		? nullptr
+		: Ui::CreateChild<Ui::FlatLabel>(
+			_top.get(),
+			(topic
+				? Info::Profile::NameValue(topic->channel())
+				: std::move(statusText)),
+			st::previewStatus);
+	if (status) {
+		std::move(
+			statusFields
+		) | rpl::start_with_next([=](const StatusFields &fields) {
+			status->setTextColorOverride(fields.active
+				? st::windowActiveTextFg->c
+				: std::optional<QColor>());
+		}, status->lifetime());
+		status->setAttribute(Qt::WA_TransparentForMouseEvents);
+	}
 	const auto userpic = topic
 		? nullptr
 		: Ui::CreateChild<Ui::UserpicButton>(
@@ -313,6 +322,7 @@ void Item::setupTop() {
 			_thread->peer(),
 			st::previewUserpic);
 	if (userpic) {
+		userpic->showSavedMessagesOnSelf(true);
 		userpic->setAttribute(Qt::WA_TransparentForMouseEvents);
 	}
 	const auto icon = topic
@@ -334,15 +344,23 @@ void Item::setupTop() {
 		name->resizeToNaturalWidth(width
 			- st.namePosition.x()
 			- st.photoPosition.x());
-		name->move(st::previewTop.namePosition);
+		if (status) {
+			name->move(st::previewTop.namePosition);
+		} else {
+			name->move(
+				st::previewTop.namePosition.x(),
+				(st::previewTop.height - name->height()) / 2);
+		}
 	}, name->lifetime());
 
 	_top->geometryValue() | rpl::start_with_next([=](QRect geometry) {
 		const auto &st = st::previewTop;
-		status->resizeToWidth(geometry.width()
-			- st.statusPosition.x()
-			- st.photoPosition.x());
-		status->move(st.statusPosition);
+		if (status) {
+			status->resizeToWidth(geometry.width()
+				- st.statusPosition.x()
+				- st.photoPosition.x());
+			status->move(st.statusPosition);
+		}
 		shadow->setGeometry(
 			geometry.x(),
 			geometry.y() + geometry.height(),
@@ -673,6 +691,10 @@ QString Item::listElementAuthorRank(not_null<const Element*> view) {
 	return {};
 }
 
+bool Item::listElementHideTopicButton(not_null<const Element*> view) {
+	return _thread->asTopic() != nullptr;
+}
+
 History *Item::listTranslateHistory() {
 	return nullptr;
 }
diff --git a/Telegram/SourceFiles/history/view/history_view_element.cpp b/Telegram/SourceFiles/history/view/history_view_element.cpp
index df32ee082..b85001331 100644
--- a/Telegram/SourceFiles/history/view/history_view_element.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_element.cpp
@@ -198,10 +198,16 @@ void DefaultElementDelegate::elementStartEffect(
 }
 
 QString DefaultElementDelegate::elementAuthorRank(
-	not_null<const Element*> view) {
+		not_null<const Element*> view) {
 	return {};
 }
 
+bool DefaultElementDelegate::elementHideTopicButton(
+		not_null<const Element*> view) {
+	return true;
+}
+
+
 SimpleElementDelegate::SimpleElementDelegate(
 	not_null<Window::SessionController*> controller,
 	Fn<void()> update)
diff --git a/Telegram/SourceFiles/history/view/history_view_element.h b/Telegram/SourceFiles/history/view/history_view_element.h
index 0c01e9767..d4139e8ec 100644
--- a/Telegram/SourceFiles/history/view/history_view_element.h
+++ b/Telegram/SourceFiles/history/view/history_view_element.h
@@ -117,6 +117,7 @@ public:
 		not_null<const Element*> view,
 		Element *replacing) = 0;
 	virtual QString elementAuthorRank(not_null<const Element*> view) = 0;
+	virtual bool elementHideTopicButton(not_null<const Element*> view) = 0;
 
 	virtual ~ElementDelegate() {
 	}
@@ -170,6 +171,7 @@ public:
 		not_null<const Element*> view,
 		Element *replacing) override;
 	QString elementAuthorRank(not_null<const Element*> view) override;
+	bool elementHideTopicButton(not_null<const Element*> view) override;
 
 };
 
diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp
index 9c125252c..eb5e079ad 100644
--- a/Telegram/SourceFiles/history/view/history_view_list_widget.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_list_widget.cpp
@@ -1867,6 +1867,11 @@ QString ListWidget::elementAuthorRank(not_null<const Element*> view) {
 	return _delegate->listElementAuthorRank(view);
 }
 
+bool ListWidget::elementHideTopicButton(not_null<const Element*> view) {
+	return _delegate->listElementHideTopicButton(view);
+}
+
+
 void ListWidget::saveState(not_null<ListMemento*> memento) {
 	memento->setAroundPosition(_aroundPosition);
 	const auto state = countScrollState();
diff --git a/Telegram/SourceFiles/history/view/history_view_list_widget.h b/Telegram/SourceFiles/history/view/history_view_list_widget.h
index 5cfc57c08..d0507474f 100644
--- a/Telegram/SourceFiles/history/view/history_view_list_widget.h
+++ b/Telegram/SourceFiles/history/view/history_view_list_widget.h
@@ -155,6 +155,7 @@ public:
 		Painter &p,
 		const Ui::ChatPaintContext &context) = 0;
 	virtual QString listElementAuthorRank(not_null<const Element*> view) = 0;
+	virtual bool listElementHideTopicButton(not_null<const Element*> view) = 0;
 	virtual History *listTranslateHistory() = 0;
 	virtual void listAddTranslatedItems(
 		not_null<TranslateTracker*> tracker) = 0;
@@ -368,7 +369,7 @@ public:
 	[[nodiscard]] auto replyToMessageRequested() const
 		-> rpl::producer<ReplyToMessageRequest>;
 	void replyToMessageRequestNotify(
-		FullReplyTo to, 
+		FullReplyTo to,
 		bool forceAnotherChat = false);
 	[[nodiscard]] rpl::producer<FullMsgId> readMessageRequested() const;
 	[[nodiscard]] rpl::producer<FullMsgId> showMessageRequested() const;
@@ -425,6 +426,7 @@ public:
 		not_null<const Element*> view,
 		Element *replacing) override;
 	QString elementAuthorRank(not_null<const Element*> view) override;
+	bool elementHideTopicButton(not_null<const Element*> view) override;
 
 	void setEmptyInfoWidget(base::unique_qptr<Ui::RpWidget> &&w);
 	void overrideIsChatWide(bool isWide);
diff --git a/Telegram/SourceFiles/history/view/history_view_message.cpp b/Telegram/SourceFiles/history/view/history_view_message.cpp
index cd10f2399..0d93ee0b6 100644
--- a/Telegram/SourceFiles/history/view/history_view_message.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_message.cpp
@@ -1037,8 +1037,7 @@ QSize Message::performCountOptimalSize() {
 void Message::refreshTopicButton() {
 	const auto item = data();
 	if (isAttachedToPrevious()
-		|| (context() != Context::History
-			&& context() != Context::ChatPreview)) {
+		|| delegate()->elementHideTopicButton(this)) {
 		_topicButton = nullptr;
 	} else if (const auto topic = item->topic()) {
 		if (!_topicButton) {
diff --git a/Telegram/SourceFiles/history/view/history_view_pinned_section.cpp b/Telegram/SourceFiles/history/view/history_view_pinned_section.cpp
index 51a3101eb..7a9ecd8dc 100644
--- a/Telegram/SourceFiles/history/view/history_view_pinned_section.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_pinned_section.cpp
@@ -679,6 +679,11 @@ QString PinnedWidget::listElementAuthorRank(not_null<const Element*> view) {
 	return {};
 }
 
+bool PinnedWidget::listElementHideTopicButton(
+		not_null<const Element*> view) {
+	return true;
+}
+
 History *PinnedWidget::listTranslateHistory() {
 	return _history;
 }
diff --git a/Telegram/SourceFiles/history/view/history_view_pinned_section.h b/Telegram/SourceFiles/history/view/history_view_pinned_section.h
index 2c54e0684..75956e403 100644
--- a/Telegram/SourceFiles/history/view/history_view_pinned_section.h
+++ b/Telegram/SourceFiles/history/view/history_view_pinned_section.h
@@ -132,6 +132,7 @@ public:
 		Painter &p,
 		const Ui::ChatPaintContext &context) override;
 	QString listElementAuthorRank(not_null<const Element*> view) override;
+	bool listElementHideTopicButton(not_null<const Element*> view) override;
 	History *listTranslateHistory() override;
 	void listAddTranslatedItems(
 		not_null<TranslateTracker*> tracker) override;
diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp
index 492992642..738377b58 100644
--- a/Telegram/SourceFiles/history/view/history_view_replies_section.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_replies_section.cpp
@@ -2614,6 +2614,11 @@ QString RepliesWidget::listElementAuthorRank(not_null<const Element*> view) {
 		: QString();
 }
 
+bool RepliesWidget::listElementHideTopicButton(
+		not_null<const Element*> view) {
+	return true;
+}
+
 History *RepliesWidget::listTranslateHistory() {
 	return _history;
 }
diff --git a/Telegram/SourceFiles/history/view/history_view_replies_section.h b/Telegram/SourceFiles/history/view/history_view_replies_section.h
index 37c8540fd..c8bacc2c7 100644
--- a/Telegram/SourceFiles/history/view/history_view_replies_section.h
+++ b/Telegram/SourceFiles/history/view/history_view_replies_section.h
@@ -175,6 +175,7 @@ public:
 		Painter &p,
 		const Ui::ChatPaintContext &context) override;
 	QString listElementAuthorRank(not_null<const Element*> view) override;
+	bool listElementHideTopicButton(not_null<const Element*> view) override;
 	History *listTranslateHistory() override;
 	void listAddTranslatedItems(
 		not_null<TranslateTracker*> tracker) override;
diff --git a/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp b/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp
index bd4a1123b..045b5b830 100644
--- a/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_scheduled_section.cpp
@@ -1450,6 +1450,11 @@ QString ScheduledWidget::listElementAuthorRank(
 	return {};
 }
 
+bool ScheduledWidget::listElementHideTopicButton(
+		not_null<const Element*> view) {
+	return true;
+}
+
 History *ScheduledWidget::listTranslateHistory() {
 	return nullptr;
 }
diff --git a/Telegram/SourceFiles/history/view/history_view_scheduled_section.h b/Telegram/SourceFiles/history/view/history_view_scheduled_section.h
index b2b0efa41..ba4813713 100644
--- a/Telegram/SourceFiles/history/view/history_view_scheduled_section.h
+++ b/Telegram/SourceFiles/history/view/history_view_scheduled_section.h
@@ -159,6 +159,7 @@ public:
 		Painter &p,
 		const Ui::ChatPaintContext &context) override;
 	QString listElementAuthorRank(not_null<const Element*> view) override;
+	bool listElementHideTopicButton(not_null<const Element*> view) override;
 	History *listTranslateHistory() override;
 	void listAddTranslatedItems(
 		not_null<TranslateTracker*> tracker) override;
diff --git a/Telegram/SourceFiles/history/view/history_view_sublist_section.cpp b/Telegram/SourceFiles/history/view/history_view_sublist_section.cpp
index df4f4ea04..424aaa5f0 100644
--- a/Telegram/SourceFiles/history/view/history_view_sublist_section.cpp
+++ b/Telegram/SourceFiles/history/view/history_view_sublist_section.cpp
@@ -736,6 +736,11 @@ QString SublistWidget::listElementAuthorRank(not_null<const Element*> view) {
 	return {};
 }
 
+bool SublistWidget::listElementHideTopicButton(
+		not_null<const Element*> view) {
+	return true;
+}
+
 History *SublistWidget::listTranslateHistory() {
 	return _history;
 }
diff --git a/Telegram/SourceFiles/history/view/history_view_sublist_section.h b/Telegram/SourceFiles/history/view/history_view_sublist_section.h
index eff71d50c..6379c9845 100644
--- a/Telegram/SourceFiles/history/view/history_view_sublist_section.h
+++ b/Telegram/SourceFiles/history/view/history_view_sublist_section.h
@@ -136,6 +136,7 @@ public:
 		Painter &p,
 		const Ui::ChatPaintContext &context) override;
 	QString listElementAuthorRank(not_null<const Element*> view) override;
+	bool listElementHideTopicButton(not_null<const Element*> view) override;
 	History *listTranslateHistory() override;
 	void listAddTranslatedItems(
 		not_null<TranslateTracker*> tracker) override;
diff --git a/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp b/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp
index 96c6cb841..9724bdec2 100644
--- a/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp
+++ b/Telegram/SourceFiles/settings/business/settings_shortcut_messages.cpp
@@ -161,6 +161,7 @@ private:
 		Painter &p,
 		const Ui::ChatPaintContext &context) override;
 	QString listElementAuthorRank(not_null<const Element*> view) override;
+	bool listElementHideTopicButton(not_null<const Element*> view) override;
 	History *listTranslateHistory() override;
 	void listAddTranslatedItems(
 		not_null<TranslateTracker*> tracker) override;
@@ -1046,6 +1047,11 @@ QString ShortcutMessages::listElementAuthorRank(
 	return {};
 }
 
+bool ShortcutMessages::listElementHideTopicButton(
+		not_null<const Element*> view) {
+	return true;
+}
+
 History *ShortcutMessages::listTranslateHistory() {
 	return nullptr;
 }