@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.
81 lines (80 loc) • 2.4 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _uikitUtils = require("@sendbird/uikit-utils");
var _SBUUtils = _interopRequireDefault(require("../libs/SBUUtils"));
var _expoBackwardUtils = _interopRequireDefault(require("../utils/expoBackwardUtils"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
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); }
const createExpoMediaService = ({
avModule,
thumbnailModule,
imageManipulator,
fsModule
}) => {
return {
VideoComponent({
source,
resizeMode,
onLoad,
...props
}) {
// FIXME: type error https://github.com/expo/expo/issues/17101
// @ts-ignore
return /*#__PURE__*/_react.default.createElement(avModule.Video, _extends({}, props, {
source: source,
resizeMode: resizeMode,
onLoad: onLoad,
useNativeControls: true
}));
},
async getVideoThumbnail({
url,
quality,
timeMills
}) {
try {
const {
uri
} = await thumbnailModule.getThumbnailAsync(url, {
quality,
time: timeMills
});
return {
path: uri
};
} catch {
return null;
}
},
async compressImage({
maxWidth,
maxHeight,
compressionRate = 1,
uri
}) {
const originSize = await _SBUUtils.default.getImageSize(uri);
const resizingSize = (0, _uikitUtils.getDownscaleSize)(originSize, {
width: maxWidth,
height: maxHeight
});
const {
uri: compressedURI
} = await imageManipulator.manipulateAsync(uri, [{
resize: resizingSize
}], {
compress: Math.min(Math.max(0, compressionRate), 1)
});
const fileInfo = await fsModule.getInfoAsync(uri);
return {
uri: compressedURI,
size: _expoBackwardUtils.default.toFileSize(fileInfo)
};
}
};
};
var _default = exports.default = createExpoMediaService;
//# sourceMappingURL=createMediaService.expo.js.map
;