Skip to content

Commit

Permalink
Merge branch 'main' into card-stream
Browse files Browse the repository at this point in the history
  • Loading branch information
kevvz committed Sep 24, 2024
2 parents 400ab78 + f0ea1bf commit 9b208bf
Show file tree
Hide file tree
Showing 70 changed files with 3,093 additions and 1,506 deletions.
7 changes: 6 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -153,4 +153,9 @@ app/lib/env/prod_env.g.dart
/backend/scripts/research/*.md
/backend/scripts/research/*.json
/backend/scripts/research/*.csv
/backend/scripts/research/users
/backend/scripts/research/users
/backend/scripts/stt/_temp
/backend/scripts/stt/_temp2
/backend/scripts/stt/pretrained_models
/backend/scripts/stt/results
/backend/scripts/stt/diarization.json
2 changes: 1 addition & 1 deletion app/lib/backend/auth.dart
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ Future<UserCredential?> signInWithGoogle() async {
try {
print('Signing in with Google');
// Trigger the authentication flow
final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();
final GoogleSignInAccount? googleUser = await GoogleSignIn(scopes: ['profile', 'email']).signIn();
print('Google User: $googleUser');
// Obtain the auth details from the request
final GoogleSignInAuthentication? googleAuth = await googleUser?.authentication;
Expand Down
4 changes: 4 additions & 0 deletions app/lib/backend/http/api/memories.dart
Original file line number Diff line number Diff line change
Expand Up @@ -188,18 +188,22 @@ class TranscriptsResponse {
List<TranscriptSegment> deepgram;
List<TranscriptSegment> soniox;
List<TranscriptSegment> whisperx;
List<TranscriptSegment> speechmatics;

TranscriptsResponse({
this.deepgram = const [],
this.soniox = const [],
this.whisperx = const [],
this.speechmatics = const [],
});

factory TranscriptsResponse.fromJson(Map<String, dynamic> json) {
return TranscriptsResponse(
deepgram: (json['deepgram'] as List<dynamic>).map((segment) => TranscriptSegment.fromJson(segment)).toList(),
soniox: (json['soniox'] as List<dynamic>).map((segment) => TranscriptSegment.fromJson(segment)).toList(),
whisperx: (json['whisperx'] as List<dynamic>).map((segment) => TranscriptSegment.fromJson(segment)).toList(),
speechmatics:
(json['speechmatics'] as List<dynamic>).map((segment) => TranscriptSegment.fromJson(segment)).toList(),
);
}
}
Expand Down
10 changes: 10 additions & 0 deletions app/lib/backend/http/api/messages.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,16 @@ Future<List<ServerMessage>> getMessagesServer() async {
return [];
}

Future<List<ServerMessage>> clearChatServer() async {
var response = await makeApiCall(url: '${Env.apiBaseUrl}v1/clear-chat', headers: {}, method: 'DELETE', body: '');
if (response == null) throw Exception('Failed to delete chat');
if (response.statusCode == 200) {
return [ServerMessage.fromJson(jsonDecode(response.body))];
} else {
throw Exception('Failed to delete chat');
}
}

Future<ServerMessage> sendMessageServer(String text, {String? pluginId}) {
return makeApiCall(
url: '${Env.apiBaseUrl}v1/messages?plugin_id=$pluginId',
Expand Down
2 changes: 2 additions & 0 deletions app/lib/backend/preferences.dart
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,8 @@ class SharedPreferencesUtil {

set deviceCodec(BleAudioCodec value) => saveString('deviceCodec', mapCodecToName(value));

Future setDeviceCodec(BleAudioCodec value) => saveString('deviceCodec', mapCodecToName(value));

BleAudioCodec get deviceCodec => mapNameToCodec(getString('deviceCodec') ?? '');

String get openAIApiKey => getString('openaiApiKey') ?? '';
Expand Down
12 changes: 11 additions & 1 deletion app/lib/backend/schema/bt_device.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,17 @@ import 'package:friend_private/services/device_connections.dart';
import 'package:friend_private/services/frame_connection.dart';
import 'package:friend_private/utils/ble/gatt_utils.dart';

enum BleAudioCodec { pcm16, pcm8, mulaw16, mulaw8, opus, unknown }
enum BleAudioCodec {
pcm16,
pcm8,
mulaw16,
mulaw8,
opus,
unknown;

@override
String toString() => mapCodecToName(this);
}

String mapCodecToName(BleAudioCodec codec) {
switch (codec) {
Expand Down
20 changes: 20 additions & 0 deletions app/lib/backend/schema/transcript_segment.dart
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,26 @@ class TranscriptSegment {
cleanSegments(joinedSimilarSegments);

segments.addAll(joinedSimilarSegments);

// for i, segment in enumerate(segments):
// segments[i].text = (
// segments[i].text.strip()
// .replace(' ', '')
// .replace(' ,', ',')
// .replace(' .', '.')
// .replace(' ?', '?')
// )

// Speechmatics specific issue with punctuation
for (var i = 0; i < segments.length; i++) {
segments[i].text = segments[i]
.text
.replaceAll(' ', '')
.replaceAll(' ,', ',')
.replaceAll(' .', '.')
.replaceAll(' ?', '?')
.trim();
}
}

static String segmentsAsString(
Expand Down
4 changes: 2 additions & 2 deletions app/lib/env/env.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ abstract class Env {

static String? get mixpanelProjectToken => _instance.mixpanelProjectToken;

// static String? get apiBaseUrl => _instance.apiBaseUrl;
static String? get apiBaseUrl => _instance.apiBaseUrl;

// static String? get apiBaseUrl => 'https://based-hardware-development--backened-dev-api.modal.run/';
static String? get apiBaseUrl => 'https://camel-lucky-reliably.ngrok-free.app/';
// static String? get apiBaseUrl => 'https://camel-lucky-reliably.ngrok-free.app/';
// static String? get apiBaseUrl => 'https://mutual-fun-boar.ngrok-free.app/';

static String? get growthbookApiKey => _instance.growthbookApiKey;
Expand Down
24 changes: 14 additions & 10 deletions app/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -164,27 +164,26 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
update: (BuildContext context, value, MessageProvider? previous) =>
(previous?..updatePluginProvider(value)) ?? MessageProvider(),
),
ChangeNotifierProvider(create: (context) => WebSocketProvider()),
ChangeNotifierProxyProvider3<MemoryProvider, MessageProvider, WebSocketProvider, CaptureProvider>(
ChangeNotifierProxyProvider2<MemoryProvider, MessageProvider, CaptureProvider>(
create: (context) => CaptureProvider(),
update: (BuildContext context, memory, message, wsProvider, CaptureProvider? previous) =>
(previous?..updateProviderInstances(memory, message, wsProvider)) ?? CaptureProvider(),
update: (BuildContext context, memory, message, CaptureProvider? previous) =>
(previous?..updateProviderInstances(memory, message)) ?? CaptureProvider(),
),
ChangeNotifierProxyProvider2<CaptureProvider, WebSocketProvider, DeviceProvider>(
ChangeNotifierProxyProvider<CaptureProvider, DeviceProvider>(
create: (context) => DeviceProvider(),
update: (BuildContext context, captureProvider, wsProvider, DeviceProvider? previous) =>
(previous?..setProviders(captureProvider, wsProvider)) ?? DeviceProvider(),
update: (BuildContext context, captureProvider, DeviceProvider? previous) =>
(previous?..setProviders(captureProvider)) ?? DeviceProvider(),
),
ChangeNotifierProxyProvider<DeviceProvider, OnboardingProvider>(
create: (context) => OnboardingProvider(),
update: (BuildContext context, value, OnboardingProvider? previous) =>
(previous?..setDeviceProvider(value)) ?? OnboardingProvider(),
),
ListenableProvider(create: (context) => HomeProvider()),
ChangeNotifierProxyProvider3<DeviceProvider, CaptureProvider, WebSocketProvider, SpeechProfileProvider>(
ChangeNotifierProxyProvider<DeviceProvider, SpeechProfileProvider>(
create: (context) => SpeechProfileProvider(),
update: (BuildContext context, device, capture, wsProvider, SpeechProfileProvider? previous) =>
(previous?..setProviders(device, capture, wsProvider)) ?? SpeechProfileProvider(),
update: (BuildContext context, device, SpeechProfileProvider? previous) =>
(previous?..setProviders(device)) ?? SpeechProfileProvider(),
),
ChangeNotifierProxyProvider2<PluginProvider, MemoryProvider, MemoryDetailProvider>(
create: (context) => MemoryDetailProvider(),
Expand Down Expand Up @@ -275,6 +274,11 @@ class _DeciderWidgetState extends State<DeciderWidget> {
if (context.read<ConnectivityProvider>().isConnected) {
NotificationService.instance.saveNotificationToken();
}

if (context.read<AuthenticationProvider>().user != null) {
context.read<MessageProvider>().setMessagesFromCache();
context.read<MessageProvider>().refreshMessages();
}
});
super.initState();
}
Expand Down
Loading

0 comments on commit 9b208bf

Please sign in to comment.