mirror of
https://github.com/balzack/databag.git
synced 2025-02-12 03:29:16 +00:00
only scale sealed image if not gif
This commit is contained in:
parent
e5a34beceb
commit
f76470c860
@ -4,8 +4,8 @@ import { createThumbnail } from "react-native-create-thumbnail";
|
|||||||
import ImageResizer from '@bam.tech/react-native-image-resizer';
|
import ImageResizer from '@bam.tech/react-native-image-resizer';
|
||||||
import RNFS from 'react-native-fs';
|
import RNFS from 'react-native-fs';
|
||||||
|
|
||||||
const ENCRYPTED_BLOCK_SIZE = (1024 * 1024);
|
const ENCRYPTED_BLOCK_SIZE = (256 * 1024);
|
||||||
const SCALE_SIZE = (128 * 1024 * 1024);
|
const SCALE_SIZE = (128 * 1024);
|
||||||
const GIF_TYPE = 'image/gif';
|
const GIF_TYPE = 'image/gif';
|
||||||
const WEBP_TYPE = 'image/webp';
|
const WEBP_TYPE = 'image/webp';
|
||||||
|
|
||||||
|
@ -29,7 +29,10 @@ export function useAddTopic(contentKey) {
|
|||||||
conflict: false,
|
conflict: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
const SCALE_SIZE = (128 * 1024 * 1024);
|
const SCALE_SIZE = (128 * 1024);
|
||||||
|
const GIF_TYPE = 'image/gif';
|
||||||
|
const WEBP_TYPE = 'image/webp';
|
||||||
|
|
||||||
const assetId = useRef(0);
|
const assetId = useRef(0);
|
||||||
const conversation = useContext(ConversationContext);
|
const conversation = useContext(ConversationContext);
|
||||||
const account = useContext(AccountContext);
|
const account = useContext(AccountContext);
|
||||||
@ -106,12 +109,12 @@ export function useAddTopic(contentKey) {
|
|||||||
updateState({ enableImage, enableAudio, enableVideo, locked, loaded });
|
updateState({ enableImage, enableAudio, enableVideo, locked, loaded });
|
||||||
}, [conversation.state]);
|
}, [conversation.state]);
|
||||||
|
|
||||||
const setAsset = async (file, scale) => {
|
const setAsset = async (file, mime, scale) => {
|
||||||
const url = file.startsWith('file:') ? file : `file://${file}`;
|
const url = file.startsWith('file:') ? file : `file://${file}`;
|
||||||
|
|
||||||
if (contentKey) {
|
if (contentKey) {
|
||||||
const orig = await RNFS.stat(url);
|
const orig = await RNFS.stat(url);
|
||||||
const scaled = (scale && orig.size > SCALE_SIZE) ? await scale(url) : url;
|
const scaled = (scale && orig.size > SCALE_SIZE && (mime !== GIF_TYPE && mime !== WEBP_TYPE)) ? await scale(url) : url;
|
||||||
const stat = await RNFS.stat(scaled);
|
const stat = await RNFS.stat(scaled);
|
||||||
const getEncryptedBlock = async (pos, len) => {
|
const getEncryptedBlock = async (pos, len) => {
|
||||||
if (pos + len > stat.size) {
|
if (pos + len > stat.size) {
|
||||||
@ -133,7 +136,7 @@ export function useAddTopic(contentKey) {
|
|||||||
},
|
},
|
||||||
addImage: async (data, mime) => {
|
addImage: async (data, mime) => {
|
||||||
assetId.current++;
|
assetId.current++;
|
||||||
const asset = await setAsset(data, async (file) => {
|
const asset = await setAsset(data, mime, async (file) => {
|
||||||
const scaled = await ImageResizer.createResizedImage(file, 512, 512, "JPEG", 90, 0, null);
|
const scaled = await ImageResizer.createResizedImage(file, 512, 512, "JPEG", 90, 0, null);
|
||||||
return `file://${scaled.path}`;
|
return `file://${scaled.path}`;
|
||||||
});
|
});
|
||||||
|
@ -2,8 +2,8 @@ import { useState, useRef } from 'react';
|
|||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
import Resizer from "react-image-file-resizer";
|
import Resizer from "react-image-file-resizer";
|
||||||
|
|
||||||
const ENCRYPTED_BLOCK_SIZE = (1024 * 1024);
|
const ENCRYPTED_BLOCK_SIZE = (256 * 1024);
|
||||||
const IMAGE_SCALE_SIZE = (128 * 1024 * 1024);
|
const IMAGE_SCALE_SIZE = (128 * 1024);
|
||||||
const GIF_TYPE = 'image/gif';
|
const GIF_TYPE = 'image/gif';
|
||||||
const WEBP_TYPE = 'image/webp';
|
const WEBP_TYPE = 'image/webp';
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user