ui: (Kinda) make the last message text work
This commit is contained in:
		
							parent
							
								
									dae1b1d178
								
							
						
					
					
						commit
						262cf685b7
					
				| @ -5,4 +5,13 @@ class Conversation { | |||||||
|   final String jid; |   final String jid; | ||||||
| 
 | 
 | ||||||
|   const Conversation({ required this.title, required this.lastMessageBody, required this.avatarUrl, required this.jid }); |   const Conversation({ required this.title, required this.lastMessageBody, required this.avatarUrl, required this.jid }); | ||||||
|  | 
 | ||||||
|  |   Conversation copyWith({ String? lastMessageBody }) { | ||||||
|  |     return Conversation( | ||||||
|  |       title: this.title, | ||||||
|  |       lastMessageBody: lastMessageBody ?? this.lastMessageBody, | ||||||
|  |       avatarUrl: this.avatarUrl, | ||||||
|  |       jid: this.jid | ||||||
|  |     ); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ class AddMessageAction extends MessageAction { | |||||||
|   final String body; |   final String body; | ||||||
|   final String timestamp; |   final String timestamp; | ||||||
|   final String from; |   final String from; | ||||||
|  |   final String jid; | ||||||
| 
 | 
 | ||||||
|   AddMessageAction({ required this.from, required this.body, required this.timestamp }); |   AddMessageAction({ required this.from, required this.body, required this.timestamp, required this.jid }); | ||||||
| } | } | ||||||
|  | |||||||
| @ -14,14 +14,13 @@ HashMap<String, List<Message>> messageReducer(HashMap<String, List<Message>> sta | |||||||
|       sent: true |       sent: true | ||||||
|     ); |     ); | ||||||
|      |      | ||||||
|     // TODO |     String jid = action.jid; | ||||||
|     if (!map.containsKey("")) { |     if (!map.containsKey(jid)) { | ||||||
|       map[""] = [ msg ]; |       map[jid] = [ msg ]; | ||||||
|       return map; |       return map; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // TODO |     map[jid]!.add(msg); | ||||||
|     map[""]!.add(msg); |  | ||||||
|     return map; |     return map; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| import "package:moxxyv2/models/conversation.dart"; | import "package:moxxyv2/models/conversation.dart"; | ||||||
| import "package:moxxyv2/redux/conversations/actions.dart"; | import "package:moxxyv2/redux/conversations/actions.dart"; | ||||||
|  | import "package:moxxyv2/redux/conversation/actions.dart"; | ||||||
| 
 | 
 | ||||||
| List<Conversation> conversationReducer(List<Conversation> state, dynamic action) { | List<Conversation> conversationReducer(List<Conversation> state, dynamic action) { | ||||||
|   if (action is AddConversationAction) { |   if (action is AddConversationAction) { | ||||||
| @ -9,6 +10,14 @@ List<Conversation> conversationReducer(List<Conversation> state, dynamic action) | |||||||
|         avatarUrl: action.avatarUrl, |         avatarUrl: action.avatarUrl, | ||||||
|         jid: action.jid |         jid: action.jid | ||||||
|     )); |     )); | ||||||
|  |   } else if (action is AddMessageAction) { | ||||||
|  |     return state.map((element) { | ||||||
|  |         if (element.jid == action.jid) { | ||||||
|  |           return element.copyWith(lastMessageBody: action.body); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         return element; | ||||||
|  |     }).toList(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   return state; |   return state; | ||||||
|  | |||||||
| @ -7,13 +7,13 @@ class ConversationRepository { | |||||||
|       // TODO: Remove |       // TODO: Remove | ||||||
|       "houshou.marine@hololive.tv": Conversation( |       "houshou.marine@hololive.tv": Conversation( | ||||||
|         title: "Houshou Marine", |         title: "Houshou Marine", | ||||||
|         lastMessageBody: "UwU", |         lastMessageBody: "", | ||||||
|         avatarUrl: "https://vignette.wikia.nocookie.net/virtualyoutuber/images/4/4e/Houshou_Marine_-_Portrait.png/revision/latest?cb=20190821035347", |         avatarUrl: "https://vignette.wikia.nocookie.net/virtualyoutuber/images/4/4e/Houshou_Marine_-_Portrait.png/revision/latest?cb=20190821035347", | ||||||
|         jid: "houshou.marine@hololive.tv" |         jid: "houshou.marine@hololive.tv" | ||||||
|       ), |       ), | ||||||
|       "nakiri.ayame@hololive.tv": Conversation( |       "nakiri.ayame@hololive.tv": Conversation( | ||||||
|         title: "Nakiri Ayame", |         title: "Nakiri Ayame", | ||||||
|         lastMessageBody: "Yodayo~", |         lastMessageBody: "", | ||||||
|         avatarUrl: "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.pinimg.com%2Foriginals%2F2a%2F77%2F0a%2F2a770a77b0d873331583dfb88b05829f.jpg&f=1&nofb=1", |         avatarUrl: "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fi.pinimg.com%2Foriginals%2F2a%2F77%2F0a%2F2a770a77b0d873331583dfb88b05829f.jpg&f=1&nofb=1", | ||||||
|         jid: "nakiri.ayame@hololive.tv" |         jid: "nakiri.ayame@hololive.tv" | ||||||
|       ) |       ) | ||||||
|  | |||||||
| @ -88,17 +88,19 @@ class _ConversationPageState extends State<ConversationPage> { | |||||||
|     var args = ModalRoute.of(context)!.settings.arguments as ConversationPageArguments; |     var args = ModalRoute.of(context)!.settings.arguments as ConversationPageArguments; | ||||||
| 
 | 
 | ||||||
|     Conversation conversation = GetIt.I.get<ConversationRepository>().getConversation(args.jid)!; |     Conversation conversation = GetIt.I.get<ConversationRepository>().getConversation(args.jid)!; | ||||||
|  |     String jid = conversation.jid; | ||||||
|      |      | ||||||
|     return StoreConnector<MoxxyState, _MessageListViewModel>( |     return StoreConnector<MoxxyState, _MessageListViewModel>( | ||||||
|       converter: (store) => _MessageListViewModel( |       converter: (store) => _MessageListViewModel( | ||||||
|         // TODO |         // TODO | ||||||
|         messages: store.state.messages.containsKey("") ? store.state.messages[""]! : [], |         messages: store.state.messages.containsKey(jid) ? store.state.messages[jid]! : [], | ||||||
|         sendMessage: (body) => store.dispatch( |         sendMessage: (body) => store.dispatch( | ||||||
|           // TODO |           // TODO | ||||||
|           AddMessageAction( |           AddMessageAction( | ||||||
|             from: "UwU", |             from: "UwU", | ||||||
|             timestamp: "12:00", |             timestamp: "12:00", | ||||||
|             body: body, |             body: body, | ||||||
|  |             jid: jid | ||||||
|           ) |           ) | ||||||
|         ) |         ) | ||||||
|       ), |       ), | ||||||
|  | |||||||
| @ -25,6 +25,8 @@ class NewConversationPage extends StatelessWidget { | |||||||
| 
 | 
 | ||||||
|     if (conversation == null) { |     if (conversation == null) { | ||||||
|       // TODO |       // TODO | ||||||
|  |       // TODO: Install a middleware to make sure that the conversation gets added to the | ||||||
|  |       //       repository. Also handle updates | ||||||
|       conversation = Conversation( |       conversation = Conversation( | ||||||
|         title: jid, |         title: jid, | ||||||
|         jid: jid, |         jid: jid, | ||||||
|  | |||||||
| @ -40,6 +40,7 @@ class ConversationsListRow extends StatelessWidget { | |||||||
|                 this.name, |                 this.name, | ||||||
|                 style: TextStyle(fontWeight: FontWeight.bold, fontSize: 17), |                 style: TextStyle(fontWeight: FontWeight.bold, fontSize: 17), | ||||||
|               ), |               ), | ||||||
|  |               // TODO: Change color, font size and truncate the text when too long | ||||||
|               Text(this.lastMessageBody) |               Text(this.lastMessageBody) | ||||||
|             ] |             ] | ||||||
|           ) |           ) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user