🧪 Beta Features
-Enable experimental features and help us test new functionality.
+🏆 Leaderboard settings
+Customize how you see the leaderboard
diff --git a/app/controllers/leaderboards_controller.rb b/app/controllers/leaderboards_controller.rb index f1abdc5..2165587 100644 --- a/app/controllers/leaderboards_controller.rb +++ b/app/controllers/leaderboards_controller.rb @@ -15,7 +15,7 @@ class LeaderboardsController < ApplicationController private def set_params - @use_timezone_leaderboard = current_user && Flipper.enabled?(:timezone_leaderboard, current_user) + @use_timezone_leaderboard = current_user&.default_timezone_leaderboard @period_type = validated_period_type @scope = params[:scope] || (@use_timezone_leaderboard ? "regional" : "global") @scope_description = scope_description diff --git a/app/controllers/static_pages_controller.rb b/app/controllers/static_pages_controller.rb index 9b60160..a2d3330 100644 --- a/app/controllers/static_pages_controller.rb +++ b/app/controllers/static_pages_controller.rb @@ -85,10 +85,10 @@ class StaticPagesController < ApplicationController end def mini_leaderboard - @use_timezone_leaderboard = current_user && Flipper.enabled?(:timezone_leaderboard, current_user) + use_timezone_leaderboard = current_user&.default_timezone_leaderboard - if @use_timezone_leaderboard && current_user&.timezone_utc_offset - # Use regional leaderboard for beta participants + if use_timezone_leaderboard && current_user&.timezone_utc_offset + # we now doing it by default wooo @leaderboard = LeaderboardGenerator.generate_timezone_offset_leaderboard( Date.current, current_user.timezone_utc_offset, :daily ) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 7faf7da..6f77539 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -20,32 +20,6 @@ class UsersController < ApplicationController end def update - # Handle timezone leaderboard toggle - if params[:toggle_timezone_leaderboard] == "1" - if Flipper.enabled?(:timezone_leaderboard, @user) - Flipper.disable(:timezone_leaderboard, @user) - message = "Regional & Timezone Leaderboards disabled" - else - Flipper.enable(:timezone_leaderboard, @user) - message = "Regional & Timezone Leaderboards enabled" - end - - respond_to do |format| - format.turbo_stream do - render turbo_stream: turbo_stream.replace( - "timezone_leaderboard_toggle", - partial: "timezone_leaderboard_toggle", - locals: { user: @user } - ) - end - format.html do - redirect_to is_own_settings? ? my_settings_path : settings_user_path(@user), - notice: message - end - end - return - end - # Handle regular user settings updates if params[:user].present? if @user.update(user_params) @@ -132,6 +106,6 @@ class UsersController < ApplicationController end def user_params - params.require(:user).permit(:uses_slack_status, :hackatime_extension_text_type, :timezone, :allow_public_stats_lookup) + params.require(:user).permit(:uses_slack_status, :hackatime_extension_text_type, :timezone, :allow_public_stats_lookup, :default_timezone_leaderboard) end end diff --git a/app/models/user.rb b/app/models/user.rb index a753e9d..0a9875f 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -10,6 +10,7 @@ class User < ApplicationRecord validates :country_code, inclusion: { in: ISO3166::Country.codes }, allow_nil: true attribute :allow_public_stats_lookup, :boolean, default: true + attribute :default_timezone_leaderboard, :boolean, default: true def country_name ISO3166::Country.new(country_code).common_name diff --git a/app/views/leaderboards/_mini_leaderboard.html.erb b/app/views/leaderboards/_mini_leaderboard.html.erb index 12eaae3..c0fa4b1 100644 --- a/app/views/leaderboards/_mini_leaderboard.html.erb +++ b/app/views/leaderboards/_mini_leaderboard.html.erb @@ -26,7 +26,7 @@
<% if leaderboard.respond_to?(:scope_name) %>
- 🧪 <%= link_to "Regional Leaderboard", my_settings_path(anchor: "user_beta_features") %>: Showing others in <%= link_to "your timezone", my_settings_path(anchor: "user_timezone") %>
+ Showing others in <%= link_to "your timezone", my_settings_path(anchor: "user_timezone") %>
<% else %>
This leaderboard is in <%= Leaderboard::GLOBAL_TIMEZONE %>.
<% if current_user && timezone_difference_in_seconds(Leaderboard::GLOBAL_TIMEZONE, current_user.timezone) != 0 %>
diff --git a/app/views/leaderboards/index.html.erb b/app/views/leaderboards/index.html.erb
index 39d4ec7..10eebd3 100644
--- a/app/views/leaderboards/index.html.erb
+++ b/app/views/leaderboards/index.html.erb
@@ -3,13 +3,13 @@
diff --git a/app/views/users/_timezone_leaderboard_toggle.html.erb b/app/views/users/_timezone_leaderboard_toggle.html.erb
index 1ad7b41..e5fa3b2 100644
--- a/app/views/users/_timezone_leaderboard_toggle.html.erb
+++ b/app/views/users/_timezone_leaderboard_toggle.html.erb
@@ -4,9 +4,8 @@
Access regional leaderboards that show users in your timezone region or specific timezone. Choose between timezone-specific, regional (UTC offset), or global competition modes.
Leaderboard
<% if @scope == 'regional' %>
- 🧪 Regional Leaderboard: Showing users in <%= @scope_description %>
+ Regional Leaderboard: Showing users in <%= @scope_description %>
<% elsif @scope == 'timezone' %>
- 🧪 Timezone Leaderboard: Showing users in <%= @scope_description %>
+ Timezone Leaderboard: Showing users in <%= @scope_description %>
<% elsif @scope == 'global' %>
This leaderboard runs in UTC time!
<% else %>
- 🧪 Regional Leaderboard: Showing users in <%= @scope_description %>
+ Regional Leaderboard: Showing users in <%= @scope_description %>
<% end %>
Enable experimental features and help us test new functionality.
+Customize how you see the leaderboard
Enable experimental features and help us test new functionality.
+