mirror of
https://github.com/we-promise/sure.git
synced 2026-04-19 12:04:08 +00:00
Merge pull request #618 from alessiocappa/FT-AddAutoSyncOptions
feat: Add automatic sync settings
This commit is contained in:
@@ -62,6 +62,29 @@ class Settings::HostingsController < ApplicationController
|
||||
Setting.syncs_include_pending = hosting_params[:syncs_include_pending] == "1"
|
||||
end
|
||||
|
||||
sync_settings_changed = false
|
||||
|
||||
if hosting_params.key?(:auto_sync_enabled)
|
||||
Setting.auto_sync_enabled = hosting_params[:auto_sync_enabled] == "1"
|
||||
sync_settings_changed = true
|
||||
end
|
||||
|
||||
if hosting_params.key?(:auto_sync_time)
|
||||
time_value = hosting_params[:auto_sync_time]
|
||||
unless Setting.valid_auto_sync_time?(time_value)
|
||||
flash[:alert] = t(".invalid_sync_time")
|
||||
return redirect_to settings_hosting_path
|
||||
end
|
||||
|
||||
Setting.auto_sync_time = time_value
|
||||
Setting.auto_sync_timezone = current_user_timezone
|
||||
sync_settings_changed = true
|
||||
end
|
||||
|
||||
if sync_settings_changed
|
||||
sync_auto_sync_scheduler!
|
||||
end
|
||||
|
||||
if hosting_params.key?(:openai_access_token)
|
||||
token_param = hosting_params[:openai_access_token].to_s.strip
|
||||
# Ignore blanks and redaction placeholders to prevent accidental overwrite
|
||||
@@ -103,10 +126,22 @@ class Settings::HostingsController < ApplicationController
|
||||
|
||||
private
|
||||
def hosting_params
|
||||
params.require(:setting).permit(:onboarding_state, :require_email_confirmation, :brand_fetch_client_id, :twelve_data_api_key, :openai_access_token, :openai_uri_base, :openai_model, :openai_json_mode, :exchange_rate_provider, :securities_provider, :syncs_include_pending)
|
||||
params.require(:setting).permit(:onboarding_state, :require_email_confirmation, :brand_fetch_client_id, :twelve_data_api_key, :openai_access_token, :openai_uri_base, :openai_model, :openai_json_mode, :exchange_rate_provider, :securities_provider, :syncs_include_pending, :auto_sync_enabled, :auto_sync_time)
|
||||
end
|
||||
|
||||
def ensure_admin
|
||||
redirect_to settings_hosting_path, alert: t(".not_authorized") unless Current.user.admin?
|
||||
end
|
||||
|
||||
def sync_auto_sync_scheduler!
|
||||
AutoSyncScheduler.sync!
|
||||
rescue StandardError => error
|
||||
Rails.logger.error("[AutoSyncScheduler] Failed to sync scheduler: #{error.message}")
|
||||
Rails.logger.error(error.backtrace.join("\n"))
|
||||
flash[:alert] = t(".scheduler_sync_failed")
|
||||
end
|
||||
|
||||
def current_user_timezone
|
||||
Current.family&.timezone.presence || "UTC"
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user