fix(vikon): use getFileByIdentityInfo dir_name for correct file paths

This commit is contained in:
F4ilji
2026-07-04 22:15:59 +05:00
parent d7c9de2bd6
commit c4314e2f43
@@ -99,34 +99,44 @@ class UpdateCoreAction
$accessToken, $accessToken,
'filemanager' 'filemanager'
); );
$targetDir = $filesDir;
} else { } else {
$response = $this->http->getWithToken( $response = $this->http->getWithToken(
"sync/getFileNamesFromSubDirectoryByModule?dir={$dirId}&moduleId={$moduleId}", "sync/getFileNamesFromSubDirectoryByModule?dir={$dirId}&moduleId={$moduleId}",
$accessToken, $accessToken,
'filemanager' 'filemanager'
); );
$targetDir = $filesDir . '/' . $dirId;
} }
$files = $response->json()['files'] ?? []; $files = $response->json()['files'] ?? [];
if (empty($files)) return 0; if (empty($files)) return 0;
File::makeDirectory($targetDir, 0755, true, true);
$synced = 0; $synced = 0;
foreach ($files as $file) { foreach ($files as $file) {
$name = $file['n'] ?? null;
$identity = $file['i'] ?? null; $identity = $file['i'] ?? null;
if (!$name || !$identity) continue; if (!$identity) continue;
try { try {
$infoResp = $this->http->getWithToken(
"sync/getFileByIdentityInfo?identity={$identity}",
$accessToken,
'filemanager'
);
$info = $infoResp->json();
$filename = $info['file_name'] ?? $file['n'] ?? null;
$dirName = $info['dir_name'] ?? null;
if (!$filename) continue;
$targetDir = $dirName ? $filesDir . '/' . $dirName : $filesDir;
File::makeDirectory($targetDir, 0755, true, true);
$content = $this->http->downloadWithToken( $content = $this->http->downloadWithToken(
"sync/downloadFileBinaryForSync?identity={$identity}&moduleId={$moduleId}", "sync/downloadFileBinaryForSync?identity={$identity}&moduleId={$moduleId}",
$accessToken, $accessToken,
'filemanager' 'filemanager'
); );
file_put_contents($targetDir . '/' . $name, $content); file_put_contents($targetDir . '/' . $filename, $content);
$synced++; $synced++;
} catch (\Throwable $e) { } catch (\Throwable $e) {
Log::warning('Vikon FM: download failed', ['identity' => $identity, 'error' => $e->getMessage()]); Log::warning('Vikon FM: download failed', ['identity' => $identity, 'error' => $e->getMessage()]);