fix(vikon): read version from file and update after core update
This commit is contained in:
@@ -32,6 +32,9 @@ class UpdateCoreAction
|
||||
|
||||
File::put($modulePath . '/.vikon', date('Y-m-d H:i:s'));
|
||||
|
||||
// Update version file from API
|
||||
$this->updateVersionFile($accessToken);
|
||||
|
||||
Log::info('Vikon: full update complete', ['module' => $config['name']]);
|
||||
return 'Модуль "' . $config['name'] . '" полностью обновлён.';
|
||||
}
|
||||
@@ -333,4 +336,23 @@ class UpdateCoreAction
|
||||
Log::info('Vikon: cleaned up post-sync', ['removed' => $removed]);
|
||||
}
|
||||
}
|
||||
|
||||
private function updateVersionFile(string $accessToken): void
|
||||
{
|
||||
try {
|
||||
$response = $this->http->getWithToken('pull_updates/assist/getUpdateVersionJson', $accessToken);
|
||||
$body = $response->json();
|
||||
$latestVersion = $body['version'] ?? null;
|
||||
|
||||
if ($latestVersion) {
|
||||
$versionFile = config('vikon.current_version_file');
|
||||
if ($versionFile) {
|
||||
file_put_contents($versionFile, $latestVersion);
|
||||
Log::info('Vikon: version updated', ['version' => $latestVersion]);
|
||||
}
|
||||
}
|
||||
} catch (\Throwable $e) {
|
||||
Log::warning('Vikon: failed to update version file', ['error' => $e->getMessage()]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,10 +69,17 @@ class VikonServiceProvider extends ServiceProvider
|
||||
publicPath: public_path(),
|
||||
));
|
||||
|
||||
$this->app->singleton(CheckVersionAction::class, fn ($app) => new CheckVersionAction(
|
||||
http: $app->make(HttpTask::class),
|
||||
currentVersion: config('vikon.current_version', '1.0.0'),
|
||||
));
|
||||
$this->app->singleton(CheckVersionAction::class, function ($app) {
|
||||
$versionFile = config('vikon.current_version_file');
|
||||
$version = '1.0.0';
|
||||
if ($versionFile && file_exists($versionFile)) {
|
||||
$version = trim(file_get_contents($versionFile)) ?: '1.0.0';
|
||||
}
|
||||
return new CheckVersionAction(
|
||||
http: $app->make(HttpTask::class),
|
||||
currentVersion: $version,
|
||||
);
|
||||
});
|
||||
|
||||
$this->app->singleton(UpdateCoreAction::class, fn ($app) => new UpdateCoreAction(
|
||||
http: $app->make(HttpTask::class),
|
||||
|
||||
@@ -45,7 +45,7 @@ class VikonController extends Controller
|
||||
|
||||
return inertia()->render('Dashboard/VikonUpdates/Index', [
|
||||
'is_authenticated' => $isAuth,
|
||||
'current_version' => config('vikon.current_version'),
|
||||
'current_version' => $this->getCurrentVersion(),
|
||||
'modules' => config('vikon.modules'),
|
||||
'parts' => $parts,
|
||||
'vikon_api_domain' => config('vikon.api_domain'),
|
||||
@@ -220,4 +220,16 @@ class VikonController extends Controller
|
||||
|
||||
return response()->json(['url' => $url]);
|
||||
}
|
||||
|
||||
private function getCurrentVersion(): string
|
||||
{
|
||||
$versionFile = config('vikon.current_version_file');
|
||||
if ($versionFile && file_exists($versionFile)) {
|
||||
$version = trim(file_get_contents($versionFile));
|
||||
if ($version !== '') {
|
||||
return $version;
|
||||
}
|
||||
}
|
||||
return '1.0.0';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user