Skip to content

Commit

Permalink
fix: remove double compression, proper handling of the image in the s…
Browse files Browse the repository at this point in the history
…tory preview page
  • Loading branch information
ice-alcides committed Feb 12, 2025
1 parent d6f8f65 commit 569d42f
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 49 deletions.
64 changes: 32 additions & 32 deletions ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/video_player_avfoundation/darwin"

SPEC CHECKSUMS:
audio_waveforms: cd736909ebc6b6a164eb74701d8c705ce3241e1c
audio_waveforms: a6dde7fe7c0ea05f06ffbdb0f7c1b2b2ba6cedcf
BanubaARCloudSDK: 40da62afeea642301ca8092600c9bb9cf67fe30e
BanubaAudioBrowserSDK: 3a92807e60daa70dcaa1e76920abab97e7a73bf4
BanubaLicenseServicingSDK: f2b51a4288d6b9796063855f5db6dc227819de22
Expand All @@ -385,7 +385,7 @@ SPEC CHECKSUMS:
BanubaUtilities: 4ca45fcd7a6b5d246b75f02fd3f36b43d2dbebd3
BanubaVideoEditorGallerySDK: 6d775728f14ab78e210d86058166e3deb3fc3814
BanubaVideoEditorSDK: 1b8d56004f147c0ed96077f8171247efbc0511e7
bdk_flutter: 86c9ba59ee282dee08c3a29599abe867d10a8b10
bdk_flutter: cef9180019b4c6b67a3e3dfb74611683fe140107
BNBAcneEyebagsRemoval: 9ad2c2351d57231add905c5bff6117faff87b712
BNBBackground: 1e88cbaa9c447c1aa46506b0d74b1bd833494c72
BNBEffectPlayer: 05f74da227a9ece5dd52bcdd8aa996e076793e6b
Expand All @@ -398,50 +398,50 @@ SPEC CHECKSUMS:
BNBSdkApi: f773621958cf0f7776e18f90b96ace13b29d84e2
BNBSdkCore: cc7711127dbcaf392d0a25f4a858d98ffc5c9213
BNBSkin: 3a741bbba57a2a860fe4a69dbd597d7d9aea5793
camera_avfoundation: dd002b0330f4981e1bbcb46ae9b62829237459a4
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
camera_avfoundation: 04b44aeb14070126c6529e5ab82cc7c9fca107cf
device_info_plus: 71ffc6ab7634ade6267c7a93088ed7e4f74e5896
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
external_app_launcher: ad55ac844aa21f2d2197d7cec58ff0d0dc40bbc0
external_app_launcher: 3411245965270a74040a3de17e27bd02b8abb905
ffmpeg-kit-ios-full-gpl: 80adc341962e55ef709e36baa8ed9a70cf4ea62b
ffmpeg_kit_flutter_full_gpl: 8d15c14c0c3aba616fac04fe44b3d27d02e3c330
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808
ffmpeg_kit_flutter_full_gpl: ce18b888487c05c46ed252cd2e7956812f2e3bd1
file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517
file_saver: 6cdbcddd690cb02b0c1a0c225b37cd805c2bf8b6
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
image_cropper: 37d40f62177c101ff4c164906d259ea2c3aa70cf
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
ion_screenshot_detector: bd85296e1347b5bf5acf71407a6d9b7933bfe604
local_auth_crypto: 3ee858ca5d40c9da56dcd1fe8d814e92438a9371
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619
flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
image_cropper: 5f162dcf988100dc1513f9c6b7eb42cd6fbf9156
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
ion_screenshot_detector: 6981b7ec0add023ce57337882e28dc4b80caad4b
local_auth_crypto: 0f489ce05f51504fc091a53ce357e98313696085
local_auth_darwin: 553ce4f9b16d3fdfeafce9cf042e7c9f77c1c391
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
passkeys_ios: fdae8c06e2178a9fcb9261a6cb21fb9a06a81d53
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
photo_manager: ff695c7a1dd5bc379974953a2b5c0a293f7c4c8a
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
quill_native_bridge: e5afa7d49c08cf68c52a5e23bc272eba6925c622
package_info_plus: 566e1b7a2f3900e4b0020914ad3fc051dcc95596
passkeys_ios: 939d7d44f825048c8dffd4644f52444164c80ecd
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
photo_manager: d2fbcc0f2d82458700ee6256a15018210a81d413
qr_code_scanner: d77f94ecc9abf96d9b9b8fc04ef13f611e5a147a
quill_native_bridge: fd2819cf6da02fb6cbf9de37835f96e798e145eb
SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
SecureBiometricSwift: f8a373c07fb46c9ca1b2b53be51a485d2828a3d8
shake_gesture_ios: 64f1f579f314c58445761992a123111b3d7b3492
share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
shake_gesture_ios: 85dce5e26785da11cf73e0234a5f4028f69afeef
share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
sqflite: c35dad70033b8862124f8337cc994a809fcd9fa3
sqlite3: 7559e33dae4c78538df563795af3a86fc887ee71
sqlite3_flutter_libs: 1b4e98da20ebd4e9b1240269b78cdcf492dbe9f3
sqlite3_flutter_libs: f0b59f6bb2a18597d0796558725007e5a7428397
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654
ua_client_hints: 3b617011e47bea4b1ea65647efa12860b7280ad5
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
ve_sdk_flutter: c90ec3fc424953a7b82cd1edd5143bc756899e92
ua_client_hints: ef4ddde0e2b2be5f0731a31721c4cbbb889b1aa4
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
ve_sdk_flutter: e23c4a6f1b84eeacee1daf2a81ba0f0694ed76f1
VEEffectsSDK: 40dca6a76aeff8630ce1b49ef7643d2a2655dd0f
VEExportSDK: 32e97cf98ecbf86aed563fbd4c9131d7bbddbe92
VEPlaybackSDK: 65bb7377c9c8524557d7b5d6723e321fc16fc4a1
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b
VideoEditor: b3e55fe6a6589e715365da822172f54b6fea8169

