mirror of
https://github.com/discourse/discourse.git
synced 2025-09-05 08:59:27 +08:00
REFACTOR: Avoid duplicated logic on server and client.
This commit is contained in:
parent
c390169b71
commit
f7642e076d
6 changed files with 64 additions and 56 deletions
|
@ -3,47 +3,52 @@ module DiscourseUpdates
|
|||
class << self
|
||||
|
||||
def check_version
|
||||
version_info = if updated_at.nil?
|
||||
DiscourseVersionCheck.new(
|
||||
installed_version: Discourse::VERSION::STRING,
|
||||
installed_sha: (Discourse.git_version == 'unknown' ? nil : Discourse.git_version),
|
||||
installed_describe: Discourse.full_version,
|
||||
git_branch: Discourse.git_branch,
|
||||
updated_at: nil
|
||||
)
|
||||
else
|
||||
DiscourseVersionCheck.new(
|
||||
attrs = {
|
||||
installed_version: Discourse::VERSION::STRING,
|
||||
installed_sha: (Discourse.git_version == 'unknown' ? nil : Discourse.git_version),
|
||||
installed_describe: Discourse.full_version,
|
||||
git_branch: Discourse.git_branch,
|
||||
updated_at: updated_at,
|
||||
}
|
||||
|
||||
unless updated_at.nil?
|
||||
attrs.merge!(
|
||||
latest_version: latest_version,
|
||||
critical_updates: critical_updates_available?,
|
||||
installed_version: Discourse::VERSION::STRING,
|
||||
installed_sha: (Discourse.git_version == 'unknown' ? nil : Discourse.git_version),
|
||||
installed_describe: Discourse.full_version,
|
||||
missing_versions_count: missing_versions_count,
|
||||
git_branch: Discourse.git_branch,
|
||||
updated_at: updated_at
|
||||
missing_versions_count: missing_versions_count
|
||||
)
|
||||
end
|
||||
|
||||
version_info = DiscourseVersionCheck.new(attrs)
|
||||
|
||||
# replace -commit_count with +commit_count
|
||||
if version_info.installed_describe =~ /-(\d+)-/
|
||||
version_info.installed_describe = version_info.installed_describe.gsub(/-(\d+)-.*/, " +#{$1}")
|
||||
end
|
||||
|
||||
if SiteSetting.version_checks?
|
||||
is_stale_data =
|
||||
(version_info.missing_versions_count == 0 && version_info.latest_version != version_info.installed_version) ||
|
||||
(version_info.missing_versions_count != 0 && version_info.latest_version == version_info.installed_version)
|
||||
|
||||
# Handle cases when version check data is old so we report something that makes sense
|
||||
if version_info.updated_at.nil? || # never performed a version check
|
||||
last_installed_version != Discourse::VERSION::STRING || # upgraded since the last version check
|
||||
is_stale_data
|
||||
|
||||
if (version_info.updated_at.nil? || # never performed a version check
|
||||
last_installed_version != (Discourse::VERSION::STRING) || # upgraded since the last version check
|
||||
(version_info.missing_versions_count == (0) && version_info.latest_version != (version_info.installed_version)) || # old data
|
||||
(version_info.missing_versions_count != (0) && version_info.latest_version == (version_info.installed_version))) # old data
|
||||
Jobs.enqueue(:version_check, all_sites: true)
|
||||
version_info.version_check_pending = true
|
||||
|
||||
unless version_info.updated_at.nil?
|
||||
version_info.missing_versions_count = 0
|
||||
version_info.critical_updates = false
|
||||
end
|
||||
end
|
||||
|
||||
version_info.stale_data =
|
||||
version_info.version_check_pending ||
|
||||
(updated_at && updated_at < 48.hours.ago) ||
|
||||
is_stale_data
|
||||
end
|
||||
|
||||
version_info
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue