TF-629 Add list of supported mimeType in Android and iOS

This commit is contained in:
Dat PHAM HOANG
2022-06-08 22:22:23 +07:00
committed by Dat H. Pham
parent 34f3cfd6b1
commit 40a470dc21
5 changed files with 199 additions and 85 deletions
+82 -85
View File
@@ -1,97 +1,94 @@
library core;
// Extensions
export 'presentation/extensions/color_extension.dart';
export 'presentation/extensions/url_extension.dart';
export 'presentation/extensions/capitalize_extension.dart';
export 'presentation/extensions/list_extensions.dart';
export 'domain/extensions/datetime_extension.dart';
export 'presentation/extensions/html_extension.dart';
export 'presentation/extensions/compare_string_extension.dart';
export 'presentation/extensions/compare_list_extensions.dart';
export 'package:core/domain/extensions/media_type_extension.dart';
// Preview
export 'package:core/domain/preview/document_uti.dart';
export 'package:core/domain/preview/supported_preview_file_types.dart';
// Exceptions
export 'domain/exceptions/download_file_exception.dart';
export 'data/extensions/options_extensions.dart';
// Utils
export 'presentation/utils/theme_utils.dart';
export 'presentation/utils/responsive_utils.dart';
export 'presentation/utils/keyboard_utils.dart';
export 'presentation/utils/style_utils.dart';
export 'presentation/utils/app_toast.dart';
export 'presentation/utils/html_transformer/html_template.dart';
export 'presentation/utils/html_transformer/html_transform.dart';
export 'presentation/utils/html_transformer/transform_configuration.dart';
export 'presentation/utils/html_transformer/dom/add_tooltip_link_transformers.dart';
export 'data/utils/device_manager.dart';
export 'utils/app_logger.dart';
export 'utils/benchmark.dart';
export 'utils/fps_manager.dart';
export 'utils/build_utils.dart';
// Views
export 'presentation/views/text/slogan_builder.dart';
export 'presentation/views/text/text_field_builder.dart';
export 'presentation/views/text/input_decoration_builder.dart';
export 'presentation/views/text/text_builder.dart';
export 'presentation/views/text/rich_text_builder.dart';
export 'presentation/views/responsive/responsive_widget.dart';
export 'presentation/views/list/tree_view.dart';
export 'presentation/views/button/button_builder.dart';
export 'presentation/views/button/icon_button_web.dart';
export 'presentation/views/image/avatar_builder.dart';
export 'presentation/views/list/sliver_grid_delegate_fixed_height.dart';
export 'presentation/views/image/icon_builder.dart';
export 'presentation/views/context_menu/context_menu_action_builder.dart';
export 'presentation/views/context_menu/context_menu_builder.dart';
export 'presentation/views/context_menu/context_menu_header_builder.dart';
export 'presentation/views/context_menu/simple_context_menu_action_builder.dart';
export 'presentation/views/dialog/downloading_file_dialog_builder.dart';
export 'presentation/views/dialog/confirmation_dialog_builder.dart';
export 'presentation/views/dialog/edit_text_dialog_builder.dart';
export 'presentation/views/background/background_widget_builder.dart';
export 'presentation/views/html_viewer/html_content_viewer_widget.dart';
export 'presentation/views/html_viewer/html_content_viewer_on_web_widget.dart';
export 'presentation/views/html_viewer/html_viewer_controller_for_web.dart';
export 'presentation/views/floating_button/scrolling_floating_button_animated.dart';
export 'presentation/views/bottom_popup/cupertino_action_sheet_action_builder.dart';
export 'presentation/views/bottom_popup/cupertino_action_sheet_builder.dart';
export 'presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
export 'presentation/views/modal_sheets/edit_text_modal_sheet_builder.dart';
export 'presentation/views/search/search_bar_view.dart';
export 'presentation/views/popup_menu/popup_menu_item_widget.dart';
export 'presentation/views/tab_bar/custom_tab_indicator.dart';
export 'presentation/views/quick_search/quick_search_input_form.dart';
export 'presentation/views/toast/toast_position.dart';
export 'presentation/views/toast/tmail_toast.dart';
// Resources
export 'presentation/resources/assets_paths.dart';
export 'presentation/resources/image_paths.dart';
// Constants
export 'presentation/constants/constants_ui.dart';
export 'data/constants/constant.dart';
export 'data/extensions/options_extensions.dart';
// Local
export 'data/local/config/database_config.dart';
export 'data/local/config/email_address_table.dart';
export 'data/local/database_client.dart';
export 'data/local/database_manager.dart';
export 'data/model/query/query_parameter.dart';
// Model
export 'data/model/source_type/data_source_type.dart';
// Network
export 'data/network/config/dynamic_url_interceptors.dart';
export 'data/network/config/service_path.dart';
export 'data/network/dio_client.dart';
export 'data/network/download/download_client.dart';
export 'data/network/download/download_manager.dart';
export 'data/network/download/downloaded_response.dart';
export 'data/utils/device_manager.dart';
// Exceptions
export 'domain/exceptions/download_file_exception.dart';
export 'domain/extensions/datetime_extension.dart';
// Constants
export 'presentation/constants/constants_ui.dart';
export 'presentation/extensions/capitalize_extension.dart';
// Extensions
export 'presentation/extensions/color_extension.dart';
export 'presentation/extensions/compare_list_extensions.dart';
export 'presentation/extensions/compare_string_extension.dart';
export 'presentation/extensions/html_extension.dart';
export 'presentation/extensions/list_extensions.dart';
export 'presentation/extensions/url_extension.dart';
// Resources
export 'presentation/resources/assets_paths.dart';
export 'presentation/resources/image_paths.dart';
export 'presentation/state/app_state.dart';
export 'presentation/state/failure.dart';
// State
export 'presentation/state/success.dart';
export 'presentation/state/failure.dart';
export 'presentation/state/app_state.dart';
// Local
export 'data/local/config/database_config.dart';
export 'data/local/config/email_address_table.dart';
export 'data/local/database_client.dart';
export 'data/local/database_manager.dart';
// Model
export 'data/model/source_type/data_source_type.dart';
export 'data/model/query/query_parameter.dart';
export 'presentation/utils/app_toast.dart';
export 'presentation/utils/html_transformer/dom/add_tooltip_link_transformers.dart';
export 'presentation/utils/html_transformer/html_template.dart';
export 'presentation/utils/html_transformer/html_transform.dart';
export 'presentation/utils/html_transformer/transform_configuration.dart';
export 'presentation/utils/keyboard_utils.dart';
export 'presentation/utils/responsive_utils.dart';
export 'presentation/utils/style_utils.dart';
// Utils
export 'presentation/utils/theme_utils.dart';
export 'presentation/views/background/background_widget_builder.dart';
export 'presentation/views/bottom_popup/confirmation_dialog_action_sheet_builder.dart';
export 'presentation/views/bottom_popup/cupertino_action_sheet_action_builder.dart';
export 'presentation/views/bottom_popup/cupertino_action_sheet_builder.dart';
export 'presentation/views/button/button_builder.dart';
export 'presentation/views/button/icon_button_web.dart';
export 'presentation/views/context_menu/context_menu_action_builder.dart';
export 'presentation/views/context_menu/context_menu_builder.dart';
export 'presentation/views/context_menu/context_menu_header_builder.dart';
export 'presentation/views/context_menu/simple_context_menu_action_builder.dart';
export 'presentation/views/dialog/confirmation_dialog_builder.dart';
export 'presentation/views/dialog/downloading_file_dialog_builder.dart';
export 'presentation/views/dialog/edit_text_dialog_builder.dart';
export 'presentation/views/floating_button/scrolling_floating_button_animated.dart';
export 'presentation/views/html_viewer/html_content_viewer_on_web_widget.dart';
export 'presentation/views/html_viewer/html_content_viewer_widget.dart';
export 'presentation/views/html_viewer/html_viewer_controller_for_web.dart';
export 'presentation/views/image/avatar_builder.dart';
export 'presentation/views/image/icon_builder.dart';
export 'presentation/views/list/sliver_grid_delegate_fixed_height.dart';
export 'presentation/views/list/tree_view.dart';
export 'presentation/views/modal_sheets/edit_text_modal_sheet_builder.dart';
export 'presentation/views/popup_menu/popup_menu_item_widget.dart';
export 'presentation/views/quick_search/quick_search_input_form.dart';
export 'presentation/views/responsive/responsive_widget.dart';
export 'presentation/views/search/search_bar_view.dart';
export 'presentation/views/tab_bar/custom_tab_indicator.dart';
export 'presentation/views/text/input_decoration_builder.dart';
export 'presentation/views/text/rich_text_builder.dart';
// Views
export 'presentation/views/text/slogan_builder.dart';
export 'presentation/views/text/text_builder.dart';
export 'presentation/views/text/text_field_builder.dart';
export 'presentation/views/toast/tmail_toast.dart';
export 'presentation/views/toast/toast_position.dart';
export 'utils/app_logger.dart';
export 'utils/benchmark.dart';
export 'utils/build_utils.dart';
export 'utils/fps_manager.dart';
@@ -0,0 +1,12 @@
import 'package:equatable/equatable.dart';
import 'package:http_parser/http_parser.dart';
class DownloadedResponse with EquatableMixin {
final String filePath;
final MediaType? mediaType;
DownloadedResponse(this.filePath, {this.mediaType});
@override
List<Object?> get props => [filePath, mediaType];
}
@@ -0,0 +1,13 @@
import 'package:core/domain/preview/document_uti.dart';
import 'package:core/domain/preview/supported_preview_file_types.dart';
import 'package:http_parser/http_parser.dart';
extension MediaTypeExtension on MediaType {
bool isAndroidSupportedPreview() => SupportedPreviewFileTypes.androidSupportedTypes.contains(mimeType);
bool isIOSSupportedPreview() => SupportedPreviewFileTypes.iOSSupportedTypes.containsKey(mimeType);
bool isImageFile() => SupportedPreviewFileTypes.imageMimeTypes.contains(mimeType);
DocumentUti getDocumentUti() => DocumentUti(SupportedPreviewFileTypes.iOSSupportedTypes[mimeType]);
}
+10
View File
@@ -0,0 +1,10 @@
import 'package:equatable/equatable.dart';
class DocumentUti with EquatableMixin{
final String? value;
DocumentUti(this.value);
@override
List<Object?> get props => [value];
}
@@ -0,0 +1,82 @@
class SupportedPreviewFileTypes {
static const imageMimeTypes = [
'image/bmp',
'image/jpeg',
'image/gif',
'image/png',];
static const iOSSupportedTypes = {
'text/plain' : 'public.plain-text',
'text/html' : 'public.html',
'video/x-msvideo' : 'public.avi',
'video/mpeg' : 'public.mpeg',
'video/mp4' : 'public.mpeg-4',
'video/3gpp' : 'public.3gpp',
'video/quicktime' : 'public.mpeg-4',
'audio/mpeg' : 'public.mp3',
'audio/wav' : 'com.microsoft.waveform-audio',
'audio/x-ms-wmv' : 'com.microsoft.windows-media-wmv',
'image/jpeg' : 'public.jpeg',
'image/png' : 'public.png',
'image/gif' : 'com.compuserve.gif',
'image/bmp' : 'com.microsoft.bmp',
'image/vnd.microsoft.icon' : 'com.microsoft.ico',
'application/zip' : 'com.pkware.zip-archive',
'application/rtf' : 'public.rtf',
'application/xml' : 'public.xml',
'application/x-tar' : 'public.tar-archive',
'application/gzip' : 'org.gnu.gnu-zip-archive',
'application/x-compressed' : 'org.gnu.gnu-zip-tar-archive',
'application/msword' : 'com.microsoft.word.doc',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document' : 'com.microsoft.word.doc',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' : 'com.microsoft.excel.xls',
'application/vnd.openxmlformats-officedocument.presentationml.presentation' : 'com.microsoft.powerpoint.ppt',
'application/pdf' : 'com.adobe.pdf',
};
static const androidSupportedTypes = [
'image/bmp',
'image/jpeg',
'image/gif',
'image/png',
'text/plain',
'text/html',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'application/msword',
'application/vnd.ms-excel',
'application/vnd.ms-powerpoint',
'application/vnd.ms-outlook',
'application/vnd.ms-works',
'application/vnd.mpohun.certificate',
'application/vnd.android.package-archive',
'application/octet-stream',
'application/x-tar',
'application/x-gtar',
'application/x-gzip',
'application/x-javascript',
'application/x-compressed',
'application/x-zip-compressed',
'application/java-archive',
'application/pdf',
'application/rtf',
'audio/x-mpegurl',
'video/x-m4v',
'video/x-ms-asf',
'video/x-msvideo',
'audio/x-mpeg',
'audio/mp4a-latm',
'video/vnd.mpegurl',
'video/quicktime',
'video/mp4',
'video/3gpp',
'video/mpeg',
'audio/mpeg',
'audio/ogg',
'audio/x-pn-realaudio',
'audio/x-wav',
'audio/x-ms-wma',
'audio/x-ms-wmv',
];
}