Skip to content

Commit cdc4b56

Browse files
authored
Merge pull request #192 from joyofrails/feat/color-scheme-analytics
Update color scheme analytics
2 parents fe0d5d5 + 72aeca1 commit cdc4b56

File tree

7 files changed

+58
-39
lines changed

7 files changed

+58
-39
lines changed

app/controllers/concerns/analytics.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module Analytics
2+
extend ActiveSupport::Concern
3+
4+
def plausible_event(name, props: {})
5+
Analytics::PlausibleEventJob.perform_later(
6+
name: name,
7+
url: request.original_url,
8+
props: props,
9+
referrer: request.referer,
10+
headers: {
11+
"User-Agent" => request.user_agent,
12+
"X-Forwarded-For" => request.remote_ip
13+
}
14+
)
15+
end
16+
end

app/controllers/concerns/authentication.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ module Authentication
33
extend ActiveSupport::Concern
44

55
included do
6-
before_action :current_admin_user
7-
before_action :current_user
8-
96
helper_method :current_admin_user
107
helper_method :current_user
118
helper_method :user_signed_in?

app/controllers/settings/color_schemes_controller.rb

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
class Settings::ColorSchemesController < ApplicationController
2-
after_action :send_plausible_event, only: :update
3-
42
def show
53
@color_scheme = find_color_scheme
64

@@ -45,23 +43,4 @@ def update
4543

4644
redirect_to settings_color_scheme_path, status: :see_other
4745
end
48-
49-
private
50-
51-
def send_plausible_event
52-
plausible_event "Color Scheme Update", props: {color_scheme: @color_scheme.name}
53-
end
54-
55-
def plausible_event(name, props: {})
56-
Analytics::PlausibleEventJob.perform_later(
57-
name: name,
58-
url: request.original_url,
59-
props: props,
60-
referrer: request.referer,
61-
headers: {
62-
"User-Agent" => request.user_agent,
63-
"X-Forwarded-For" => request.remote_ip
64-
}
65-
)
66-
end
6746
end

app/views/settings/color_schemes/select.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ def view_template
2525
selected: previewing? && @settings.color_scheme.id
2626
},
2727
onchange: "this.form.requestSubmit()",
28-
class: ""
28+
class: "",
29+
data: send_analytics
2930
)
3031
noscript { f.submit "Preview", class: "button primary" }
3132
end
@@ -35,7 +36,8 @@ def view_template
3536

3637
link_to "I feel lucky!",
3738
url_for(settings: {color_scheme_id: random_curated_color_scheme_id}),
38-
class: "button secondary "
39+
class: "button secondary",
40+
data: send_analytics
3941
end
4042
end
4143

@@ -51,4 +53,8 @@ def random_curated_color_scheme_id
5153
_display_name, id = cached_curated_color_scheme_options.sample
5254
id
5355
end
56+
57+
def send_analytics
58+
{action: "analytics#send"}
59+
end
5460
end

app/views/settings/color_schemes/show_view.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def view_template
2727
render Pages::Header.new(title: "Settings: Color Scheme")
2828

2929
section(class: "section-content container py-gap") do
30-
turbo_frame_tag "color-scheme-form", data: {turbo_action: "advance"} do
30+
turbo_frame_tag "color-scheme-form", data: {turbo_action: "advance", controller: "analytics", analytics_event_value: "Color Scheme Update"} do
3131
style do
3232
render(ColorSchemes::Css.new(color_scheme: @session_color_scheme)) if @session_color_scheme
3333
render(ColorSchemes::Css.new(color_scheme: @color_scheme, my_theme_enabled: true))
@@ -122,15 +122,17 @@ def save_preview_button
122122
button_to "Save #{@preview_color_scheme.display_name}",
123123
settings_color_scheme_path(settings: {color_scheme_id: @preview_color_scheme.id}),
124124
method: :patch,
125-
class: "button primary"
125+
class: "button primary",
126+
data: send_analytics
126127
end
127128

128129
def unsave_button
129130
button_to "Delete my color scheme choice",
130131
settings_color_scheme_path(settings: {color_scheme_id: ColorScheme.cached_default.id}),
131132
method: :patch,
132133
class: "button warn",
133-
style: "min-width: 25ch;"
134+
style: "min-width: 25ch;",
135+
data: {confirm: "Are you sure you want to delete your saved color scheme?", **send_analytics}
134136
end
135137

136138
def reset_button
@@ -165,4 +167,8 @@ def default_color_scheme? = @color_scheme.id == @default_color_scheme
165167
def inline_style_header_color(color_scheme)
166168
"color: var(--color-#{color_scheme.name.parameterize}-500)"
167169
end
170+
171+
def send_analytics
172+
{action: "analytics#send"}
173+
end
168174
end

spec/controllers/analytics_spec.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
require "rails_helper"
2+
3+
RSpec.describe "Analytics", type: :controller do
4+
controller do
5+
include Analytics
6+
7+
after_action do
8+
plausible_event "Something Happened", props: {value: 42}
9+
end
10+
11+
def index
12+
render plain: "Hello, World!"
13+
end
14+
end
15+
16+
it "sends a plausible event" do
17+
plausible_request = stub_request(:post, "https://plausible.io/api/event")
18+
19+
get :index
20+
21+
perform_enqueued_jobs
22+
23+
expect(plausible_request).to have_been_requested
24+
end
25+
end

spec/requests/settings/color_schemes_spec.rb

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,5 @@
106106
expect(response.body).to match("--color-#{default_color_scheme.name.parameterize}")
107107
end
108108
end
109-
110-
it "sends a plausible event" do
111-
plausible_request = stub_request(:post, "https://plausible.io/api/event")
112-
113-
patch settings_color_scheme_path(settings: {color_scheme_id: color_scheme.id})
114-
115-
perform_enqueued_jobs
116-
117-
expect(plausible_request).to have_been_requested
118-
end
119109
end
120110
end

0 commit comments

Comments
 (0)