mirror of
https://github.com/maybe-finance/maybe.git
synced 2025-07-19 13:19:39 +02:00
57 lines
1.6 KiB
Ruby
57 lines
1.6 KiB
Ruby
|
class UpgradesController < ApplicationController
|
||
|
before_action :verify_upgrades_enabled
|
||
|
|
||
|
def acknowledge
|
||
|
commit_sha = params[:id]
|
||
|
upgrade = Upgrader.find_upgrade(commit_sha)
|
||
|
|
||
|
if upgrade
|
||
|
if upgrade.available?
|
||
|
Current.user.acknowledge_upgrade_prompt(upgrade.commit_sha)
|
||
|
flash[:notice] = t(".upgrade_dismissed")
|
||
|
elsif upgrade.complete?
|
||
|
Current.user.acknowledge_upgrade_alert(upgrade.commit_sha)
|
||
|
flash[:notice] = t(".upgrade_complete_dismiss")
|
||
|
else
|
||
|
flash[:alert] = t(".upgrade_not_available")
|
||
|
end
|
||
|
else
|
||
|
flash[:alert] = t(".upgrade_not_found")
|
||
|
end
|
||
|
|
||
|
redirect_back(fallback_location: root_path)
|
||
|
end
|
||
|
|
||
|
def deploy
|
||
|
commit_sha = params[:id]
|
||
|
upgrade = Upgrader.find_upgrade(commit_sha)
|
||
|
|
||
|
unless upgrade
|
||
|
flash[:alert] = t(".upgrade_not_found")
|
||
|
return redirect_back(fallback_location: root_path)
|
||
|
end
|
||
|
|
||
|
prior_acknowledged_upgrade_commit_sha = Current.user.last_prompted_upgrade_commit_sha
|
||
|
|
||
|
# Optimistically acknowledge the upgrade prompt
|
||
|
Current.user.acknowledge_upgrade_prompt(upgrade.commit_sha)
|
||
|
|
||
|
upgrade_result = Upgrader.upgrade_to(upgrade)
|
||
|
|
||
|
if upgrade_result[:success]
|
||
|
flash[:notice] = upgrade_result[:message]
|
||
|
else
|
||
|
# If the upgrade fails, revert to the prior acknowledged upgrade
|
||
|
Current.user.acknowledge_upgrade_prompt(prior_acknowledged_upgrade_commit_sha)
|
||
|
flash[:alert] = upgrade_result[:message]
|
||
|
end
|
||
|
|
||
|
redirect_back(fallback_location: root_path)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
def verify_upgrades_enabled
|
||
|
head :not_found unless ENV["UPGRADES_ENABLED"] == "true"
|
||
|
end
|
||
|
end
|