From a4cddc6ae9673c3ee9e6fe78c8e0949a109bfa24 Mon Sep 17 00:00:00 2001 From: Krushna Kanta Rout <129386740+krushnarout@users.noreply.github.com> Date: Wed, 4 Feb 2026 23:54:58 +0530 Subject: [PATCH 1/2] feat add processing conversation on desktop --- .../desktop_conversations_page.dart | 16 +++- ...esktop_processing_conversation_widget.dart | 96 +++++++++++++++++++ 2 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 app/lib/desktop/pages/conversations/widgets/desktop_processing_conversation_widget.dart diff --git a/app/lib/desktop/pages/conversations/desktop_conversations_page.dart b/app/lib/desktop/pages/conversations/desktop_conversations_page.dart index 6718e5ccd8..446d4b0aaa 100644 --- a/app/lib/desktop/pages/conversations/desktop_conversations_page.dart +++ b/app/lib/desktop/pages/conversations/desktop_conversations_page.dart @@ -21,6 +21,7 @@ import 'widgets/desktop_conversation_card.dart'; import 'widgets/desktop_daily_score_widget.dart'; import 'widgets/desktop_empty_conversations.dart'; import 'widgets/desktop_goals_widget.dart'; +import 'widgets/desktop_processing_conversation_widget.dart'; import 'widgets/desktop_recording_widget.dart'; import 'widgets/desktop_search_result_header.dart'; import 'widgets/desktop_search_widget.dart'; @@ -311,9 +312,18 @@ class _DesktopConversationsPageState extends State opacity: _fadeAnimation, child: Container( padding: const EdgeInsets.fromLTRB(32, 24, 32, 24), - child: DesktopRecordingWidget( - hasConversations: true, - onStartRecording: _showExpandedRecordingView, + child: Column( + children: [ + DesktopRecordingWidget( + hasConversations: true, + onStartRecording: _showExpandedRecordingView, + ), + if (convoProvider.processingConversations.isNotEmpty) ...[ + const SizedBox(height: 16), + getDesktopProcessingConversationsWidget( + convoProvider.processingConversations), + ], + ], ), ), ), diff --git a/app/lib/desktop/pages/conversations/widgets/desktop_processing_conversation_widget.dart b/app/lib/desktop/pages/conversations/widgets/desktop_processing_conversation_widget.dart new file mode 100644 index 0000000000..08780f45a1 --- /dev/null +++ b/app/lib/desktop/pages/conversations/widgets/desktop_processing_conversation_widget.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; + +import 'package:omi/backend/schema/conversation.dart'; +import 'package:omi/utils/l10n_extensions.dart'; +import 'package:omi/utils/responsive/responsive_helper.dart'; + +class DesktopProcessingConversationWidget extends StatelessWidget { + final ServerConversation conversation; + + const DesktopProcessingConversationWidget({ + super.key, + required this.conversation, + }); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: const Color(0xFF1F1F25), + borderRadius: BorderRadius.circular(20), + border: Border.all( + color: ResponsiveHelper.backgroundTertiary.withValues(alpha: 0.5), + width: 1, + ), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header row + Row( + children: [ + // Icon circle + Container( + width: 28, + height: 28, + decoration: BoxDecoration( + color: ResponsiveHelper.backgroundQuaternary, + borderRadius: BorderRadius.circular(14), + ), + ), + const SizedBox(width: 12), + // Processing label + Container( + decoration: BoxDecoration( + color: const Color(0xFF35343B), + borderRadius: BorderRadius.circular(20), + ), + padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8), + child: Text( + context.l10n.processing, + style: const TextStyle( + color: Colors.white, + fontSize: 14, + fontWeight: FontWeight.w500, + ), + ), + ), + const Spacer(), + // Timestamp placeholder + Container( + width: 60, + height: 14, + decoration: BoxDecoration( + color: ResponsiveHelper.backgroundQuaternary, + borderRadius: BorderRadius.circular(4), + ), + ), + ], + ), + const SizedBox(height: 14), + // Title placeholder bar + Container( + width: double.maxFinite, + height: 12, + decoration: BoxDecoration( + color: ResponsiveHelper.backgroundQuaternary, + borderRadius: BorderRadius.circular(6), + ), + ), + ], + ), + ); + } +} + +/// Widget to display processing conversations in a list +Widget getDesktopProcessingConversationsWidget(List conversations) { + if (conversations.isEmpty) { + return const SizedBox.shrink(); + } + + // Show only the first (most recent) processing conversation + return DesktopProcessingConversationWidget(conversation: conversations.first); +} From d46b81ba086edca77d46f379f54421e1fc064e33 Mon Sep 17 00:00:00 2001 From: Krushna Kanta Rout <129386740+krushnarout@users.noreply.github.com> Date: Thu, 5 Feb 2026 00:08:26 +0530 Subject: [PATCH 2/2] fix timestamp --- .../desktop_processing_conversation_widget.dart | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/app/lib/desktop/pages/conversations/widgets/desktop_processing_conversation_widget.dart b/app/lib/desktop/pages/conversations/widgets/desktop_processing_conversation_widget.dart index 08780f45a1..d74aa8f8f6 100644 --- a/app/lib/desktop/pages/conversations/widgets/desktop_processing_conversation_widget.dart +++ b/app/lib/desktop/pages/conversations/widgets/desktop_processing_conversation_widget.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:intl/intl.dart'; + import 'package:omi/backend/schema/conversation.dart'; import 'package:omi/utils/l10n_extensions.dart'; import 'package:omi/utils/responsive/responsive_helper.dart'; @@ -58,13 +60,14 @@ class DesktopProcessingConversationWidget extends StatelessWidget { ), ), const Spacer(), - // Timestamp placeholder - Container( - width: 60, - height: 14, - decoration: BoxDecoration( - color: ResponsiveHelper.backgroundQuaternary, - borderRadius: BorderRadius.circular(4), + // Timestamp + Text( + DateFormat.jm(Localizations.localeOf(context).languageCode) + .format(conversation.startedAt ?? conversation.createdAt), + style: const TextStyle( + color: ResponsiveHelper.textTertiary, + fontSize: 13, + fontWeight: FontWeight.w500, ), ), ],