1
0
mirror of https://gitcode.com/gh_mirrors/re/react-native-pushy.git synced 2025-10-28 20:13:10 +08:00
Code Issues Packages Projects Releases Wiki Activity GitHub Gitee

fix unzip

This commit is contained in:
sunnylqm
2025-10-25 00:59:12 +08:00
parent 3134f36739
commit ba5b35813d
3 changed files with 21 additions and 27 deletions

View File

@@ -1,10 +1,8 @@
import http from '@ohos.net.http'; import http from '@ohos.net.http';
import fileIo from '@ohos.file.fs'; import fileIo from '@ohos.file.fs';
import util from '@ohos.util';
import common from '@ohos.app.ability.common'; import common from '@ohos.app.ability.common';
import { BusinessError } from '@kit.BasicServicesKit';
import { buffer } from '@kit.ArkTS'; import { buffer } from '@kit.ArkTS';
import zip from '@ohos.zlib'; import { zlib, BusinessError } from '@kit.BasicServicesKit';
import { EventHub } from './EventHub'; import { EventHub } from './EventHub';
import { DownloadTaskParams } from './DownloadTaskParams'; import { DownloadTaskParams } from './DownloadTaskParams';
import Pushy from 'librnupdate.so'; import Pushy from 'librnupdate.so';
@@ -37,7 +35,9 @@ export class DownloadTask {
if (stat.isDirectory()) { if (stat.isDirectory()) {
const files = await fileIo.listFile(path); const files = await fileIo.listFile(path);
for (const file of files) { for (const file of files) {
if (file === '.' || file === '..') continue; if (file === '.' || file === '..') {
continue;
}
await this.removeDirectory(`${path}/${file}`); await this.removeDirectory(`${path}/${file}`);
} }
await fileIo.rmdir(path); await fileIo.rmdir(path);
@@ -180,12 +180,7 @@ export class DownloadTask {
await this.removeDirectory(params.unzipDirectory); await this.removeDirectory(params.unzipDirectory);
await fileIo.mkdir(params.unzipDirectory); await fileIo.mkdir(params.unzipDirectory);
try { await zlib.decompressFile(params.targetFile, params.unzipDirectory);
await zip.decompressFile(params.targetFile, params.unzipDirectory);
} catch (error) {
console.error('Unzip failed:', error);
throw error;
}
} }
private async processUnzippedFiles(directory: string): Promise<ZipFile> { private async processUnzippedFiles(directory: string): Promise<ZipFile> {
@@ -193,7 +188,9 @@ export class DownloadTask {
try { try {
const files = await fileIo.listFile(directory); const files = await fileIo.listFile(directory);
for (const file of files) { for (const file of files) {
if (file === '.' || file === '..') continue; if (file === '.' || file === '..') {
continue;
}
const filePath = `${directory}/${file}`; const filePath = `${directory}/${file}`;
const stat = await fileIo.stat(filePath); const stat = await fileIo.stat(filePath);
@@ -230,7 +227,7 @@ export class DownloadTask {
let foundDiff = false; let foundDiff = false;
let foundBundlePatch = false; let foundBundlePatch = false;
const copyList: Map<string, Array<any>> = new Map(); const copyList: Map<string, Array<any>> = new Map();
await zip.decompressFile(params.targetFile, params.unzipDirectory); await zlib.decompressFile(params.targetFile, params.unzipDirectory);
const zipFile = await this.processUnzippedFiles(params.unzipDirectory); const zipFile = await this.processUnzippedFiles(params.unzipDirectory);
for (const entry of zipFile.entries) { for (const entry of zipFile.entries) {
const fn = entry.filename; const fn = entry.filename;
@@ -295,10 +292,6 @@ export class DownloadTask {
throw error; throw error;
} }
} }
if (fn !== '.DS_Store') {
await zip.decompressFile(fn, params.unzipDirectory);
}
} }
if (!foundDiff) { if (!foundDiff) {
@@ -318,7 +311,7 @@ export class DownloadTask {
let foundDiff = false; let foundDiff = false;
let foundBundlePatch = false; let foundBundlePatch = false;
const copyList: Map<string, Array<any>> = new Map(); const copyList: Map<string, Array<any>> = new Map();
await zip.decompressFile(params.targetFile, params.unzipDirectory); await zlib.decompressFile(params.targetFile, params.unzipDirectory);
const zipFile = await this.processUnzippedFiles(params.unzipDirectory); const zipFile = await this.processUnzippedFiles(params.unzipDirectory);
for (const entry of zipFile.entries) { for (const entry of zipFile.entries) {
const fn = entry.filename; const fn = entry.filename;
@@ -389,8 +382,6 @@ export class DownloadTask {
} }
} }
} }
await zip.decompressFile(entry.filename, params.unzipDirectory);
} }
if (!foundDiff) { if (!foundDiff) {
@@ -410,7 +401,9 @@ export class DownloadTask {
const files = await fileIo.listFile(bundlePath); const files = await fileIo.listFile(bundlePath);
for (const file of files) { for (const file of files) {
if (file === '.' || file === '..') continue; if (file === '.' || file === '..') {
continue;
}
const targets = copyList.get(file); const targets = copyList.get(file);
if (targets) { if (targets) {
@@ -443,7 +436,9 @@ export class DownloadTask {
try { try {
const files = await fileIo.listFile(params.unzipDirectory); const files = await fileIo.listFile(params.unzipDirectory);
for (const file of files) { for (const file of files) {
if (file.startsWith('.')) continue; if (file.startsWith('.')) {
continue;
}
const filePath = `${params.unzipDirectory}/${file}`; const filePath = `${params.unzipDirectory}/${file}`;
const stat = await fileIo.stat(filePath); const stat = await fileIo.stat(filePath);

View File

@@ -26,14 +26,13 @@ export class PushyFileJSBundleProvider extends JSBundleProvider {
if (!this.path) { if (!this.path) {
throw new JSBundleProviderError({ throw new JSBundleProviderError({
whatHappened: 'No pushy bundle found. using default bundle', whatHappened: 'No pushy bundle found. using default bundle',
howCanItBeFixed: ['']
}) })
} }
try { try {
const status = await fs.access(this.path, fs.OpenMode.READ_ONLY); await fs.access(this.path, fs.OpenMode.READ_ONLY);
if (status) { return {
return { filePath: this.path
filePath: this.path
}
} }
} catch (error) { } catch (error) {
throw new JSBundleProviderError({ throw new JSBundleProviderError({

View File

@@ -1,6 +1,6 @@
{ {
"name": "react-native-update", "name": "react-native-update",
"version": "10.35.1", "version": "10.35.2",
"description": "react-native hot update", "description": "react-native hot update",
"main": "src/index", "main": "src/index",
"scripts": { "scripts": {