Skip to content

Commit a32fbda

Browse files
committed
Simplify the transcript view
1 parent e19a16d commit a32fbda

File tree

7 files changed

+119
-206
lines changed

7 files changed

+119
-206
lines changed

firebaseai/FirebaseAIExample.xcodeproj/project.pbxproj

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515
0ECE3A9C2EB286B90072EC6A /* ApplicationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECE3A9A2EB286AD0072EC6A /* ApplicationError.swift */; };
1616
0EE94F252E9599B800CEFD69 /* TranscriptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F212E9599B800CEFD69 /* TranscriptView.swift */; };
1717
0EE94F262E9599B800CEFD69 /* ConnectButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1D2E9599B800CEFD69 /* ConnectButton.swift */; };
18-
0EE94F272E9599B800CEFD69 /* TranscriptViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1B2E9599B800CEFD69 /* TranscriptViewModel.swift */; };
18+
0EE94F272E9599B800CEFD69 /* TypeWriterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1B2E9599B800CEFD69 /* TypeWriterViewModel.swift */; };
1919
0EE94F282E9599B800CEFD69 /* AudioPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F132E9599B800CEFD69 /* AudioPlayer.swift */; };
2020
0EE94F292E9599B800CEFD69 /* LiveAudioScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F182E9599B800CEFD69 /* LiveAudioScreen.swift */; };
2121
0EE94F2A2E9599B800CEFD69 /* LiveViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1A2E9599B800CEFD69 /* LiveViewModel.swift */; };
22-
0EE94F2B2E9599B800CEFD69 /* TranscriptLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F162E9599B800CEFD69 /* TranscriptLine.swift */; };
2322
0EE94F2C2E9599B800CEFD69 /* ModelAvatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F202E9599B800CEFD69 /* ModelAvatar.swift */; };
2423
0EE94F2D2E9599B800CEFD69 /* LiveErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1F2E9599B800CEFD69 /* LiveErrorView.swift */; };
2524
0EE94F2E2E9599B800CEFD69 /* Microphone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F142E9599B800CEFD69 /* Microphone.swift */; };
@@ -30,11 +29,10 @@
3029
0EE94F332E9599B800CEFD69 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0EE94F232E9599B800CEFD69 /* Assets.xcassets */; };
3130
0EE94F342E9599B800CEFD69 /* TranscriptView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F212E9599B800CEFD69 /* TranscriptView.swift */; };
3231
0EE94F352E9599B800CEFD69 /* ConnectButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1D2E9599B800CEFD69 /* ConnectButton.swift */; };
33-
0EE94F362E9599B800CEFD69 /* TranscriptViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1B2E9599B800CEFD69 /* TranscriptViewModel.swift */; };
32+
0EE94F362E9599B800CEFD69 /* TypeWriterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1B2E9599B800CEFD69 /* TypeWriterViewModel.swift */; };
3433
0EE94F372E9599B800CEFD69 /* AudioPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F132E9599B800CEFD69 /* AudioPlayer.swift */; };
3534
0EE94F382E9599B800CEFD69 /* LiveAudioScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F182E9599B800CEFD69 /* LiveAudioScreen.swift */; };
3635
0EE94F392E9599B800CEFD69 /* LiveViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1A2E9599B800CEFD69 /* LiveViewModel.swift */; };
37-
0EE94F3A2E9599B800CEFD69 /* TranscriptLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F162E9599B800CEFD69 /* TranscriptLine.swift */; };
3836
0EE94F3B2E9599B800CEFD69 /* ModelAvatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F202E9599B800CEFD69 /* ModelAvatar.swift */; };
3937
0EE94F3C2E9599B800CEFD69 /* LiveErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F1F2E9599B800CEFD69 /* LiveErrorView.swift */; };
4038
0EE94F3D2E9599B800CEFD69 /* Microphone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE94F142E9599B800CEFD69 /* Microphone.swift */; };
@@ -134,10 +132,9 @@
134132
0EE94F122E9599B800CEFD69 /* AudioController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioController.swift; sourceTree = "<group>"; };
135133
0EE94F132E9599B800CEFD69 /* AudioPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioPlayer.swift; sourceTree = "<group>"; };
136134
0EE94F142E9599B800CEFD69 /* Microphone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Microphone.swift; sourceTree = "<group>"; };
137-
0EE94F162E9599B800CEFD69 /* TranscriptLine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranscriptLine.swift; sourceTree = "<group>"; };
138135
0EE94F182E9599B800CEFD69 /* LiveAudioScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveAudioScreen.swift; sourceTree = "<group>"; };
139136
0EE94F1A2E9599B800CEFD69 /* LiveViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveViewModel.swift; sourceTree = "<group>"; };
140-
0EE94F1B2E9599B800CEFD69 /* TranscriptViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TranscriptViewModel.swift; sourceTree = "<group>"; };
137+
0EE94F1B2E9599B800CEFD69 /* TypeWriterViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypeWriterViewModel.swift; sourceTree = "<group>"; };
141138
0EE94F1D2E9599B800CEFD69 /* ConnectButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectButton.swift; sourceTree = "<group>"; };
142139
0EE94F1E2E9599B800CEFD69 /* LiveErrorDetailsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveErrorDetailsView.swift; sourceTree = "<group>"; };
143140
0EE94F1F2E9599B800CEFD69 /* LiveErrorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LiveErrorView.swift; sourceTree = "<group>"; };
@@ -245,7 +242,7 @@
245242
isa = PBXGroup;
246243
children = (
247244
0EE94F1A2E9599B800CEFD69 /* LiveViewModel.swift */,
248-
0EE94F1B2E9599B800CEFD69 /* TranscriptViewModel.swift */,
245+
0EE94F1B2E9599B800CEFD69 /* TypeWriterViewModel.swift */,
249246
);
250247
path = ViewModels;
251248
sourceTree = "<group>";
@@ -269,7 +266,6 @@
269266
0ECE3A9A2EB286AD0072EC6A /* ApplicationError.swift */,
270267
0ECE3A972EB2860C0072EC6A /* Color+Hex.swift */,
271268
0EE94F152E9599B800CEFD69 /* Audio */,
272-
0EE94F172E9599B800CEFD69 /* Models */,
273269
0EE94F192E9599B800CEFD69 /* Screens */,
274270
0EE94F1C2E9599B800CEFD69 /* ViewModels */,
275271
0EE94F222E9599B800CEFD69 /* Views */,
@@ -639,11 +635,10 @@
639635
86BB55EF2E8B2D6D0054B8B5 /* ContentView.swift in Sources */,
640636
0EE94F252E9599B800CEFD69 /* TranscriptView.swift in Sources */,
641637
0EE94F262E9599B800CEFD69 /* ConnectButton.swift in Sources */,
642-
0EE94F272E9599B800CEFD69 /* TranscriptViewModel.swift in Sources */,
638+
0EE94F272E9599B800CEFD69 /* TypeWriterViewModel.swift in Sources */,
643639
0EE94F282E9599B800CEFD69 /* AudioPlayer.swift in Sources */,
644640
0EE94F292E9599B800CEFD69 /* LiveAudioScreen.swift in Sources */,
645641
0EE94F2A2E9599B800CEFD69 /* LiveViewModel.swift in Sources */,
646-
0EE94F2B2E9599B800CEFD69 /* TranscriptLine.swift in Sources */,
647642
0EE94F2C2E9599B800CEFD69 /* ModelAvatar.swift in Sources */,
648643
0EE94F2D2E9599B800CEFD69 /* LiveErrorView.swift in Sources */,
649644
0EE94F2E2E9599B800CEFD69 /* Microphone.swift in Sources */,
@@ -681,11 +676,10 @@
681676
8848C8352B0D04BC007B434F /* ContentView.swift in Sources */,
682677
0EE94F342E9599B800CEFD69 /* TranscriptView.swift in Sources */,
683678
0EE94F352E9599B800CEFD69 /* ConnectButton.swift in Sources */,
684-
0EE94F362E9599B800CEFD69 /* TranscriptViewModel.swift in Sources */,
679+
0EE94F362E9599B800CEFD69 /* TypeWriterViewModel.swift in Sources */,
685680
0EE94F372E9599B800CEFD69 /* AudioPlayer.swift in Sources */,
686681
0EE94F382E9599B800CEFD69 /* LiveAudioScreen.swift in Sources */,
687682
0EE94F392E9599B800CEFD69 /* LiveViewModel.swift in Sources */,
688-
0EE94F3A2E9599B800CEFD69 /* TranscriptLine.swift in Sources */,
689683
0EE94F3B2E9599B800CEFD69 /* ModelAvatar.swift in Sources */,
690684
0EE94F3C2E9599B800CEFD69 /* LiveErrorView.swift in Sources */,
691685
0EE94F3D2E9599B800CEFD69 /* Microphone.swift in Sources */,

