From 7b104287bab5d285c7693844e278303cbf01a759 Mon Sep 17 00:00:00 2001 From: Jose Farias Date: Fri, 25 Oct 2024 15:39:54 -0600 Subject: [PATCH] Roll up boosts server-side --- .../controllers/event_summary_controller.js | 40 ------------------- app/models/event.rb | 2 + .../event_summaries/_event_summary.html.erb | 5 ++- app/views/events/actions/_boosted.html.erb | 2 +- 4 files changed, 7 insertions(+), 42 deletions(-) delete mode 100644 app/javascript/controllers/event_summary_controller.js diff --git a/app/javascript/controllers/event_summary_controller.js b/app/javascript/controllers/event_summary_controller.js deleted file mode 100644 index 4e104a82e..000000000 --- a/app/javascript/controllers/event_summary_controller.js +++ /dev/null @@ -1,40 +0,0 @@ -import { Controller } from "@hotwired/stimulus" - -export default class extends Controller { - static targets = [ "boostEvent" ] - - connect() { - this.#summarizeBoosts() - } - - #summarizeBoosts() { - if (this.#isBoosted) { - const el = document.createElement("span") - el.dataset.turboTemporary = "" - el.textContent = this.#boostSumaries.toSentence() - this.element.appendChild(el) - } - } - - get #isBoosted() { - return this.hasBoostEventTarget - } - - get #boostSumaries() { - return Object.entries(this.#boostsByCreator).map(([_creatorId, boostEvents]) => { - return `${boostEvents[0].dataset.creatorName} +${boostEvents.length}` - }) - } - - get #boostsByCreator() { - return this.boostEventTargets.reduce((acc, target) => { - const creatorId = target.dataset.creatorId - - if (!acc[creatorId]) acc[creatorId] = [] - - acc[creatorId].push(target) - - return acc - }, {}) - } -} diff --git a/app/models/event.rb b/app/models/event.rb index 462f07132..78512132b 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -8,4 +8,6 @@ class Event < ApplicationRecord has_one :account, through: :creator scope :chronologically, -> { order created_at: :asc, id: :desc } + scope :unfurled, -> { where.not action: :boosted } + scope :furled, -> { where action: :boosted } end diff --git a/app/views/event_summaries/_event_summary.html.erb b/app/views/event_summaries/_event_summary.html.erb index c8f8739bd..200cac2f9 100644 --- a/app/views/event_summaries/_event_summary.html.erb +++ b/app/views/event_summaries/_event_summary.html.erb @@ -1,4 +1,7 @@
<%# Template Dependency: events/actions/* %> - <%= render event_summary.events, cache: true %> + <%= render event_summary.events.unfurled, cache: true %> + <% event_summary.events.furled.group_by(&:creator).each do |creator, events| %> + <%= render partial: "events/actions/boosted", locals: { creator: creator, count: events.size } %> + <% end %>
diff --git a/app/views/events/actions/_boosted.html.erb b/app/views/events/actions/_boosted.html.erb index 8b47c44d0..579ad1f4b 100644 --- a/app/views/events/actions/_boosted.html.erb +++ b/app/views/events/actions/_boosted.html.erb @@ -1 +1 @@ - +<%= creator.name %> +<%= count %>.