Skip to content

Commit

Permalink
feat: send files in draft chat web
Browse files Browse the repository at this point in the history
  • Loading branch information
Julian KOUNE authored and hoangdat committed Sep 29, 2023
1 parent 7313b9c commit 8123adb
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 5 deletions.
34 changes: 33 additions & 1 deletion lib/pages/chat_draft/draft_chat.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
import 'dart:async';

import 'package:emoji_picker_flutter/emoji_picker_flutter.dart';
import 'package:file_picker/file_picker.dart';
import 'package:fluffychat/di/global/get_it_initializer.dart';
import 'package:fluffychat/domain/app_state/direct_chat/create_direct_chat_success.dart';
import 'package:fluffychat/domain/usecase/create_direct_chat_interactor.dart';
import 'package:fluffychat/domain/usecase/send_file_on_web_interactor.dart';
import 'package:fluffychat/pages/chat/chat.dart';
import 'package:fluffychat/pages/chat_draft/draft_chat_view.dart';
import 'package:fluffychat/presentation/mixins/common_media_picker_mixin.dart';
Expand All @@ -13,6 +15,7 @@ import 'package:fluffychat/presentation/model/chat/chat_router_input_argument.da
import 'package:fluffychat/presentation/model/presentation_contact.dart';
import 'package:fluffychat/presentation/model/presentation_contact_constant.dart';
import 'package:fluffychat/utils/network_connection_service.dart';
import 'package:fluffychat/utils/platform_infos.dart';
import 'package:fluffychat/widgets/matrix.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
Expand Down Expand Up @@ -243,7 +246,15 @@ class DraftChatController extends State<DraftChat>
setState(() => inputText = text);
}

void showMediaPicker(BuildContext context) {
void onSendFileClick(BuildContext context) async {
if (PlatformInfos.isWeb) {
sendFileOnWebAction(context);
} else {
_showMediaPicker(context);
}
}

void _showMediaPicker(BuildContext context) {
final imagePickerController = ImagePickerGridController(
AssetCounter(imagePickerMode: ImagePickerMode.multiple),
);
Expand All @@ -260,6 +271,27 @@ class DraftChatController extends State<DraftChat>
);
}

@override
void sendFileOnWebAction(
BuildContext context, {
Room? room,
}) async {
final sendFileOnWebInteractor = getIt.get<SendFileOnWebInteractor>();
final result = await FilePicker.platform.pickFiles(
withData: true,
);
if (result == null || result.files.isEmpty) return;

_createRoom(
onRoomCreatedSuccess: (newRoom) {
sendFileOnWebInteractor.execute(
room: newRoom,
filePickerResult: result,
);
},
);
}

@override
Widget build(BuildContext context) {
return DraftChatView(controller: this);
Expand Down
2 changes: 1 addition & 1 deletion lib/pages/chat_draft/draft_chat_view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ class DraftChatView extends StatelessWidget {
tooltip: L10n.of(context)!.more,
margin: DraftChatViewStyle.buttonAddMoreMargin,
icon: Icons.add_circle_outline,
onTap: () => controller.showMediaPicker(context),
onTap: () => controller.onSendFileClick(context),
),
Expanded(
child: Container(
Expand Down
5 changes: 2 additions & 3 deletions lib/presentation/mixins/send_files_mixin.dart
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,13 @@ mixin SendFilesMixin {
BuildContext context, {
Room? room,
}) async {
if (room == null) {}
final sendFileOnWebInteractor = getIt.get<SendFileOnWebInteractor>();
final result = await FilePicker.platform.pickFiles(
withData: true,
);
if (result == null && result?.files.isEmpty == true) return;
if (result == null || result.files.isEmpty) return;

sendFileOnWebInteractor.execute(room: room!, filePickerResult: result!);
sendFileOnWebInteractor.execute(room: room!, filePickerResult: result);
}

void onPickerTypeClick({
Expand Down

0 comments on commit 8123adb

Please sign in to comment.