* Initial work for @-mention notifications from posts * Revert article.published changes to article updater, add clarifying comments * Extract article preview into reusable partial for notification views * Clean up Article Updater * Address + remove some FIXMEs * Add a whole buncha specs for @-mention functionality in posts YAY * Refactor create all spec to use shared examples, add clarifying comments * Add guard clause to create all service * Update new mention and notifiable action specs * Some additional cleanup * Add specs + shared examples to SendEmailNotificationWorker spec * Use aggregate_failures where applicable Co-authored-by: Michael Kohl <citizen428@dev.to> * Cleanup and address code review comments * Add MentionDecorator + relevant specs * Address comments/issues flagged by @rhymes * Optimize plucking user_ids when checking for article followers Co-authored-by: Michael Kohl <citizen428@dev.to>
34 lines
2.2 KiB
Text
34 lines
2.2 KiB
Text
<article class="notification__preview crayons-card">
|
|
<a href="<%= json_data["article"]["path"] %>" class="crayons-link block notification__preview__inner">
|
|
<h3 class="notification__preview__title"><%= h(json_data["article"]["title"]) %></h3>
|
|
<div class="-ml-1">
|
|
<% json_data["article"]["cached_tag_list_array"].each do |tag| %>
|
|
<span class="crayons-tag"><span class="crayons-tag__prefix">#</span><%= tag %></span>
|
|
<% end %>
|
|
</div>
|
|
</a>
|
|
|
|
<% cache "activity-published-article-reactions-#{@last_user_reaction}-#{json_data['article']['updated_at']}-#{json_data['article']['id']}" do %>
|
|
<footer class="comment-actions notification__actions">
|
|
<button
|
|
class="crayons-btn crayons-btn--ghost crayons-btn--icon-left crayons-btn--s reaction-like reaction-button <%= Reaction.cached_any_reactions_for?(notification.mocked_object("article"), current_user, "like") ? "reacted" : "" %>"
|
|
data-reactable-id="<%= json_data["article"]["id"] %>"
|
|
data-category="like"
|
|
data-reactable-type="Article">
|
|
<%= inline_svg_tag("small-heart.svg", aria: true, class: "crayons-icon reaction-icon not-reacted", title: "Favorite heart button") %>
|
|
<%= inline_svg_tag("small-heart-filled.svg", aria: true, class: "crayons-icon reaction-icon--like reaction-icon reacted", title: "Favorite heart button") %>
|
|
<span class="hidden m:inline-block">Like</span>
|
|
</button>
|
|
|
|
<button
|
|
class="ml-auto crayons-btn crayons-btn--ghost crayons-btn--icon-right crayons-btn--s reaction-readinglist reaction-button readinglist-button <%= Reaction.cached_any_reactions_for?(notification.mocked_object("article"), current_user, "readinglist") ? "reacted" : "" %>"
|
|
data-reactable-id="<%= json_data["article"]["id"] %>"
|
|
data-category="readinglist"
|
|
data-reactable-type="Article">
|
|
<span class="reaction-button-text hidden m:inline-block">Save</span>
|
|
<%= inline_svg_tag("small-save.svg", aria: true, class: "crayons-icon reaction-icon not-reacted", title: "Save button") %>
|
|
<%= inline_svg_tag("small-save-filled.svg", aria: true, class: "crayons-icon reaction-icon--readinglist reaction-icon reacted", title: "Save button") %>
|
|
</button>
|
|
</footer>
|
|
<% end %>
|
|
</article>
|