<h2 dir="auto">Why are the changes necessary?</h2>
<p dir="auto">Implements the UserMute-Feature as described in <a href="https://github.com/osmfoundation/ewg_bidding/tree/main/projects/ability-to-mute-other-users/proposals/gregory_igelmund-08-09-2023">https://github.com/osmfoundation/ewg_bidding/tree/main/projects/ability-to-mute-other-users/proposals/gregory_igelmund-08-09-2023</a></p>
<h2 dir="auto">What changed?</h2>
<ul dir="auto">
<li>Added <code class="notranslate">UserMute</code> w/ UI controls to mute/unmute users</li>
<li>Moved <code class="notranslate">UserMailer.message_notification</code> into <code class="notranslate">Message#notify_recipient_via_mail</code></li>
<li>Moved shared UI logic from <code class="notranslate">app/views/messages/{inbox,outbox,muted}.html.erb</code> to <code class="notranslate">app/views/messages/_heading.html.erb</code></li>
</ul>
<h2 dir="auto">TBD</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" id="" disabled="" class="task-list-item-checkbox"> Add UserMute on <code class="notranslate">Messages#show</code>?</li>
</ul>
<p dir="auto">Users receive a new message, navigating to <code class="notranslate">Messages#show</code>. At this point they might have the urge to mute the sender of this message, so it would make sense to provide the <code class="notranslate">Mute</code>-action here, too.</p>
<p dir="auto">Questions is: Where to put the action so that it is not too intrusive for 99% of the users who have no need to mute another user?</p>
<hr>
<h4>You can view, comment on, or merge this pull request online at:</h4>
<p> <a href='https://github.com/openstreetmap/openstreetmap-website/pull/4284'>https://github.com/openstreetmap/openstreetmap-website/pull/4284</a></p>
<h4>Commit Summary</h4>
<ul>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/2048c50613f3f2764ef433b889df22eac2c03b19" class="commit-link">2048c50</a> Create UserMute, add Message#muted-flag</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/714d4899430547c10b464901771a08e5dc7866bd" class="commit-link">714d489</a> Basic controllers, routes, ability</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/fa328ad76cb6581848c1db22ae4751040faf7dae" class="commit-link">fa328ad</a> Add UI, locales, extract messages/_heading</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/daaf6b1e0fa0d645c7b7905b6dd6a135362c3a12" class="commit-link">daaf6b1</a> script/deliver-message: Respect muted messages</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/225ad8a1b91d28b96cc0dce9adab9f9bbdcff405" class="commit-link">225ad8a</a> Restore messages table</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/bccce28625b01af37d15d72a1b1ea5c3dac46696" class="commit-link">bccce28</a> Messages: Add actions column</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/8abe42932be3f97eee06a7168b646fa722e952d2" class="commit-link">8abe429</a> Never mute admins</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/bf7fb9df7fa4a47c8a0572c3f0b7928ae4db16d3" class="commit-link">bf7fb9d</a> Add UserMutes#index, allow unmuting messages</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/f7cfaf963ec6ea3a118b4191e385761503cab38d" class="commit-link">f7cfaf9</a> Rephrase/Reformat UserMutes#index page</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/d10eb7c4ce3762c58a8328d3a3f60c409f5d22c9" class="commit-link">d10eb7c</a> Users#show: Rephrase mute actions, add title w/ explainer to Mute action</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/9365f56a69895aea0224be29d7173374e5c05dea" class="commit-link">9365f56</a> Delint, thanks rubocop</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/c82bf101af5689b94583675fcdbee4de0e9fe7dd" class="commit-link">c82bf10</a> Add test to verify correct Mailer behaviour</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/64aca19acdb173aa09244cdcf1897f640eb234b7" class="commit-link">64aca19</a> Rephrase comment</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/dda59a166ee8a9ac39cf34c17e8d7acea88cb651" class="commit-link">dda59a1</a> UserMutes#index: Add i18n for site title</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/e38bb797d292f5cc662e253480a4401a658ae819" class="commit-link">e38bb79</a> messages/_message_summary.html.erb: Revert rename message{_summary,}</li>
<li><a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/commits/2ef3519b81e0efdac9e0b7a8414c20d637a20dba" class="commit-link">2ef3519</a> Merge branch 'master' into add_user_mute</li>
</ul>
<h4 style="display: inline-block">File Changes </h4> <p style="display: inline-block">(<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files">26 files</a>)</p>
<ul>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-debf59904131dc89a88ab44cbb1d6deaaa5a7d70c0507f674080df62f7c8e41f">app/abilities/ability.rb</a>
(3)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-9b58332ea76756301b1aafeacfb0659d1244ba014947602b0e0bf2d0f2921d26">app/controllers/messages_controller.rb</a>
(26)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-88b7f97cfbb85a1c112dfca0f858eb3bf696a9bd8a61b5b851873fc64803c46c">app/controllers/user_mutes_controller.rb</a>
(46)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-684a16c1b0b4c099fcdfeed95b1820e11fef629fe332ec7ce6a8c600331dd06d">app/models/message.rb</a>
(21)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-9802ca3c9c4cf89904fd44bc114e35ebdf2c5dd3d5b645491e2b253e1afef29b">app/models/user.rb</a>
(8)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-700704b6070ee3ac3997763379d76ec0ea315e06960081874fa948f37246aca1">app/models/user_mute.rb</a>
(45)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-90d570948841d78bc3498101a4090ca4b95c73dad7762210d46cff8e1343a262">app/views/application/_settings_menu.html.erb</a>
(3)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-90fd154fd8d11cc9c0667196f14db479a437ab2632785c18a15f8cbc06e0e35c">app/views/messages/_heading.html.erb</a>
(26)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-dce312eee7c8db36eed14c39d7ef021c07c1772852becf919c71f74c8679866d">app/views/messages/_message_summary.html.erb</a>
(3)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-95d16dd14e4df274792fca31af9004e9017e2407a9181425f236c24ee0b0d309">app/views/messages/_messages_table.html.erb</a>
(13)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-71a310e56428492d3af6554127f59c397bb096d4d2b314bffdc8695db3f8995b">app/views/messages/inbox.html.erb</a>
(29)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-78374ccab73127e42410f9659ab7354b56e99d6e043ec04018622b9c346db96d">app/views/messages/muted.html.erb</a>
(9)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-f651855e217422384f68dd336fb1f388ee9c5a485b21f848714c892f97772200">app/views/messages/outbox.html.erb</a>
(16)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-38adeaa1f69a9a05b1eb5ccfb417a4ca578fb37d4f0a76c403e32a05d292f5cf">app/views/messages/show.html.erb</a>
(3)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-f1ac5f5cac7b1d60ec03914774a32195850c4505a94a3e17e4a016a2ab3a9fa3">app/views/user_mutes/index.html.erb</a>
(36)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-78ff736409d758722403cce31873ba803b3fb526d37398ca21caa557b54dfd95">app/views/users/show.html.erb</a>
(10)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-44438ce218f5287c58d0017f965d888715635d94280669896f75841fbd7b4cd7">config/locales/en.yml</a>
(41)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-959bc9abc46a55332bb64d5155a79323afa75a50ec1a2137ddd22d926f62c6c5">config/routes.rb</a>
(8)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-78f0f84edebb9476265b20b6a9e343c409a81692ae739acb22da0aa40249be23">db/migrate/20231010201451_create_user_mutes.rb</a>
(15)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-e4b11e5dbe85d4f5fe73dd651408226aca4fac130871bdd227d1caab27575967">db/migrate/20231010203028_add_muted_flag_to_messages.rb</a>
(5)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-1dd5a8f580b9615769ddc19a64a98f455d9d20eb149c443f41d9d3c797d39b12">db/structure.sql</a>
(91)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-49cc495b1482d7d9e8483b3138ea9ff46f012391a0452f0ed0290f82b9a66754">script/deliver-message</a>
(2)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-8a4bc2a52aa9d2d9c4ad6de08af530c771e2cd1fbe096df6c0bf81d869af20ee">test/factories/messages.rb</a>
(4)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-224b5ec21bf791bce56e02e0673ec1e1d57324b61721dc2f07c8ff25f65f4dab">test/factories/user_mute.rb</a>
(6)
</li>
<li>
<strong>M</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-f6440fd3336b11c0501071041975ac6af9da2d69fbc0a209213bf226a8b4f560">test/models/message_test.rb</a>
(21)
</li>
<li>
<strong>A</strong>
<a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284/files#diff-8ef94ed2381339e56bd8c3d9ac0d29ce87b87368f65a5423b69c05978341f6d1">test/models/user_mute_test.rb</a>
(27)
</li>
</ul>
<h4>Patch Links:</h4>
<ul>
<li><a href='https://github.com/openstreetmap/openstreetmap-website/pull/4284.patch'>https://github.com/openstreetmap/openstreetmap-website/pull/4284.patch</a></li>
<li><a href='https://github.com/openstreetmap/openstreetmap-website/pull/4284.diff'>https://github.com/openstreetmap/openstreetmap-website/pull/4284.diff</a></li>
</ul>
<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />Reply to this email directly, <a href="https://github.com/openstreetmap/openstreetmap-website/pull/4284">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAK2OLMP64TEDWXX4T6YQETX6ZIH7ANCNFSM6AAAAAA53SDORY">unsubscribe</a>.<br />You are receiving this because you are subscribed to this thread.<img src="https://github.com/notifications/beacon/AAK2OLJ3VKEGOGQJGWBFI7TX6ZIH7A5CNFSM6AAAAAA53SDOR2WGG33NNVSW45C7OR4XAZNFJFZXG5LFVJRW63LNMVXHIX3JMTHHG5RSU4.gif" height="1" width="1" alt="" /><span style="color: transparent; font-size: 0; display: none; visibility: hidden; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0; mso-hide: all">Message ID: <span><openstreetmap/openstreetmap-website/pull/4284</span><span>@</span><span>github</span><span>.</span><span>com></span></span></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/openstreetmap/openstreetmap-website/pull/4284",
"url": "https://github.com/openstreetmap/openstreetmap-website/pull/4284",
"name": "View Pull Request"
},
"description": "View this Pull Request on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>