@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.
164 lines (160 loc) • 4.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _normalizeFile = _interopRequireDefault(require("./normalizeFile"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
// Legacy expo-file-system API types (before SDK 54)
// New expo-file-system API types (SDK 54+)
// Union type for both legacy and new expo-file-system
const expoBackwardUtils = {
imagePicker: {
isCanceled(result) {
// @ts-expect-error backward compatibility
return result.canceled ?? result.cancelled;
},
async toFilePickerResponses(result, fsModule) {
if (result.assets) {
const assets = result.assets || [];
const promises = assets.map(({
fileName: name,
fileSize: size,
mimeType,
uri
}) => (0, _normalizeFile.default)({
uri,
size,
name,
type: mimeType
}));
return Promise.all(promises);
} else if ('uri' in result && typeof result.uri === 'string') {
const fileInfo = await fsModule.getInfoAsync(result.uri);
const response = await (0, _normalizeFile.default)({
uri: result.uri,
size: expoBackwardUtils.toFileSize(fileInfo)
});
return [response];
} else {
return [];
}
}
},
documentPicker: {
isCanceled(result) {
// @ts-expect-error backward compatibility
return result.canceled ?? result.type === 'cancel';
},
async toFilePickerResponses(result) {
if (result.assets) {
const assets = result.assets || [];
const promises = assets.map(({
name,
size,
mimeType,
uri
}) => (0, _normalizeFile.default)({
uri,
size,
name,
type: mimeType
}));
return Promise.all(promises);
} else if ('uri' in result && typeof result.uri === 'string') {
// @ts-expect-error backward compatibility
const {
mimeType,
uri,
size,
name
} = result;
const response = await (0, _normalizeFile.default)({
uri,
size,
name,
type: mimeType
});
return [response];
} else {
return [];
}
}
},
expoAV: {
isLegacyAVModule(module) {
try {
return 'Video' in module && 'Audio' in module && typeof module.Video === 'function';
} catch {
return false;
}
},
isAudioModule(module) {
try {
return 'useAudioRecorder' in module && typeof module.useAudioRecorder === 'function';
} catch {
return false;
}
},
isVideoModule(module) {
try {
return 'VideoView' in module && 'useVideoPlayer' in module && typeof module.useVideoPlayer === 'function';
} catch {
return false;
}
}
},
toFileSize(info) {
if ('size' in info && info.size !== undefined) {
return info.size;
} else {
return 0;
}
},
fileSystem: {
isLegacyModule(fsModule) {
try {
return 'documentDirectory' in fsModule || 'cacheDirectory' in fsModule;
} catch {
return false;
}
},
async getFileInfo(fsModule, uri) {
if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {
return await fsModule.getInfoAsync(uri);
} else {
const file = new fsModule.File(uri);
return file.info();
}
},
getDocumentDirectory(fsModule) {
if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {
return fsModule.documentDirectory || null;
} else {
var _fsModule$Paths;
return ((_fsModule$Paths = fsModule.Paths) === null || _fsModule$Paths === void 0 || (_fsModule$Paths = _fsModule$Paths.document) === null || _fsModule$Paths === void 0 ? void 0 : _fsModule$Paths.uri) || null;
}
},
getCacheDirectory(fsModule) {
if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {
return fsModule.cacheDirectory || null;
} else {
var _fsModule$Paths2;
return ((_fsModule$Paths2 = fsModule.Paths) === null || _fsModule$Paths2 === void 0 || (_fsModule$Paths2 = _fsModule$Paths2.cache) === null || _fsModule$Paths2 === void 0 ? void 0 : _fsModule$Paths2.uri) || null;
}
},
async downloadFile(fsModule, url, localUri) {
if (expoBackwardUtils.fileSystem.isLegacyModule(fsModule)) {
return await fsModule.downloadAsync(url, localUri);
} else {
const destination = new fsModule.File(localUri);
const result = await fsModule.File.downloadFileAsync(url, destination);
return {
uri: result.uri
};
}
}
}
};
var _default = exports.default = expoBackwardUtils;
//# sourceMappingURL=expoBackwardUtils.js.map