PODFILE CHECKSUM: f19afb20048b05a04dbc809ad7d199f1df053e9a
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import 'package:ion/app/features/ion_connect/providers/ion_connect_entity_provid
import 'package:ion/app/features/ion_connect/providers/ion_connect_notifier.c.dart';
import 'package:ion/app/features/ion_connect/providers/ion_connect_upload_notifier.c.dart';
import 'package:ion/app/services/compressor/compress_service.c.dart';
import 'package:ion/app/services/logger/logger.dart';
import 'package:ion/app/services/media_service/media_service.c.dart';
import 'package:ion/app/services/text_parser/model/text_match.c.dart';
import 'package:ion/app/services/text_parser/model/text_matcher.dart';
Expand Down Expand Up @@ -292,20 +293,18 @@ class CreatePostNotifier extends _$CreatePostNotifier {
Future<({List<FileMetadata> fileMetadatas, MediaAttachment mediaAttachment})> _uploadImage(
MediaFile file,
) async {
const maxDimension = 1024;
final (:width, :height) =
await ref.read(compressServiceProvider).getImageDimension(path: file.path);
Logger.info(
'Uploading image: width=${file.width}, height=${file.height}, path=${file.path}',
);

final compressedImage = await ref.read(compressServiceProvider).compressImage(
final uploadResult = await ref.read(ionConnectUploadNotifierProvider.notifier).upload(
file,
width: width > height ? maxDimension : null,
height: height > width ? maxDimension : null,
quality: 70,
alt: _getFileAlt(),
);

final uploadResult = await ref
.read(ionConnectUploadNotifierProvider.notifier)
.upload(compressedImage, alt: _getFileAlt());
Logger.info(
'Image uploaded successfully: fileUrl=${uploadResult.fileMetadata.url}',
);

return (
fileMetadatas: [uploadResult.fileMetadata],
Expand Down
26 changes: 19 additions & 7 deletions lib/app/features/feed/stories/views/pages/story_preview_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,11 @@ import 'package:ion/app/features/feed/stories/views/components/story_preview/act
import 'package:ion/app/features/feed/stories/views/components/story_preview/media/story_image_preview.dart';
import 'package:ion/app/features/feed/stories/views/components/story_preview/media/story_video_preview.dart';
import 'package:ion/app/features/feed/views/pages/who_can_reply_settings_modal/who_can_reply_settings_modal.dart';
import 'package:ion/app/features/user/providers/image_proccessor_notifier.c.dart';
import 'package:ion/app/router/app_routes.c.dart';
import 'package:ion/app/router/components/navigation_app_bar/navigation_app_bar.dart';
import 'package:ion/app/router/utils/show_simple_bottom_sheet.dart';
import 'package:ion/app/services/media_service/media_service.c.dart';
import 'package:ion/app/services/media_service/image_proccessing_config.dart';
import 'package:ion/generated/assets.gen.dart';

class StoryPreviewPage extends ConsumerWidget {
Expand Down Expand Up @@ -89,12 +90,23 @@ class StoryPreviewPage extends ConsumerWidget {
children: [
SizedBox(height: 16.0.s),
StoryShareButton(
onPressed: () {
final file = MediaFile(path: path, mimeType: mimeType);
ref
.read(createPostNotifierProvider(CreatePostOption.story).notifier)
.create(content: '', mediaFiles: [file], whoCanReply: whoCanReply);
FeedRoute().go(context);
onPressed: () async {
final processedState =
ref.read(imageProcessorNotifierProvider(ImageProcessingType.story));

if (processedState case ImageProcessorStateProcessed(:final file)) {
await ref
.read(createPostNotifierProvider(CreatePostOption.story).notifier)
.create(
content: '',
mediaFiles: [file],
whoCanReply: whoCanReply,
);

if (context.mounted) {
FeedRoute().go(context);
}
}
},
),
ScreenBottomOffset(margin: 36.0.s),
Expand Down
12 changes: 12 additions & 0 deletions lib/app/features/user/providers/image_proccessor_notifier.c.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:ion/app/exceptions/exceptions.dart';
import 'package:ion/app/features/gallery/providers/gallery_provider.c.dart';
import 'package:ion/app/services/compressor/compress_service.c.dart';
import 'package:ion/app/services/logger/logger.dart';
import 'package:ion/app/services/media_service/image_proccessing_config.dart';
import 'package:ion/app/services/media_service/media_service.c.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
Expand Down Expand Up @@ -54,6 +55,10 @@ class ImageProcessorNotifier extends _$ImageProcessorNotifier {
);
state = ImageProcessorState.picked(file: pickedFile);

Logger.info(
'Original image dimensions: width=${assetEntity.width}, height=${assetEntity.height}',
);

final croppedImage = await mediaService.cropImage(
uiSettings: cropUiSettings,
path: file.path,
Expand All @@ -73,6 +78,13 @@ class ImageProcessorNotifier extends _$ImageProcessorNotifier {
quality: config.quality,
);
state = ImageProcessorState.processed(file: compressedImage);

Logger.info(
'Compressed image dimensions: '
'width=${compressedImage.width}, '
'height=${compressedImage.height}, '
'quality=${config.quality}',
);
} catch (error) {
state = ImageProcessorState.error(message: error.toString());
}
Expand Down

0 comments on commit 569d42f

Please sign in to comment.