[AJUDA] Libs RN para comprimir arquivos:

Alguem conhece uma lib que dê para compactar arquivo? eu quero enviar o banco sqlite do meu app para api mas queria enviar uma cópia compactada para não ter problema caso o banco esteja muito grande... tentei o react-native-zip-archive mas meu projeto começou a dar varios erros e não buildou mais, tentei o jszip e não deu erro mas não criou o arquivo compactado, segui a doc e não gerou o arquivo...

compartilha codigo pra gente entender o que vc ta fazendo se possivel.

qual o problema que quer resolver zipando o banco inteiro do app e mandando pra uma api?

Essa função toda que eu estou fazendo já funciona mas sem o arquivo comprimido, eu preciso dessa função pq no meu app o pessoal precisa sincronizar o banco de dados local com o banco de dados online, e dessa forma ficou mais rápido de fazer isso, eu envio o banco para o servidor e lá no servidor eu faço todas as inserções/updated/deletes que precisariam ser feitos no app, aí a api devolve o banco para o app e pronto... Só que eu queria comprimir esse arquivo e enviar para api e descomprimir lá na api (no caminho de volta a mesma coisa)... Esse banco pode ser que fique grande e eu não sei quais problemas isso pode acarretar se o usuário tentar enviar o banco muito grande pois eles usam internet muito instável e eu já vi que tem tambem um limite de payload que é suportado para transmissão entre client/server. ```js async function exportLocalDB() { // DIRETÓRIO ONDE ESTÁ O BANCO SQLITE DO APP const dbPath: string = FileSystem.documentDirectory + 'SQLite/db.db'; // DIRETÓRIO ONDE ESTARÁ O BANCO COMPRIMIDO let zipPath = FileSystem.documentDirectory + "SQLite/archive.zip"; await FileSystem.getInfoAsync(dbPath).then(async (response) => { const { exists } = response; if (exists) { try { // FUNÇÃO PARA COMPRIMIR O BANCO SQLITE E O ARQUIVO COMPRIMIDO SALVANDO NO DIRETORIO ZIPPATH const zipContent = createZip(dbPath, zipPath) const generatedName = getDeviceName() let data: any = new FormData(); // ADICIONANDO A UM FORM data.append('file', { uri: zipContent, type: 'application/zip', name: generatedName }); // ENVIANDO PARA API const teste = await _sendLocalDataBase({ localDB: data?._parts[0][1], id_actor: session?.user?.id_actor }) } catch (error) { console.error("FALHA TO EXPORT DB:", error) } } else { // continue... } }).catch(error => { console.log("FALHA AO ENCONTRAR BASE", error) }) } ``` De tudo nesse código o que falta é apenas a função createZip, eu não estou conseguindo comprimir o arquivo para então pegar esse arquivo comprimido e enviar para o servidor..
nao faz mais sentido vc desenvolver alguma mecânica de sincronização? imagina que mudei uma linha somente, vai mandar o banco todo? coitado do meu 3G
Sim, da forma atual agt faz assim, agt confere o que tem de novo e apenas envia o que tem de novo, porém a sincronização está levando as vezes 30 minutos pois todos os dias tem muitas coisas pra enviar pro usuário... O problema não é que o usuário tenha mudado apenas uma linha, é que todos os dias o banco recebe 20, 40, 50 mil linhas novas que várias dessas linhas esse usuário precisa ter localmente