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