firebaseai/LiveAudioExample/Models/TranscriptLine.swift

Lines changed: 0 additions & 28 deletions
This file was deleted.

firebaseai/LiveAudioExample/Screens/LiveAudioScreen.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct LiveAudioScreen: View {
3333
var body: some View {
3434
VStack(spacing: 20) {
3535
ModelAvatar(isConnected: viewModel.state == .connected)
36-
TranscriptView(vm: viewModel.transcriptViewModel)
36+
TranscriptView(typewriter: viewModel.transcriptTypewriter)
3737

3838
Spacer()
3939
if let error = viewModel.error {

firebaseai/LiveAudioExample/ViewModels/LiveViewModel.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class LiveViewModel: ObservableObject {
3636
var state: LiveViewModelState = .idle
3737

3838
@Published
39-
var transcriptViewModel: TranscriptViewModel = TranscriptViewModel()
39+
var transcriptTypewriter: TypeWriterViewModel = TypeWriterViewModel()
4040

4141
@Published
4242
var backgroundColor: Color? = nil
@@ -97,7 +97,7 @@ class LiveViewModel: ObservableObject {
9797
}
9898

9999
state = .connecting
100-
transcriptViewModel.restart()
100+
transcriptTypewriter.restart()
101101
hasTranscripts = false
102102

103103
do {
@@ -124,7 +124,7 @@ class LiveViewModel: ObservableObject {
124124
microphoneTask.cancel()
125125
state = .idle
126126
liveSession = nil
127-
transcriptViewModel.clearPending()
127+
transcriptTypewriter.clearPending()
128128

129129
withAnimation {
130130
backgroundColor = nil
@@ -199,15 +199,15 @@ class LiveViewModel: ObservableObject {
199199

200200
if content.isTurnComplete {
201201
// add a space, so the next time a transcript comes in, it's not squished with the previous one
202-
transcriptViewModel.appendTranscript(" ")
202+
transcriptTypewriter.appendText(" ")
203203
}
204204

205205
if content.wasInterrupted {
206206
logger.warning("Model was interrupted")
207207
await audioController?.interrupt()
208-
transcriptViewModel.clearPending()
208+
transcriptTypewriter.clearPending()
209209
// adds an em dash to indiciate that the model was cutoff
210-
transcriptViewModel.appendTranscript("")
210+
transcriptTypewriter.appendText("")
211211
} else if let transcript = content.outputAudioTranscription?.text {
212212
appendAudioTranscript(transcript)
213213
}
@@ -245,7 +245,7 @@ class LiveViewModel: ObservableObject {
245245

246246
private func appendAudioTranscript(_ transcript: String) {
247247
hasTranscripts = true
248-
transcriptViewModel.appendTranscript(transcript)
248+
transcriptTypewriter.appendText(transcript)
249249
}
250250

251251
private func changeBackgroundColor(args: JSONObject, id: String?) throws -> FunctionResponsePart {

firebaseai/LiveAudioExample/ViewModels/TranscriptViewModel.swift

Lines changed: 0 additions & 150 deletions
This file was deleted.

0 commit comments

Comments
 (0)