@sendbird/uikit-react-native
Version:
Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.
77 lines • 2.11 kB
JavaScript
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
import React from 'react';
import { getDownscaleSize, getFileExtension, hash } from '@sendbird/uikit-utils';
import SBUUtils from '../libs/SBUUtils';
const createNativeMediaService = ({
VideoComponent,
thumbnailModule,
imageResizerModule
}) => {
return {
VideoComponent({
source,
resizeMode,
onLoad,
...props
}) {
return /*#__PURE__*/React.createElement(VideoComponent, _extends({}, props, {
source: source,
resizeMode: resizeMode,
onLoad: onLoad,
controls: true
}));
},
async getVideoThumbnail({
url,
timeMills
}) {
try {
const {
path
} = await thumbnailModule.createThumbnail({
url,
format: 'jpeg',
timeStamp: timeMills,
cacheName: hash(url.split('?')[0])
});
return {
path
};
} catch {
return null;
}
},
async compressImage({
uri,
maxWidth,
maxHeight,
compressionRate = 1
}) {
const originSize = await SBUUtils.getImageSize(uri);
const {
width,
height
} = getDownscaleSize(originSize, {
width: maxWidth,
height: maxHeight
});
const extension = (() => {
return {
'png': 'PNG',
'jpeg': 'JPEG',
'jpg': 'JPEG'
}[getFileExtension(uri)] ?? 'JPEG';
})();
const {
size: resizedSize,
uri: compressedURI
} = await imageResizerModule.default.createResizedImage(uri, width, height, extension, Math.min(Math.max(0, compressionRate), 1) * 100);
return {
uri: compressedURI,
size: resizedSize
};
}
};
};
export default createNativeMediaService;
//# sourceMappingURL=createMediaService.native.js.map