From 8da145d623a9d43ad3f0f543e5a0da754c3357f7 Mon Sep 17 00:00:00 2001
From: nora <163450896+24c02@users.noreply.github.com>
Date: Fri, 13 Jun 2025 13:48:21 -0400
Subject: [PATCH] add program return button (#314)
---
app/controllers/api/internal/magic_links_controller.rb | 2 +-
app/controllers/sessions_controller.rb | 1 +
app/views/users/wakatime_setup_step_4.html.erb | 10 ++++++++--
...20250613163710_add_return_data_to_sign_in_tokens.rb | 5 +++++
db/schema.rb | 3 ++-
5 files changed, 17 insertions(+), 4 deletions(-)
create mode 100644 db/migrate/20250613163710_add_return_data_to_sign_in_tokens.rb
diff --git a/app/controllers/api/internal/magic_links_controller.rb b/app/controllers/api/internal/magic_links_controller.rb
index d431023..3ff9e2d 100644
--- a/app/controllers/api/internal/magic_links_controller.rb
+++ b/app/controllers/api/internal/magic_links_controller.rb
@@ -38,7 +38,7 @@ module Api
end
def magic_link_params
- params.permit(:continue_param)
+ params.permit(:continue_param, return_data: {})
end
end
end
diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb
index b056b34..d5fd757 100644
--- a/app/controllers/sessions_controller.rb
+++ b/app/controllers/sessions_controller.rb
@@ -156,6 +156,7 @@ class SessionsController < ApplicationController
if valid_token
valid_token.mark_used!
session[:user_id] = valid_token.user_id
+ session[:return_data] = valid_token.return_data || {}
if valid_token.continue_param.present?
redirect_to valid_token.continue_param, notice: "Successfully signed in!"
diff --git a/app/views/users/wakatime_setup_step_4.html.erb b/app/views/users/wakatime_setup_step_4.html.erb
index 13032db..138447c 100644
--- a/app/views/users/wakatime_setup_step_4.html.erb
+++ b/app/views/users/wakatime_setup_step_4.html.erb
@@ -14,6 +14,12 @@
<% end %>
-<%= link_to root_path do %>
-
+<% if (url = session.dig(:return_data, "url")) %>
+ <%= link_to url do %>
+
+ <% end %>
+ <% else %>
+ <%= link_to root_path do %>
+
+ <% end %>
<% end %>
diff --git a/db/migrate/20250613163710_add_return_data_to_sign_in_tokens.rb b/db/migrate/20250613163710_add_return_data_to_sign_in_tokens.rb
new file mode 100644
index 0000000..a2675c5
--- /dev/null
+++ b/db/migrate/20250613163710_add_return_data_to_sign_in_tokens.rb
@@ -0,0 +1,5 @@
+class AddReturnDataToSignInTokens < ActiveRecord::Migration[8.0]
+ def change
+ add_column :sign_in_tokens, :return_data, :jsonb
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index bba0cfd..4439986 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[8.0].define(version: 2025_06_11_071124) do
+ActiveRecord::Schema[8.0].define(version: 2025_06_13_163710) do
create_schema "pganalyze"
# These are extensions that must be enabled in order to support this database
@@ -464,6 +464,7 @@ ActiveRecord::Schema[8.0].define(version: 2025_06_11_071124) do
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "continue_param"
+ t.jsonb "return_data"
t.index ["token"], name: "index_sign_in_tokens_on_token"
t.index ["user_id"], name: "index_sign_in_tokens_on_user_id"
end