Update direct section
This commit is contained in:
parent
6520dc89c5
commit
b61305e71c
|
|
@ -29,9 +29,12 @@ class DirectState extends CoreProvier {
|
|||
|
||||
Future<void> getMessages() async {
|
||||
appState = AppState.busy;
|
||||
|
||||
final RequestService service = RequestService(RequestHelper.direct(typeId));
|
||||
await service.httpGet();
|
||||
if (service.isSuccess) {
|
||||
messages.clear();
|
||||
|
||||
final messageDatas = service.result['messages'];
|
||||
for (var i = 0; i < messageDatas.length; i++) {
|
||||
messages.add(MessageData.fromJson(messageDatas[i]));
|
||||
|
|
@ -96,33 +99,17 @@ class DirectState extends CoreProvier {
|
|||
String createdAt = message.createdAt.replaceAll('T', ' ').split(' ').first;
|
||||
if (!dailyMessages.containsKey(createdAt)) {
|
||||
dailyMessages.addAll({
|
||||
createdAt: [messages.last.id]
|
||||
createdAt: [message.id]
|
||||
});
|
||||
} else {
|
||||
dailyMessages[createdAt]!.add(messages.last.id);
|
||||
dailyMessages[createdAt]!.add(message.id);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> sendMessage() async {
|
||||
if ((text == null || text!.isEmpty) && recordedFile == null) return;
|
||||
MediaService.audioPlayer.stop();
|
||||
messages.insert(
|
||||
0,
|
||||
MessageData(
|
||||
id: 0,
|
||||
writedByAdmin: false,
|
||||
readed: false,
|
||||
createdAt:
|
||||
DateTime.now().subtract(const Duration(minutes: 210)).toString(),
|
||||
text: text,
|
||||
audio: null,
|
||||
audioFile: recordedFile,
|
||||
radar: replyRadar,
|
||||
news: replyNews,
|
||||
audioDuration: audioDuration,
|
||||
),
|
||||
);
|
||||
_addToDailyGrouped(messages.first);
|
||||
|
||||
final body = {};
|
||||
|
||||
if (text != null) {
|
||||
|
|
@ -145,8 +132,20 @@ class DirectState extends CoreProvier {
|
|||
notifyListeners();
|
||||
final service =
|
||||
RequestService(RequestHelper.sendDirectMessage(typeId), body: body);
|
||||
|
||||
if (uploadFile == null) {
|
||||
service.post();
|
||||
await service.post();
|
||||
|
||||
if (service.isSuccess) {
|
||||
final message = service.result['message'];
|
||||
messages.insert(0, MessageData.fromJson(message));
|
||||
|
||||
dailyMessages.clear();
|
||||
|
||||
for (var i = 0; i < messages.length; i++) {
|
||||
_addToDailyGrouped(messages[i]);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
service.multipart(
|
||||
file: Platform.isIOS
|
||||
|
|
|
|||
|
|
@ -128,8 +128,9 @@ class _TypingState extends State<_Typing> {
|
|||
child: state.text != null && state.text!.isNotEmpty
|
||||
? DidvanIconButton(
|
||||
icon: DidvanIcons.send_solid,
|
||||
onPressed: () {
|
||||
state.sendMessage();
|
||||
onPressed: () async {
|
||||
await state.sendMessage();
|
||||
state.update();
|
||||
_formKey.currentState!.reset();
|
||||
},
|
||||
size: 32,
|
||||
|
|
@ -212,7 +213,10 @@ class _RecordChecking extends StatelessWidget {
|
|||
children: [
|
||||
DidvanIconButton(
|
||||
icon: DidvanIcons.send_solid,
|
||||
onPressed: state.sendMessage,
|
||||
onPressed: () async {
|
||||
await state.sendMessage();
|
||||
state.update();
|
||||
},
|
||||
color: Theme.of(context).colorScheme.focusedBorder,
|
||||
),
|
||||
Expanded(
|
||||
|
|
|
|||
|
|
@ -52,6 +52,10 @@ class _DirectListState extends State<DirectList> {
|
|||
placeholder: const _ChatRoomPlaceholder(),
|
||||
builder: (context, state, index) => ChatRoomItem(
|
||||
chatRoom: state.chatRooms[index],
|
||||
onBackButtonPressed: () {
|
||||
state.chatRooms.clear();
|
||||
state.getDirectsList();
|
||||
},
|
||||
),
|
||||
childCount: state.chatRooms.length,
|
||||
enableEmptyState: state.chatRooms.isEmpty,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,11 @@ import 'package:provider/provider.dart';
|
|||
|
||||
class ChatRoomItem extends StatelessWidget {
|
||||
final ChatRoom chatRoom;
|
||||
const ChatRoomItem({Key? key, required this.chatRoom}) : super(key: key);
|
||||
final VoidCallback? onBackButtonPressed;
|
||||
|
||||
const ChatRoomItem(
|
||||
{Key? key, required this.chatRoom, this.onBackButtonPressed})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
@ -21,8 +25,11 @@ class ChatRoomItem extends StatelessWidget {
|
|||
onTap: () {
|
||||
Navigator.of(context).pushNamed(
|
||||
Routes.direct,
|
||||
arguments: {'type': chatRoom.type},
|
||||
);
|
||||
arguments: {
|
||||
'type': chatRoom.type,
|
||||
},
|
||||
).then((value) => {onBackButtonPressed?.call()});
|
||||
|
||||
final state = context.read<DirectListState>();
|
||||
int unreadCount = chatRoom.unread;
|
||||
chatRoom.unread = 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue