web payable and asset view
This commit is contained in:
@@ -3,7 +3,7 @@ ActiveAdmin.register Software do
|
||||
:license, :platform, :status, :highlighted,
|
||||
software_images_attributes: [ :id, :image_id, :is_default, :position, :file_upload, :_destroy ],
|
||||
external_links_attributes: [ :id, :label, :url, :_destroy ],
|
||||
releases_attributes: [ :id, :version, :web_playable, :_destroy,
|
||||
releases_attributes: [ :id, :version, :_destroy,
|
||||
{ release_assets_attributes: [ :id, :kind, :path, :_destroy ] } ]
|
||||
|
||||
menu priority: 2, label: "🎮 Softwares"
|
||||
@@ -127,7 +127,6 @@ ActiveAdmin.register Software do
|
||||
f.inputs "Releases" do
|
||||
f.has_many :releases, allow_destroy: true, new_record: true do |r|
|
||||
r.input :version
|
||||
r.input :web_playable
|
||||
r.has_many :release_assets, allow_destroy: true, new_record: true do |ra|
|
||||
ra.input :kind, as: :select, collection: ReleaseAsset::KINDS, include_blank: false
|
||||
ra.input :path
|
||||
|
||||
@@ -18,13 +18,13 @@ class Release < ApplicationRecord
|
||||
return unless software&.platform == "c64"
|
||||
|
||||
has_html = release_assets.reject(&:marked_for_destruction?).any? { |a| a.kind == "html" }
|
||||
if has_html || web_playable?
|
||||
if has_html
|
||||
errors.add(:base, "C64 releases cannot be web playable (download only)")
|
||||
end
|
||||
end
|
||||
|
||||
def self.ransackable_attributes(auth_object = nil)
|
||||
%w[created_at deleted_at id software_id updated_at version web_playable]
|
||||
%w[created_at deleted_at id software_id updated_at version]
|
||||
end
|
||||
|
||||
def self.ransackable_associations(auth_object = nil)
|
||||
|
||||
@@ -2,9 +2,10 @@ module SoftwareResponseBuilder
|
||||
private
|
||||
|
||||
def build_response(software, releases)
|
||||
sorted = releases.sort_by { |r| r.created_at || Time.at(0) }.reverse
|
||||
latest = sorted.reject { |r| r.version.to_s.start_with?("dev-") }.first
|
||||
web_playable = sorted.find { |r| r.release_assets.any? { |a| a.kind == "html" } }
|
||||
sorted = releases.sort_by { |r| r.created_at || Time.at(0) }.reverse
|
||||
latest = sorted.reject { |r| r.version.to_s.start_with?("dev-") }.first
|
||||
# web-playable, ha az utolsó (stabil) release-nek van webes assetje
|
||||
web_playable = latest if latest&.release_assets&.any? { |a| a.kind == "html" }
|
||||
total_downloads = releases.sum { |r| r.association(:downloads).loaded? ? r.downloads.size : 0 }
|
||||
|
||||
SoftwareDetailSerializer.render_as_hash(software,
|
||||
|
||||
Reference in New Issue
Block a user