Repository: zulip/zulip

Issue:
Remove "Send a reply" new user tip
After implementing #19900, there are two places where new users are told how to reply to a message: in the Welcome Bot text and in the "Send a reply" new user tip immediately below.

To simplify and avoid redundancy, we should remove the "Send a reply" new user tip.

<img width="909" alt="Screen_Shot_2021-12-06_at_10_08_14_AM" src="https://user-images.githubusercontent.com/2090066/144938995-080268ce-510d-4b76-b3c1-b691fbb814f4.png">

[CZO thread](https://chat.zulip.org/#narrow/stream/101-design/topic/.22click.20to.20reply.22.20whale)


Discussion:
Hello @zulip/server-onboarding members, this issue was labeled with the "area: onboarding" label, so you may want to check it out!

<!-- areaLabelAddition -->

@zulipbot claim

Resolving patch:
diff --git a/zerver/lib/hotspots.py b/zerver/lib/hotspots.py
--- a/zerver/lib/hotspots.py
+++ b/zerver/lib/hotspots.py
@@ -9,10 +9,6 @@
 from zerver.models import UserHotspot, UserProfile
 
 INTRO_HOTSPOTS: Dict[str, Dict[str, Promise]] = {
-    "intro_reply": {
-        "title": gettext_lazy("Reply to a message"),
-        "description": gettext_lazy("Click anywhere on a message to reply."),
-    },
     "intro_streams": {
         "title": gettext_lazy("Catch up on a stream"),
         "description": gettext_lazy(


Test patch:
diff --git a/zerver/tests/test_events.py b/zerver/tests/test_events.py
--- a/zerver/tests/test_events.py
+++ b/zerver/tests/test_events.py
@@ -1806,7 +1806,7 @@ def test_do_mark_hotspot_as_read(self) -> None:
         self.user_profile.save(update_fields=["tutorial_status"])
 
         events = self.verify_action(
-            lambda: do_mark_hotspot_as_read(self.user_profile, "intro_reply")
+            lambda: do_mark_hotspot_as_read(self.user_profile, "intro_streams")
         )
         check_hotspots("events[0]", events[0])
 
diff --git a/zerver/tests/test_hotspots.py b/zerver/tests/test_hotspots.py
--- a/zerver/tests/test_hotspots.py
+++ b/zerver/tests/test_hotspots.py
@@ -16,14 +16,14 @@ def setUp(self) -> None:
     def test_first_hotspot(self) -> None:
         hotspots = get_next_hotspots(self.user)
         self.assert_length(hotspots, 1)
-        self.assertEqual(hotspots[0]["name"], "intro_reply")
+        self.assertEqual(hotspots[0]["name"], "intro_streams")
 
     def test_some_done_some_not(self) -> None:
-        do_mark_hotspot_as_read(self.user, "intro_reply")
+        do_mark_hotspot_as_read(self.user, "intro_streams")
         do_mark_hotspot_as_read(self.user, "intro_compose")
         hotspots = get_next_hotspots(self.user)
         self.assert_length(hotspots, 1)
-        self.assertEqual(hotspots[0]["name"], "intro_streams")
+        self.assertEqual(hotspots[0]["name"], "intro_topics")
 
     def test_all_intro_hotspots_done(self) -> None:
         with self.settings(TUTORIAL_ENABLED=True):
@@ -54,16 +54,16 @@ def test_do_mark_hotspot_as_read(self) -> None:
     def test_hotspots_url_endpoint(self) -> None:
         user = self.example_user("hamlet")
         self.login_user(user)
-        result = self.client_post("/json/users/me/hotspots", {"hotspot": "intro_reply"})
+        result = self.client_post("/json/users/me/hotspots", {"hotspot": "intro_streams"})
         self.assert_json_success(result)
         self.assertEqual(
             list(UserHotspot.objects.filter(user=user).values_list("hotspot", flat=True)),
-            ["intro_reply"],
+            ["intro_streams"],
         )
 
         result = self.client_post("/json/users/me/hotspots", {"hotspot": "invalid"})
         self.assert_json_error(result, "Unknown hotspot: invalid")
         self.assertEqual(
             list(UserHotspot.objects.filter(user=user).values_list("hotspot", flat=True)),
-            ["intro_reply"],
+            ["intro_streams"],
         )
diff --git a/zerver/tests/test_users.py b/zerver/tests/test_users.py
--- a/zerver/tests/test_users.py
+++ b/zerver/tests/test_users.py
@@ -1178,7 +1178,7 @@ def test_copy_default_settings_from_another_user(self) -> None:
 
         UserHotspot.objects.filter(user=cordelia).delete()
         UserHotspot.objects.filter(user=iago).delete()
-        hotspots_completed = {"intro_reply", "intro_streams", "intro_topics"}
+        hotspots_completed = {"intro_streams", "intro_topics"}
         for hotspot in hotspots_completed:
             UserHotspot.objects.create(user=cordelia, hotspot=hotspot)