From b5d8776af9ed581c80e6eedf36d8e9a8b69d62b4 Mon Sep 17 00:00:00 2001 From: dab246 Date: Fri, 23 Feb 2024 11:41:40 +0700 Subject: [PATCH] TF-2602 Add detect file charset on mobile --- contact/pubspec.lock | 32 ++++++++++++++++++++++++++++++++ core/lib/utils/file_utils.dart | 15 +++++++++++++++ core/pubspec.lock | 32 ++++++++++++++++++++++++++++++++ core/pubspec.yaml | 2 ++ ios/Podfile.lock | 10 ++++++++++ model/pubspec.lock | 32 ++++++++++++++++++++++++++++++++ pubspec.lock | 32 ++++++++++++++++++++++++++++++++ 7 files changed, 155 insertions(+) diff --git a/contact/pubspec.lock b/contact/pubspec.lock index c10750fd0..ded701d80 100644 --- a/contact/pubspec.lock +++ b/contact/pubspec.lock @@ -333,6 +333,38 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_charset_detector: + dependency: transitive + description: + name: flutter_charset_detector + sha256: "45de8a4b4255c1ea850a30955e7456091899ed4ff8b75593e14ec59f629b4b56" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + flutter_charset_detector_android: + dependency: transitive + description: + name: flutter_charset_detector_android + sha256: bee057133d5f134fe211523a27200dd22c782b93777f43359a571bd2c77da2cc + url: "https://pub.dev" + source: hosted + version: "2.1.1" + flutter_charset_detector_ios: + dependency: transitive + description: + name: flutter_charset_detector_ios + sha256: e0e2c7b819cd1f7c9a50da94bf7f0e6d7a095eb64e81196ec758e77793903d43 + url: "https://pub.dev" + source: hosted + version: "1.0.2" + flutter_charset_detector_platform_interface: + dependency: transitive + description: + name: flutter_charset_detector_platform_interface + sha256: "1c09ed7b314a5a9dde76057b98b7d35458ba881eed03d5e5b6f7f74b4869d18c" + url: "https://pub.dev" + source: hosted + version: "1.1.0" flutter_image_compress: dependency: transitive description: diff --git a/core/lib/utils/file_utils.dart b/core/lib/utils/file_utils.dart index 282310ad3..9cd270820 100644 --- a/core/lib/utils/file_utils.dart +++ b/core/lib/utils/file_utils.dart @@ -5,9 +5,12 @@ import 'package:core/domain/exceptions/download_file_exception.dart'; import 'package:core/utils/app_logger.dart'; import 'package:core/utils/platform_info.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_charset_detector/flutter_charset_detector.dart'; import 'package:path_provider/path_provider.dart'; class FileUtils { + static const String DEFAULT_CHARSET = 'UTF-8'; + static const String TEXT_PLAIN_MIME_TYPE = 'text/plain'; Future _getInternalStorageDirPath({ required String nameFile, @@ -135,4 +138,16 @@ class FileUtils { logError('$runtimeType::deleteCompressedFileOnMobile: error: $e'); } } + + Future getFileCharset(String filePath) async { + try { + final file = File(filePath); + final decodingResult = await CharsetDetector.autoDecode(file.readAsBytesSync()); + logError('FileUtils::getFileCharset: FILE_CHARSET = ${decodingResult.charset}'); + return decodingResult.charset; + } catch (e) { + logError('FileUtils::getFileCharset: Exception: $e'); + return DEFAULT_CHARSET; + } + } } \ No newline at end of file diff --git a/core/pubspec.lock b/core/pubspec.lock index 65cc6eb53..445594eb9 100644 --- a/core/pubspec.lock +++ b/core/pubspec.lock @@ -326,6 +326,38 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_charset_detector: + dependency: "direct main" + description: + name: flutter_charset_detector + sha256: "45de8a4b4255c1ea850a30955e7456091899ed4ff8b75593e14ec59f629b4b56" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + flutter_charset_detector_android: + dependency: transitive + description: + name: flutter_charset_detector_android + sha256: "43d0c0063242d036b873ade737ebae38716af5cd8b2a4df1754adfd186d58e2c" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + flutter_charset_detector_ios: + dependency: transitive + description: + name: flutter_charset_detector_ios + sha256: e0e2c7b819cd1f7c9a50da94bf7f0e6d7a095eb64e81196ec758e77793903d43 + url: "https://pub.dev" + source: hosted + version: "1.0.2" + flutter_charset_detector_platform_interface: + dependency: transitive + description: + name: flutter_charset_detector_platform_interface + sha256: fcb61de27285031164c945aca4b42e4d36f9a9e359212f21ab652275c9c723ec + url: "https://pub.dev" + source: hosted + version: "1.0.0" flutter_image_compress: dependency: "direct main" description: diff --git a/core/pubspec.yaml b/core/pubspec.yaml index 53f3d8390..4c59184b2 100644 --- a/core/pubspec.yaml +++ b/core/pubspec.yaml @@ -79,6 +79,8 @@ dependencies: fk_user_agent: 2.1.0 + flutter_charset_detector: 2.0.0 + dev_dependencies: flutter_test: sdk: flutter diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 42d69184a..304ba9ef9 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -90,6 +90,9 @@ PODS: - flutter_appauth (0.0.1): - AppAuth (= 1.7.4) - Flutter + - flutter_charset_detector_ios (0.0.1): + - Flutter + - UniversalDetector2 (= 2.0.1) - flutter_downloader (0.0.1): - Flutter - flutter_image_compress_common (1.0.0): @@ -183,6 +186,7 @@ PODS: - Flutter - FlutterMacOS - SwiftyGif (5.4.4) + - UniversalDetector2 (2.0.1) - url_launcher_ios (0.0.1): - Flutter - workmanager (0.0.1): @@ -201,6 +205,7 @@ DEPENDENCIES: - fk_user_agent (from `.symlinks/plugins/fk_user_agent/ios`) - Flutter (from `Flutter`) - flutter_appauth (from `.symlinks/plugins/flutter_appauth/ios`) + - flutter_charset_detector_ios (from `.symlinks/plugins/flutter_charset_detector_ios/ios`) - flutter_downloader (from `.symlinks/plugins/flutter_downloader/ios`) - flutter_image_compress_common (from `.symlinks/plugins/flutter_image_compress_common/ios`) - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) @@ -241,6 +246,7 @@ SPEC REPOS: - SDWebImage - SDWebImageWebPCoder - SwiftyGif + - UniversalDetector2 EXTERNAL SOURCES: app_settings: @@ -267,6 +273,8 @@ EXTERNAL SOURCES: :path: Flutter flutter_appauth: :path: ".symlinks/plugins/flutter_appauth/ios" + flutter_charset_detector_ios: + :path: ".symlinks/plugins/flutter_charset_detector_ios/ios" flutter_downloader: :path: ".symlinks/plugins/flutter_downloader/ios" flutter_image_compress_common: @@ -325,6 +333,7 @@ SPEC CHECKSUMS: fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_appauth: 1ce438877bc111c5d8f42da47729909290624886 + flutter_charset_detector_ios: 5157d0104855b9deb78e1395515a287197bc2d55 flutter_downloader: b7301ae057deadd4b1650dc7c05375f10ff12c39 flutter_image_compress_common: ec1d45c362c9d30a3f6a0426c297f47c52007e3e flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0 @@ -352,6 +361,7 @@ SPEC CHECKSUMS: share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5 shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f + UniversalDetector2: 7c9ffd935cf050eeb19edf7e90f6febe3743a1af url_launcher_ios: 68d46cc9766d0c41dbdc884310529557e3cd7a86 workmanager: 0afdcf5628bbde6924c21af7836fed07b42e30e6 diff --git a/model/pubspec.lock b/model/pubspec.lock index f846dfdfd..d2938fe2f 100644 --- a/model/pubspec.lock +++ b/model/pubspec.lock @@ -333,6 +333,38 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_charset_detector: + dependency: transitive + description: + name: flutter_charset_detector + sha256: "45de8a4b4255c1ea850a30955e7456091899ed4ff8b75593e14ec59f629b4b56" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + flutter_charset_detector_android: + dependency: transitive + description: + name: flutter_charset_detector_android + sha256: bee057133d5f134fe211523a27200dd22c782b93777f43359a571bd2c77da2cc + url: "https://pub.dev" + source: hosted + version: "2.1.1" + flutter_charset_detector_ios: + dependency: transitive + description: + name: flutter_charset_detector_ios + sha256: e0e2c7b819cd1f7c9a50da94bf7f0e6d7a095eb64e81196ec758e77793903d43 + url: "https://pub.dev" + source: hosted + version: "1.0.2" + flutter_charset_detector_platform_interface: + dependency: transitive + description: + name: flutter_charset_detector_platform_interface + sha256: "1c09ed7b314a5a9dde76057b98b7d35458ba881eed03d5e5b6f7f74b4869d18c" + url: "https://pub.dev" + source: hosted + version: "1.1.0" flutter_image_compress: dependency: transitive description: diff --git a/pubspec.lock b/pubspec.lock index ae36b3aeb..c08731e4f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -655,6 +655,38 @@ packages: url: "https://github.com/CarlosPacheco/flutter_appauth_web.git" source: git version: "0.0.3" + flutter_charset_detector: + dependency: transitive + description: + name: flutter_charset_detector + sha256: "45de8a4b4255c1ea850a30955e7456091899ed4ff8b75593e14ec59f629b4b56" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + flutter_charset_detector_android: + dependency: transitive + description: + name: flutter_charset_detector_android + sha256: "43d0c0063242d036b873ade737ebae38716af5cd8b2a4df1754adfd186d58e2c" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + flutter_charset_detector_ios: + dependency: transitive + description: + name: flutter_charset_detector_ios + sha256: e0e2c7b819cd1f7c9a50da94bf7f0e6d7a095eb64e81196ec758e77793903d43 + url: "https://pub.dev" + source: hosted + version: "1.0.2" + flutter_charset_detector_platform_interface: + dependency: transitive + description: + name: flutter_charset_detector_platform_interface + sha256: fcb61de27285031164c945aca4b42e4d36f9a9e359212f21ab652275c9c723ec + url: "https://pub.dev" + source: hosted + version: "1.0.0" flutter_colorpicker: dependency: transitive description: