Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app/android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<!-- Refer https://developer.android.com/about/versions/14/changes/fgs-types-required#connected-device -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

Expand Down
4 changes: 2 additions & 2 deletions app/ios/Runner/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@
<key>NSCalendarsUsageDescription</key>
<string>Access most functions for calendar viewing and editing.</string>
<key>NSContactsUsageDescription</key>
<string>Access contacts for event attendee editing.</string>
<string>Access contacts for event attendee editing and to share conversation summaries via SMS.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>When creating your memories, we use your location for determining where they were created.</string>
<key>NSLocationUsageDescription</key>
Expand Down Expand Up @@ -153,4 +153,4 @@
<key>WKCompanionAppBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
</dict>
</plist>
</plist>
7 changes: 7 additions & 0 deletions app/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ import 'package:omi/services/auth_service.dart';
import 'package:omi/services/desktop_update_service.dart';
import 'package:omi/services/notifications.dart';
import 'package:omi/services/notifications/action_item_notification_handler.dart';
import 'package:omi/services/notifications/important_conversation_notification_handler.dart';
import 'package:omi/services/notifications/merge_notification_handler.dart';
import 'package:omi/services/services.dart';
import 'package:omi/utils/analytics/growthbook.dart';
Expand Down Expand Up @@ -106,6 +107,12 @@ Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
channelKey,
isAppInForeground: false,
);
} else if (messageType == 'important_conversation') {
await ImportantConversationNotificationHandler.handleImportantConversation(
data,
channelKey,
isAppInForeground: false,
);
}
}

Expand Down
21 changes: 19 additions & 2 deletions app/lib/pages/conversation_detail/page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ import 'package:pull_down_button/pull_down_button.dart';

import 'conversation_detail_provider.dart';
import 'widgets/name_speaker_sheet.dart';
import 'widgets/share_to_contacts_sheet.dart';
// import 'share.dart';
import 'test_prompts.dart';
// import 'package:omi/pages/settings/developer.dart';
Expand All @@ -39,12 +40,14 @@ import 'test_prompts.dart';
class ConversationDetailPage extends StatefulWidget {
final ServerConversation conversation;
final bool isFromOnboarding;
final bool openShareToContactsOnLoad;
final int initialTabIndex;

const ConversationDetailPage({
super.key,
this.isFromOnboarding = false,
required this.conversation,
this.openShareToContactsOnLoad = false,
this.initialTabIndex = 1, // Default to summary tab
});

Expand Down Expand Up @@ -206,15 +209,22 @@ class _ConversationDetailPageState extends State<ConversationDetailPage> with Ti
await _appReviewService.showReviewPromptIfNeeded(context, isProcessingFirstConversation: true);
}
}

// Auto-open share to contacts sheet if requested (from important conversation notification)
if (widget.openShareToContactsOnLoad && mounted) {
// Small delay to ensure the page is fully rendered
await Future.delayed(const Duration(milliseconds: 500));
if (mounted) {
_showShareToContactsBottomSheet();
}
}
});
// _animationController = AnimationController(
// vsync: this,
// duration: const Duration(seconds: 60),
// )..repeat(reverse: true);
//
// _opacityAnimation = Tween<double>(begin: 1.0, end: 0.5).animate(_animationController);

super.initState();
}

@override
Expand All @@ -227,6 +237,13 @@ class _ConversationDetailPageState extends State<ConversationDetailPage> with Ti
super.dispose();
}

/// Show the share to contacts bottom sheet
void _showShareToContactsBottomSheet() {
final provider = Provider.of<ConversationDetailProvider>(context, listen: false);
showShareToContactsBottomSheet(context, provider.conversation);
}


String _getTabTitle(BuildContext context, ConversationTab tab) {
switch (tab) {
case ConversationTab.transcript:
Expand Down
Loading