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/lib/pages/action_items/action_items_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class _ActionItemsPageState extends State<ActionItemsPage> with AutomaticKeepAli
super.initState();
_scrollController.addListener(_onScroll);
WidgetsBinding.instance.addPostFrameCallback((_) {
if (!mounted) return;
MixpanelManager().actionItemsPageOpened();
final provider = Provider.of<ActionItemsProvider>(context, listen: false);
if (provider.actionItems.isEmpty) {
Expand Down
39 changes: 11 additions & 28 deletions app/lib/pages/home/page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -101,12 +101,11 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
final _upgrader = MyUpgrader(debugLogging: false, debugDisplayOnce: false);
bool scriptsInProgress = false;

PageController? _controller;

final GlobalKey<State<ConversationsPage>> _conversationsPageKey = GlobalKey<State<ConversationsPage>>();
final GlobalKey<State<ActionItemsPage>> _actionItemsPageKey = GlobalKey<State<ActionItemsPage>>();
final GlobalKey<State<MemoriesPage>> _memoriesPageKey = GlobalKey<State<MemoriesPage>>();
final GlobalKey<AppsPageState> _appsPageKey = GlobalKey<AppsPageState>();
late final List<Widget> _pages;

void _initiateApps() {
context.read<AppProvider>().getApps();
Expand Down Expand Up @@ -190,6 +189,12 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker

@override
void initState() {
_pages = [
ConversationsPage(key: _conversationsPageKey),
ActionItemsPage(key: _actionItemsPageKey),
MemoriesPage(key: _memoriesPageKey),
AppsPage(key: _appsPageKey),
];
SharedPreferencesUtil().onboardingCompleted = true;

// Navigate uri
Expand Down Expand Up @@ -220,11 +225,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
}

// Home controller
_controller = PageController(initialPage: homePageIdx);
context.read<HomeProvider>().selectedIndex = homePageIdx;
context.read<HomeProvider>().onSelectedIndexChanged = (index) {
_controller?.animateToPage(index, duration: const Duration(milliseconds: 200), curve: Curves.easeInOut);
};
WidgetsBinding.instance.addObserver(this);

WidgetsBinding.instance.addPostFrameCallback((_) async {
Expand Down Expand Up @@ -427,7 +428,7 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
appBar: homeProvider.selectedIndex == 5 ? null : _buildAppBar(context),
body: DefaultTabController(
length: 4,
initialIndex: _controller?.initialPage ?? 0,
initialIndex: homeProvider.selectedIndex,
child: GestureDetector(
onTap: () {
primaryFocus?.unfocus();
Expand All @@ -439,15 +440,9 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
Column(
children: [
Expanded(
child: PageView(
controller: _controller,
physics: const NeverScrollableScrollPhysics(),
children: [
ConversationsPage(key: _conversationsPageKey),
ActionItemsPage(key: _actionItemsPageKey),
MemoriesPage(key: _memoriesPageKey),
AppsPage(key: _appsPageKey),
],
child: IndexedStack(
index: context.watch<HomeProvider>().selectedIndex,
children: _pages,
),
),
],
Expand Down Expand Up @@ -490,8 +485,6 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
return;
}
home.setIndex(0);
_controller?.animateToPage(0,
duration: const Duration(milliseconds: 200), curve: Curves.easeInOut);
},
child: SizedBox(
height: 90,
Expand Down Expand Up @@ -523,8 +516,6 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
return;
}
home.setIndex(1);
_controller?.animateToPage(1,
duration: const Duration(milliseconds: 200), curve: Curves.easeInOut);
},
child: SizedBox(
height: 90,
Expand Down Expand Up @@ -558,8 +549,6 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
return;
}
home.setIndex(2);
_controller?.animateToPage(2,
duration: const Duration(milliseconds: 200), curve: Curves.easeInOut);
},
child: SizedBox(
height: 90,
Expand Down Expand Up @@ -591,8 +580,6 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
return;
}
home.setIndex(3);
_controller?.animateToPage(3,
duration: const Duration(milliseconds: 200), curve: Curves.easeInOut);
},
child: SizedBox(
height: 90,
Expand Down Expand Up @@ -833,10 +820,6 @@ class _HomePageState extends State<HomePage> with WidgetsBindingObserver, Ticker
void dispose() {
WidgetsBinding.instance.removeObserver(this);
ForegroundUtil.stopForegroundTask();
if (_controller != null) {
_controller!.dispose();
_controller = null;
}
super.dispose();
}
}
5 changes: 0 additions & 5 deletions backend/database/vector_db.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,8 @@ def query_vectors(query: str, uid: str, starts_at: int = None, ends_at: int = No
if starts_at is not None:
filter_data['created_at'] = {'$gte': starts_at, '$lte': ends_at}

# print('filter_data', filter_data)
xq = embeddings.embed_query(query)
xc = index.query(vector=xq, top_k=k, include_metadata=False, filter=filter_data, namespace="ns1")
# print(xc)
return [item['id'].replace(f'{uid}-', '') for item in xc['matches']]


Expand Down Expand Up @@ -96,8 +94,6 @@ def query_vectors_by_metadata(
{'created_at': {'$gte': int(dates_filter[0].timestamp()), '$lte': int(dates_filter[1].timestamp())}}
)

# print('query_vectors_by_metadata:', json.dumps(filter_data))

xc = index.query(
vector=vector, filter=filter_data, namespace="ns1", include_values=False, include_metadata=True, top_k=1000
)
Expand Down Expand Up @@ -132,7 +128,6 @@ def query_vectors_by_metadata(

conversations_id = [item['id'].replace(f'{uid}-', '') for item in xc['matches']]
conversations_id.sort(key=lambda x: conversation_id_to_matches[x], reverse=True)
print('query_vectors_by_metadata result:', conversations_id)
return conversations_id[:limit] if len(conversations_id) > limit else conversations_id


Expand Down
55 changes: 28 additions & 27 deletions backend/routers/transcribe.py
Original file line number Diff line number Diff line change
@@ -1,68 +1,68 @@
import os
import uuid
import asyncio
import struct
import json
from datetime import datetime, timezone, timedelta, time
import os
import struct
import uuid
from datetime import datetime, time, timedelta, timezone
from enum import Enum
from typing import Dict, Tuple, List, Optional, Set
from typing import Dict, List, Optional, Set, Tuple

import opuslib
import webrtcvad
from fastapi import APIRouter, Depends
from fastapi.websockets import WebSocketDisconnect, WebSocket
from fastapi.websockets import WebSocket, WebSocketDisconnect
from pydub import AudioSegment
from starlette.websockets import WebSocketState

import database.conversations as conversations_db
import database.users as user_db
from database import redis_db
from database.redis_db import get_cached_user_geolocation
from models.users import PlanType
from models.conversation import (
Conversation,
TranscriptSegment,
ConversationStatus,
Structured,
Geolocation,
ConversationPhoto,
ConversationSource,
ConversationStatus,
Geolocation,
Structured,
TranscriptSegment,
)
from models.message_event import (
ConversationEvent,
LastConversationEvent,
MessageEvent,
MessageServiceStatusEvent,
LastConversationEvent,
TranslationEvent,
PhotoProcessingEvent,
PhotoDescribedEvent,
PhotoProcessingEvent,
SpeakerLabelSuggestionEvent,
TranslationEvent,
)
from models.transcript_segment import Translation
from models.users import PlanType
from utils.analytics import record_usage
from utils.app_integrations import trigger_external_integrations
from utils.apps import is_audio_bytes_app_enabled
from utils.conversations.location import get_google_maps_location
from utils.conversations.process_conversation import process_conversation, retrieve_in_progress_conversation
from utils.notifications import send_credit_limit_notification, send_silent_user_notification
from utils.other import endpoints as auth
from utils.other.storage import get_profile_audio_if_exists
from utils.other.task import safe_create_task
from utils.app_integrations import trigger_external_integrations
from utils.pusher import connect_to_trigger_pusher
from utils.speaker_identification import detect_speaker_from_text
from utils.stt.streaming import *
from utils.stt.streaming import get_stt_service_for_language, STTService
from utils.stt.streaming import (
process_audio_soniox,
STTService,
get_stt_service_for_language,
process_audio_dg,
process_audio_soniox,
process_audio_speechmatics,
send_initial_file_path,
)
from utils.webhooks import get_audio_bytes_webhook_seconds
from utils.pusher import connect_to_trigger_pusher
from utils.subscription import has_transcription_credits
from utils.translation import TranslationService
from utils.translation_cache import TranscriptSegmentLanguageCache
from utils.speaker_identification import detect_speaker_from_text
from utils.analytics import record_usage
from utils.subscription import has_transcription_credits

from utils.other import endpoints as auth
from utils.other.storage import get_profile_audio_if_exists
from utils.notifications import send_credit_limit_notification, send_silent_user_notification
from utils.webhooks import get_audio_bytes_webhook_seconds

router = APIRouter()

Expand Down Expand Up @@ -676,8 +676,9 @@ async def connect():
nonlocal pusher_connected
nonlocal pusher_connect_lock
nonlocal pusher_ws
nonlocal websocket_active
async with pusher_connect_lock:
if pusher_connected:
if pusher_connected or not websocket_active:
return
# drain
if pusher_ws:
Expand Down