cozy-search
Version:
UI components about search bar and IA assistant
135 lines (102 loc) • 4.59 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getIconForSearchResult = exports.getDriveMimeTypeIcon = void 0;
var _get = _interopRequireDefault(require("lodash/get"));
var _file = require("cozy-client/dist/models/file");
var _Contacts = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/Contacts"));
var _FileTypeAudio = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeAudio"));
var _FileTypeBin = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeBin"));
var _FileTypeCode = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeCode"));
var _FileTypeFiles = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeFiles"));
var _FileTypeFolder = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeFolder"));
var _FileTypeImage = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeImage"));
var _FileTypeNote = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeNote"));
var _FileTypePdf = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypePdf"));
var _FileTypeSheet = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeSheet"));
var _FileTypeSlide = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeSlide"));
var _FileTypeText = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeText"));
var _FileTypeVideo = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeVideo"));
var _FileTypeZip = _interopRequireDefault(require("cozy-ui/transpiled/react/Icons/FileTypeZip"));
var _DocsIcon = _interopRequireDefault(require("./Icons/DocsIcon"));
var _EncryptedFolderIcon = _interopRequireDefault(require("./Icons/EncryptedFolderIcon"));
var _getFileMimetype = require("./getFileMimetype");
var getIconForSearchResult = function getIconForSearchResult(searchResult) {
if (searchResult.doc._type === 'io.cozy.apps') {
return {
type: 'app',
app: searchResult.doc
};
}
if (searchResult.slug === 'notes') {
return {
type: 'component',
component: _FileTypeNote.default
};
}
if (searchResult.slug === 'drive') {
return {
type: 'component',
component: getDriveMimeTypeIcon(searchResult.doc)
};
}
if (searchResult.slug === 'contacts') {
return {
type: 'component',
component: _Contacts.default
};
}
return {
type: 'component',
component: _FileTypeFiles.default
};
};
/**
* Returns the appropriate icon for a given file based on its mime type and other properties.
*
* This method has been copied from cozy-drive
*
* See source: https://github.com/cozy/cozy-drive/blob/fbe2df67199683b23a40f476ccdacb00ee027459/src/lib/getMimeTypeIcon.js
*
* @param {import('cozy-client/types/types').IOCozyFile} file - The io.cozy.files .
* @param {Object} [options] - Additional options.
* @param {boolean} [options.isEncrypted] - Indicates whether the file is encrypted. Default is false.
* @returns {import('react').ReactNode} - The icon corresponding to the file's mime type.
*/
exports.getIconForSearchResult = getIconForSearchResult;
var getDriveMimeTypeIcon = function getDriveMimeTypeIcon(file) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
_ref$isEncrypted = _ref.isEncrypted,
isEncrypted = _ref$isEncrypted === void 0 ? false : _ref$isEncrypted;
var isDirectory = file.type === 'directory';
var name = file.name,
mime = file.mime;
if (isEncrypted) {
return _EncryptedFolderIcon.default;
}
if (isDirectory) {
return _FileTypeFolder.default;
} else if ((0, _file.isNote)(file)) {
return _FileTypeNote.default;
} else if ((0, _file.isDocs)(file)) {
return _DocsIcon.default;
} else {
var iconsByMimeType = {
audio: _FileTypeAudio.default,
bin: _FileTypeBin.default,
code: _FileTypeCode.default,
image: _FileTypeImage.default,
pdf: _FileTypePdf.default,
slide: _FileTypeSlide.default,
sheet: _FileTypeSheet.default,
text: _FileTypeText.default,
video: _FileTypeVideo.default,
zip: _FileTypeZip.default
};
var type = (0, _getFileMimetype.getFileMimetype)(iconsByMimeType)(mime, name);
return (0, _get.default)(iconsByMimeType, type, _FileTypeFiles.default);
}
};
exports.getDriveMimeTypeIcon = getDriveMimeTypeIcon;