2024-04-21 11:39:10 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
|
|
class CheckAppVersion
|
2024-10-29 06:52:23 -04:00
|
|
|
VERSION_CACHE_KEY = 'dawarich/app-version-check'
|
|
|
|
|
|
2024-04-21 11:39:10 -04:00
|
|
|
def initialize
|
|
|
|
|
@repo_url = 'https://api.github.com/repos/Freika/dawarich/tags'
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def call
|
2024-11-24 08:56:20 -05:00
|
|
|
latest_version != APP_VERSION
|
2024-10-29 06:52:23 -04:00
|
|
|
rescue StandardError
|
|
|
|
|
false
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def latest_version
|
|
|
|
|
Rails.cache.fetch(VERSION_CACHE_KEY, expires_in: 6.hours) do
|
2025-01-22 06:17:26 -05:00
|
|
|
versions = JSON.parse(Net::HTTP.get(URI.parse(@repo_url)))
|
|
|
|
|
# Find first version that contains only numbers and dots
|
|
|
|
|
release_version = versions.find { |v| v['name'].match?(/^\d+\.\d+\.\d+$/) }
|
|
|
|
|
release_version ? release_version['name'] : APP_VERSION
|
2024-10-29 06:52:23 -04:00
|
|
|
end
|
2024-04-21 11:39:10 -04:00
|
|
|
end
|
|
|
|
|
end
|