@magmamath/students-features 1.3.23-rc.16 → 1.3.23-rc.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionController.js +1 -0
  2. package/dist/commonjs/features/voice/playing/hooks/useVoiceTranscriptionController.js.map +1 -1
  3. package/dist/commonjs/features/voice/playing/model/PlaybackController.js +67 -32
  4. package/dist/commonjs/features/voice/playing/model/PlaybackController.js.map +1 -1
  5. package/dist/commonjs/features/voice/playing/model/Player.model.js +24 -1
  6. package/dist/commonjs/features/voice/playing/model/Player.model.js.map +1 -1
  7. package/dist/commonjs/features/voice/playing/model/VoicePlayer.model.js +7 -2
  8. package/dist/commonjs/features/voice/playing/model/VoicePlayer.model.js.map +1 -1
  9. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionController.js +1 -0
  10. package/dist/module/features/voice/playing/hooks/useVoiceTranscriptionController.js.map +1 -1
  11. package/dist/module/features/voice/playing/model/PlaybackController.js +67 -32
  12. package/dist/module/features/voice/playing/model/PlaybackController.js.map +1 -1
  13. package/dist/module/features/voice/playing/model/Player.model.js +24 -1
  14. package/dist/module/features/voice/playing/model/Player.model.js.map +1 -1
  15. package/dist/module/features/voice/playing/model/VoicePlayer.model.js +7 -2
  16. package/dist/module/features/voice/playing/model/VoicePlayer.model.js.map +1 -1
  17. package/dist/typescript/commonjs/features/voice/playing/hooks/useVoiceTranscriptionController.d.ts.map +1 -1
  18. package/dist/typescript/commonjs/features/voice/playing/model/PlaybackController.d.ts +3 -2
  19. package/dist/typescript/commonjs/features/voice/playing/model/PlaybackController.d.ts.map +1 -1
  20. package/dist/typescript/commonjs/features/voice/playing/model/Player.model.d.ts +3 -0
  21. package/dist/typescript/commonjs/features/voice/playing/model/Player.model.d.ts.map +1 -1
  22. package/dist/typescript/commonjs/features/voice/playing/model/VoicePlayer.model.d.ts +2 -0
  23. package/dist/typescript/commonjs/features/voice/playing/model/VoicePlayer.model.d.ts.map +1 -1
  24. package/dist/typescript/module/features/voice/playing/hooks/useVoiceTranscriptionController.d.ts.map +1 -1
  25. package/dist/typescript/module/features/voice/playing/model/PlaybackController.d.ts +3 -2
  26. package/dist/typescript/module/features/voice/playing/model/PlaybackController.d.ts.map +1 -1
  27. package/dist/typescript/module/features/voice/playing/model/Player.model.d.ts +3 -0
  28. package/dist/typescript/module/features/voice/playing/model/Player.model.d.ts.map +1 -1
  29. package/dist/typescript/module/features/voice/playing/model/VoicePlayer.model.d.ts +2 -0
  30. package/dist/typescript/module/features/voice/playing/model/VoicePlayer.model.d.ts.map +1 -1
  31. package/package.json +1 -1
  32. package/src/features/voice/playing/hooks/useVoiceTranscriptionController.ts +1 -0
  33. package/src/features/voice/playing/model/PlaybackController.ts +73 -36
  34. package/src/features/voice/playing/model/Player.model.ts +26 -1
  35. package/src/features/voice/playing/model/VoicePlayer.model.ts +7 -1
@@ -60,6 +60,7 @@ const useVoiceTranscriptionController = ({
60
60
  }, [model, answersKey]);
61
61
  (0, _react.useEffect)(() => {
62
62
  model.stopAudio();
63
+ model.setCurrentAttempt(activeAttempt);
63
64
  if (activeAttempt !== null) {
64
65
  model.loader.loadTranscriptForAttempt(activeAttempt);
65
66
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_effectorReact","require","_react","_reactI18next","_constants","_helpers","_supportedLanguages","_i18n","useVoiceTranscriptionController","model","answers","attemptOffset","attemptsCount","problemId","t","useText","i18n","useTranslation","playerState","isLoadingTranscripts","isTranslationActive","translations","isTranslating","useUnit","$playerState","loader","loadTranscriptForAttempt","pending","translation","$isActive","$translations","translate","activeAttempt","getActiveAttempt","answersKey","useMemo","map","a","_id","audioFileId","join","activeAudioFileId","undefined","hasActiveAudio","anyAttemptHasAudio","some","cachedEntry","getCachedTranscript","activeTranscript","text","hasTranscriptText","NO_AUDIO_BE_MESSAGE","isActiveTranscriptLoading","isSourceSameAsTarget","language","resolveGoogleLanguageCode","canTranslate","cachedTranslation","showTranslation","isTranslationLoading","displayText","answersRef","useRef","current","useEffect","reinitializePlayer","stopAudio","dropdown","setExpanded","resetPlayer","initializeWithAudios","autoActivatedAttempts","Set","clear","has","add","setActive","attemptNumber","targetLanguage","doneData","watch","result","onPlayPress","useCallback","togglePlayPause","onTranslationToggle","toggle","display","isLoading","flags","actions","exports"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/hooks/useVoiceTranscriptionController.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_effectorReact","require","_react","_reactI18next","_constants","_helpers","_supportedLanguages","_i18n","useVoiceTranscriptionController","model","answers","attemptOffset","attemptsCount","problemId","t","useText","i18n","useTranslation","playerState","isLoadingTranscripts","isTranslationActive","translations","isTranslating","useUnit","$playerState","loader","loadTranscriptForAttempt","pending","translation","$isActive","$translations","translate","activeAttempt","getActiveAttempt","answersKey","useMemo","map","a","_id","audioFileId","join","activeAudioFileId","undefined","hasActiveAudio","anyAttemptHasAudio","some","cachedEntry","getCachedTranscript","activeTranscript","text","hasTranscriptText","NO_AUDIO_BE_MESSAGE","isActiveTranscriptLoading","isSourceSameAsTarget","language","resolveGoogleLanguageCode","canTranslate","cachedTranslation","showTranslation","isTranslationLoading","displayText","answersRef","useRef","current","useEffect","reinitializePlayer","stopAudio","dropdown","setExpanded","resetPlayer","initializeWithAudios","setCurrentAttempt","autoActivatedAttempts","Set","clear","has","add","setActive","attemptNumber","targetLanguage","doneData","watch","result","onPlayPress","useCallback","togglePlayPause","onTranslationToggle","toggle","display","isLoading","flags","actions","exports"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/hooks/useVoiceTranscriptionController.ts"],"mappings":"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","ignoreList":[]}
@@ -13,7 +13,6 @@ class PlaybackController {
13
13
  this.collection = deps.collection;
14
14
  this.player = deps.player;
15
15
  this.downloader = deps.downloader;
16
- this.onCurrentAttemptChange = deps.onCurrentAttemptChange;
17
16
  this.player.playbackFinished.watch(() => this.clearCurrentAttempt());
18
17
  }
19
18
  togglePlayPause = attemptNumber => {
@@ -24,6 +23,35 @@ class PlaybackController {
24
23
  this.handlePlayAttempt(attemptNumber);
25
24
  }
26
25
  };
26
+ preloadAudio = (0, _effector.createEffect)(async attemptNumber => {
27
+ const item = this.collection.get(attemptNumber);
28
+ if (!item) return;
29
+ if (this.collection.hasAudio(attemptNumber)) {
30
+ this.primePlayerIfIdle(attemptNumber);
31
+ return;
32
+ }
33
+ if (item.audioDownloadPromise) {
34
+ try {
35
+ await item.audioDownloadPromise;
36
+ } catch {}
37
+ this.primePlayerIfIdle(attemptNumber);
38
+ return;
39
+ }
40
+ try {
41
+ await this.downloadAudio(attemptNumber);
42
+ this.primePlayerIfIdle(attemptNumber);
43
+ } catch (error) {
44
+ if (error instanceof Error && error.name === 'AbortError') return;
45
+ console.error('Audio preload error:', error);
46
+ }
47
+ });
48
+ primePlayerIfIdle(attemptNumber) {
49
+ if (this.player.$playerState.getState() !== _PlayerModel.PlayerState.IDLE) return;
50
+ if (this.currentPlayingAttempt !== null) return;
51
+ const audioUri = this.collection.get(attemptNumber)?.audioUri;
52
+ if (!audioUri) return;
53
+ this.player.prime(audioUri);
54
+ }
27
55
  halt() {
28
56
  this.shouldPreventPlayback = true;
29
57
  this.abortAllDownloads();
@@ -44,7 +72,6 @@ class PlaybackController {
44
72
  }
45
73
  clearCurrentAttempt() {
46
74
  this.currentPlayingAttempt = null;
47
- this.onCurrentAttemptChange(null);
48
75
  }
49
76
  abortAllDownloads() {
50
77
  this.collection.getAll().forEach(item => {
@@ -58,6 +85,37 @@ class PlaybackController {
58
85
  }
59
86
  });
60
87
  }
88
+ async downloadAudio(attemptNumber) {
89
+ const item = this.collection.get(attemptNumber);
90
+ if (!item) return;
91
+ const {
92
+ collectionItem,
93
+ downloadPromise
94
+ } = await this.downloader.download({
95
+ audioFileId: item.audioFileId,
96
+ attemptNumber
97
+ });
98
+ this.collection.update(attemptNumber, collectionItem);
99
+ try {
100
+ const result = await downloadPromise;
101
+ this.collection.update(attemptNumber, {
102
+ audioUri: result.uri,
103
+ audioLoading: false,
104
+ audioError: undefined,
105
+ controller: undefined,
106
+ audioDownloadPromise: undefined
107
+ });
108
+ } catch (error) {
109
+ const isAbort = error instanceof Error && error.name === 'AbortError';
110
+ this.collection.update(attemptNumber, {
111
+ audioLoading: false,
112
+ audioError: isAbort ? undefined : error instanceof Error ? error.message : 'Failed to download audio',
113
+ controller: undefined,
114
+ audioDownloadPromise: undefined
115
+ });
116
+ throw error;
117
+ }
118
+ }
61
119
  handlePlayAttempt = (0, _effector.createEffect)(async attemptNumber => {
62
120
  this.shouldPreventPlayback = false;
63
121
  const item = this.collection.get(attemptNumber);
@@ -71,46 +129,24 @@ class PlaybackController {
71
129
  }
72
130
  try {
73
131
  this.player.setPlayerState(_PlayerModel.PlayerState.LOADING);
74
- const {
75
- collectionItem,
76
- downloadPromise
77
- } = await this.downloader.download({
78
- audioFileId: item.audioFileId,
79
- attemptNumber
80
- });
81
- if (this.shouldPreventPlayback) {
82
- collectionItem.controller?.abort();
83
- return;
132
+ if (item.audioDownloadPromise) {
133
+ await item.audioDownloadPromise;
134
+ } else {
135
+ await this.downloadAudio(attemptNumber);
84
136
  }
85
- this.collection.update(attemptNumber, collectionItem);
86
- const result = await downloadPromise;
87
137
  if (this.shouldPreventPlayback) {
88
- if (result.uri?.startsWith('blob:')) {
89
- URL.revokeObjectURL(result.uri);
90
- }
138
+ this.player.setPlayerState(_PlayerModel.PlayerState.IDLE);
91
139
  return;
92
140
  }
93
- this.collection.update(attemptNumber, {
94
- audioUri: result.uri,
95
- audioLoading: false,
96
- audioError: undefined,
97
- controller: undefined,
98
- audioDownloadPromise: undefined
99
- });
100
141
  this.player.setPlayerState(_PlayerModel.PlayerState.IDLE);
101
142
  this.playAudioFx(attemptNumber);
102
143
  } catch (error) {
103
- console.error('Audio download error:', error);
104
144
  if (error instanceof Error && error.name === 'AbortError') {
105
145
  this.player.setPlayerState(_PlayerModel.PlayerState.IDLE);
106
146
  return;
107
147
  }
108
- this.collection.update(attemptNumber, {
109
- audioLoading: false,
110
- audioError: error instanceof Error ? error.message : 'Failed to download audio',
111
- controller: undefined,
112
- audioDownloadPromise: undefined
113
- });
148
+ console.error('Audio download error:', error);
149
+ this.player.setPlayerState(_PlayerModel.PlayerState.IDLE);
114
150
  }
115
151
  });
116
152
  playAudioFx = (0, _effector.createEffect)(async attemptNumber => {
@@ -133,7 +169,6 @@ class PlaybackController {
133
169
  return;
134
170
  }
135
171
  this.currentPlayingAttempt = attemptNumber;
136
- this.onCurrentAttemptChange(attemptNumber);
137
172
  await this.player.play(item.audioUri);
138
173
  } catch (error) {
139
174
  console.error('Error playing audio:', error);
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_PlayerModel","PlaybackController","currentPlayingAttempt","shouldPreventPlayback","constructor","deps","collection","player","downloader","onCurrentAttemptChange","playbackFinished","watch","clearCurrentAttempt","togglePlayPause","attemptNumber","playerState","$playerState","getState","PlayerState","PLAYING","pause","handlePlayAttempt","halt","abortAllDownloads","stop","releaseResources","getAll","forEach","item","controller","abortDownload","audioUri","startsWith","URL","revokeObjectURL","e","audioLoading","update","undefined","audioDownloadPromise","createEffect","get","hasAudio","playAudioFx","setPlayerState","LOADING","collectionItem","downloadPromise","download","audioFileId","abort","result","uri","audioError","IDLE","error","console","Error","name","message","warn","remove","playing","resume","play","exports"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/PlaybackController.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_PlayerModel","PlaybackController","currentPlayingAttempt","shouldPreventPlayback","constructor","deps","collection","player","downloader","playbackFinished","watch","clearCurrentAttempt","togglePlayPause","attemptNumber","playerState","$playerState","getState","PlayerState","PLAYING","pause","handlePlayAttempt","preloadAudio","createEffect","item","get","hasAudio","primePlayerIfIdle","audioDownloadPromise","downloadAudio","error","Error","name","console","IDLE","audioUri","prime","halt","abortAllDownloads","stop","releaseResources","getAll","forEach","controller","abortDownload","startsWith","URL","revokeObjectURL","e","audioLoading","update","undefined","collectionItem","downloadPromise","download","audioFileId","result","uri","audioError","isAbort","message","playAudioFx","setPlayerState","LOADING","warn","remove","playing","resume","play","exports"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/PlaybackController.ts"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@ let PlayerState = exports.PlayerState = /*#__PURE__*/function (PlayerState) {
16
16
  class PlayerModel {
17
17
  player = (0, _expoAudio.createAudioPlayer)();
18
18
  stopped = false;
19
+ primedUri = null;
19
20
  reset = (0, _effector.createEvent)();
20
21
  setPlayerState = (0, _effector.createEvent)();
21
22
  playbackFinished = (0, _effector.createEvent)();
@@ -39,11 +40,29 @@ class PlayerModel {
39
40
  this.stopped = true;
40
41
  if (this.player) {
41
42
  this.player.replace('');
43
+ this.primedUri = null;
42
44
  this.setPlayerState(PlayerState.IDLE);
43
45
  } else {
44
46
  console.warn('Cannot stop: audio player not initialized');
45
47
  }
46
48
  });
49
+ prime = (0, _effector.createEffect)(uri => {
50
+ if (!this.player) return;
51
+ if (this.primedUri === uri) return;
52
+ this.primedUri = uri;
53
+ this.player.replace(uri);
54
+ });
55
+ seek = (0, _effector.createEffect)(async seconds => {
56
+ if (!this.player) {
57
+ console.warn('Cannot seek: audio player not initialized');
58
+ return;
59
+ }
60
+ if (!this.player.isLoaded) {
61
+ console.warn('Cannot seek: audio player not loaded');
62
+ return;
63
+ }
64
+ await this.player.seekTo(seconds);
65
+ });
47
66
  resume = (0, _effector.createEffect)(() => {
48
67
  if (this.player) {
49
68
  this.player.play();
@@ -58,7 +77,10 @@ class PlayerModel {
58
77
  return;
59
78
  }
60
79
  this.stopped = false;
61
- this.player.replace(uri);
80
+ if (this.primedUri !== uri) {
81
+ this.player.replace(uri);
82
+ this.primedUri = uri;
83
+ }
62
84
  const waitForLoad = () => {
63
85
  if (this.stopped) return;
64
86
  if (this.player && this.player.isLoaded) {
@@ -91,6 +113,7 @@ class PlayerModel {
91
113
  this.player.release();
92
114
  this.player = null;
93
115
  }
116
+ this.primedUri = null;
94
117
  this.reset();
95
118
  }
96
119
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_expoAudio","PlayerState","exports","PlayerModel","player","createAudioPlayer","stopped","reset","createEvent","setPlayerState","playbackFinished","$playerState","restore","IDLE","setupAudioMode","createEffect","setAudioModeAsync","playsInSilentMode","shouldPlayInBackground","interruptionMode","pause","PAUSED","console","warn","stop","replace","resume","play","PLAYING","uri","waitForLoad","isLoaded","unsubscribe","addListener","status","didJustFinish","remove","setTimeout","reinitialize","release","error"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/Player.model.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_expoAudio","PlayerState","exports","PlayerModel","player","createAudioPlayer","stopped","primedUri","reset","createEvent","setPlayerState","playbackFinished","$playerState","restore","IDLE","setupAudioMode","createEffect","setAudioModeAsync","playsInSilentMode","shouldPlayInBackground","interruptionMode","pause","PAUSED","console","warn","stop","replace","prime","uri","seek","seconds","isLoaded","seekTo","resume","play","PLAYING","waitForLoad","unsubscribe","addListener","status","didJustFinish","remove","setTimeout","reinitialize","release","error"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/Player.model.ts"],"mappings":"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","ignoreList":[]}
@@ -21,6 +21,7 @@ class VoicePlayerModel {
21
21
  $currentAttempt = (0, _effector.restore)(this.setCurrentAttempt, null).reset(this.reset);
22
22
  $playerState = this.playerModel.$playerState;
23
23
  pauseAudio = this.playerModel.pause;
24
+ seekAudio = this.playerModel.seek;
24
25
  constructor(params) {
25
26
  this.api = params.api;
26
27
  this.downloader = new _VoiceFileDownloaderModel.VoiceFileDownloaderModel(params.api);
@@ -29,8 +30,7 @@ class VoicePlayerModel {
29
30
  this.playback = new _PlaybackController.PlaybackController({
30
31
  collection: this.collection,
31
32
  player: this.playerModel,
32
- downloader: this.downloader,
33
- onCurrentAttemptChange: attempt => this.setCurrentAttempt(attempt)
33
+ downloader: this.downloader
34
34
  });
35
35
  this.togglePlayPause = this.playback.togglePlayPause;
36
36
  if (params.audios) {
@@ -41,6 +41,11 @@ class VoicePlayerModel {
41
41
  stopAudio = () => {
42
42
  this.playback.halt();
43
43
  };
44
+ preloadAudio = attemptNumber => {
45
+ const target = attemptNumber ?? this.$currentAttempt.getState();
46
+ if (target === null) return;
47
+ return this.playback.preloadAudio(target);
48
+ };
44
49
  resetPlayer = () => {
45
50
  this.playback.releaseResources();
46
51
  this.playback.halt();
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_TranscriptionsCollection","_VoiceFileDownloaderModel","_DropdownModel","_TranslationModel","_PlayerModel","_TranscriptionsDownloaderModel","_PlaybackController","VoicePlayerModel","collection","TranscriptionsCollection","dropdown","DropdownModel","playerModel","PlayerModel","setCurrentAttempt","createEvent","reset","$currentAttempt","restore","$playerState","pauseAudio","pause","constructor","params","api","downloader","VoiceFileDownloaderModel","loader","TranscriptionsDownloaderModel","translation","TranslationModel","playback","PlaybackController","player","onCurrentAttemptChange","attempt","togglePlayPause","audios","initializeCollectionFromAudios","setupAudioMode","stopAudio","halt","resetPlayer","releaseResources","clear","clearCache","initializeWithAudios","answerAudio","isAudioLoading","attemptNumber","get","audioLoading","getAllAttempts","getAll","reinitializePlayer","reinitialize","cleanup","release","console","warn","forEach","audio","index","audioFileId","add","_id","hasDrawing","drawing","exports"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/VoicePlayer.model.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_TranscriptionsCollection","_VoiceFileDownloaderModel","_DropdownModel","_TranslationModel","_PlayerModel","_TranscriptionsDownloaderModel","_PlaybackController","VoicePlayerModel","collection","TranscriptionsCollection","dropdown","DropdownModel","playerModel","PlayerModel","setCurrentAttempt","createEvent","reset","$currentAttempt","restore","$playerState","pauseAudio","pause","seekAudio","seek","constructor","params","api","downloader","VoiceFileDownloaderModel","loader","TranscriptionsDownloaderModel","translation","TranslationModel","playback","PlaybackController","player","togglePlayPause","audios","initializeCollectionFromAudios","setupAudioMode","stopAudio","halt","preloadAudio","attemptNumber","target","getState","resetPlayer","releaseResources","clear","clearCache","initializeWithAudios","answerAudio","isAudioLoading","get","audioLoading","getAllAttempts","getAll","reinitializePlayer","reinitialize","cleanup","release","console","warn","forEach","audio","index","audioFileId","add","_id","hasDrawing","drawing","exports"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/VoicePlayer.model.ts"],"mappings":"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","ignoreList":[]}
@@ -56,6 +56,7 @@ export const useVoiceTranscriptionController = ({
56
56
  }, [model, answersKey]);
57
57
  useEffect(() => {
58
58
  model.stopAudio();
59
+ model.setCurrentAttempt(activeAttempt);
59
60
  if (activeAttempt !== null) {
60
61
  model.loader.loadTranscriptForAttempt(activeAttempt);
61
62
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useUnit","useCallback","useEffect","useMemo","useRef","useTranslation","NO_AUDIO_BE_MESSAGE","getActiveAttempt","resolveGoogleLanguageCode","useText","useVoiceTranscriptionController","model","answers","attemptOffset","attemptsCount","problemId","t","i18n","playerState","isLoadingTranscripts","isTranslationActive","translations","isTranslating","$playerState","loader","loadTranscriptForAttempt","pending","translation","$isActive","$translations","translate","activeAttempt","answersKey","map","a","_id","audioFileId","join","activeAudioFileId","undefined","hasActiveAudio","anyAttemptHasAudio","some","cachedEntry","getCachedTranscript","activeTranscript","text","hasTranscriptText","isActiveTranscriptLoading","isSourceSameAsTarget","language","canTranslate","cachedTranslation","showTranslation","isTranslationLoading","displayText","answersRef","current","reinitializePlayer","stopAudio","dropdown","setExpanded","resetPlayer","initializeWithAudios","autoActivatedAttempts","Set","clear","has","add","setActive","attemptNumber","targetLanguage","doneData","watch","result","onPlayPress","togglePlayPause","onTranslationToggle","toggle","display","isLoading","flags","actions"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/hooks/useVoiceTranscriptionController.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useUnit","useCallback","useEffect","useMemo","useRef","useTranslation","NO_AUDIO_BE_MESSAGE","getActiveAttempt","resolveGoogleLanguageCode","useText","useVoiceTranscriptionController","model","answers","attemptOffset","attemptsCount","problemId","t","i18n","playerState","isLoadingTranscripts","isTranslationActive","translations","isTranslating","$playerState","loader","loadTranscriptForAttempt","pending","translation","$isActive","$translations","translate","activeAttempt","answersKey","map","a","_id","audioFileId","join","activeAudioFileId","undefined","hasActiveAudio","anyAttemptHasAudio","some","cachedEntry","getCachedTranscript","activeTranscript","text","hasTranscriptText","isActiveTranscriptLoading","isSourceSameAsTarget","language","canTranslate","cachedTranslation","showTranslation","isTranslationLoading","displayText","answersRef","current","reinitializePlayer","stopAudio","dropdown","setExpanded","resetPlayer","initializeWithAudios","setCurrentAttempt","autoActivatedAttempts","Set","clear","has","add","setActive","attemptNumber","targetLanguage","doneData","watch","result","onPlayPress","togglePlayPause","onTranslationToggle","toggle","display","isLoading","flags","actions"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/hooks/useVoiceTranscriptionController.ts"],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,6 @@ export class PlaybackController {
9
9
  this.collection = deps.collection;
10
10
  this.player = deps.player;
11
11
  this.downloader = deps.downloader;
12
- this.onCurrentAttemptChange = deps.onCurrentAttemptChange;
13
12
  this.player.playbackFinished.watch(() => this.clearCurrentAttempt());
14
13
  }
15
14
  togglePlayPause = attemptNumber => {
@@ -20,6 +19,35 @@ export class PlaybackController {
20
19
  this.handlePlayAttempt(attemptNumber);
21
20
  }
22
21
  };
22
+ preloadAudio = createEffect(async attemptNumber => {
23
+ const item = this.collection.get(attemptNumber);
24
+ if (!item) return;
25
+ if (this.collection.hasAudio(attemptNumber)) {
26
+ this.primePlayerIfIdle(attemptNumber);
27
+ return;
28
+ }
29
+ if (item.audioDownloadPromise) {
30
+ try {
31
+ await item.audioDownloadPromise;
32
+ } catch {}
33
+ this.primePlayerIfIdle(attemptNumber);
34
+ return;
35
+ }
36
+ try {
37
+ await this.downloadAudio(attemptNumber);
38
+ this.primePlayerIfIdle(attemptNumber);
39
+ } catch (error) {
40
+ if (error instanceof Error && error.name === 'AbortError') return;
41
+ console.error('Audio preload error:', error);
42
+ }
43
+ });
44
+ primePlayerIfIdle(attemptNumber) {
45
+ if (this.player.$playerState.getState() !== PlayerState.IDLE) return;
46
+ if (this.currentPlayingAttempt !== null) return;
47
+ const audioUri = this.collection.get(attemptNumber)?.audioUri;
48
+ if (!audioUri) return;
49
+ this.player.prime(audioUri);
50
+ }
23
51
  halt() {
24
52
  this.shouldPreventPlayback = true;
25
53
  this.abortAllDownloads();
@@ -40,7 +68,6 @@ export class PlaybackController {
40
68
  }
41
69
  clearCurrentAttempt() {
42
70
  this.currentPlayingAttempt = null;
43
- this.onCurrentAttemptChange(null);
44
71
  }
45
72
  abortAllDownloads() {
46
73
  this.collection.getAll().forEach(item => {
@@ -54,6 +81,37 @@ export class PlaybackController {
54
81
  }
55
82
  });
56
83
  }
84
+ async downloadAudio(attemptNumber) {
85
+ const item = this.collection.get(attemptNumber);
86
+ if (!item) return;
87
+ const {
88
+ collectionItem,
89
+ downloadPromise
90
+ } = await this.downloader.download({
91
+ audioFileId: item.audioFileId,
92
+ attemptNumber
93
+ });
94
+ this.collection.update(attemptNumber, collectionItem);
95
+ try {
96
+ const result = await downloadPromise;
97
+ this.collection.update(attemptNumber, {
98
+ audioUri: result.uri,
99
+ audioLoading: false,
100
+ audioError: undefined,
101
+ controller: undefined,
102
+ audioDownloadPromise: undefined
103
+ });
104
+ } catch (error) {
105
+ const isAbort = error instanceof Error && error.name === 'AbortError';
106
+ this.collection.update(attemptNumber, {
107
+ audioLoading: false,
108
+ audioError: isAbort ? undefined : error instanceof Error ? error.message : 'Failed to download audio',
109
+ controller: undefined,
110
+ audioDownloadPromise: undefined
111
+ });
112
+ throw error;
113
+ }
114
+ }
57
115
  handlePlayAttempt = createEffect(async attemptNumber => {
58
116
  this.shouldPreventPlayback = false;
59
117
  const item = this.collection.get(attemptNumber);
@@ -67,46 +125,24 @@ export class PlaybackController {
67
125
  }
68
126
  try {
69
127
  this.player.setPlayerState(PlayerState.LOADING);
70
- const {
71
- collectionItem,
72
- downloadPromise
73
- } = await this.downloader.download({
74
- audioFileId: item.audioFileId,
75
- attemptNumber
76
- });
77
- if (this.shouldPreventPlayback) {
78
- collectionItem.controller?.abort();
79
- return;
128
+ if (item.audioDownloadPromise) {
129
+ await item.audioDownloadPromise;
130
+ } else {
131
+ await this.downloadAudio(attemptNumber);
80
132
  }
81
- this.collection.update(attemptNumber, collectionItem);
82
- const result = await downloadPromise;
83
133
  if (this.shouldPreventPlayback) {
84
- if (result.uri?.startsWith('blob:')) {
85
- URL.revokeObjectURL(result.uri);
86
- }
134
+ this.player.setPlayerState(PlayerState.IDLE);
87
135
  return;
88
136
  }
89
- this.collection.update(attemptNumber, {
90
- audioUri: result.uri,
91
- audioLoading: false,
92
- audioError: undefined,
93
- controller: undefined,
94
- audioDownloadPromise: undefined
95
- });
96
137
  this.player.setPlayerState(PlayerState.IDLE);
97
138
  this.playAudioFx(attemptNumber);
98
139
  } catch (error) {
99
- console.error('Audio download error:', error);
100
140
  if (error instanceof Error && error.name === 'AbortError') {
101
141
  this.player.setPlayerState(PlayerState.IDLE);
102
142
  return;
103
143
  }
104
- this.collection.update(attemptNumber, {
105
- audioLoading: false,
106
- audioError: error instanceof Error ? error.message : 'Failed to download audio',
107
- controller: undefined,
108
- audioDownloadPromise: undefined
109
- });
144
+ console.error('Audio download error:', error);
145
+ this.player.setPlayerState(PlayerState.IDLE);
110
146
  }
111
147
  });
112
148
  playAudioFx = createEffect(async attemptNumber => {
@@ -129,7 +165,6 @@ export class PlaybackController {
129
165
  return;
130
166
  }
131
167
  this.currentPlayingAttempt = attemptNumber;
132
- this.onCurrentAttemptChange(attemptNumber);
133
168
  await this.player.play(item.audioUri);
134
169
  } catch (error) {
135
170
  console.error('Error playing audio:', error);
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","PlayerState","PlaybackController","currentPlayingAttempt","shouldPreventPlayback","constructor","deps","collection","player","downloader","onCurrentAttemptChange","playbackFinished","watch","clearCurrentAttempt","togglePlayPause","attemptNumber","playerState","$playerState","getState","PLAYING","pause","handlePlayAttempt","halt","abortAllDownloads","stop","releaseResources","getAll","forEach","item","controller","abortDownload","audioUri","startsWith","URL","revokeObjectURL","e","audioLoading","update","undefined","audioDownloadPromise","get","hasAudio","playAudioFx","setPlayerState","LOADING","collectionItem","downloadPromise","download","audioFileId","abort","result","uri","audioError","IDLE","error","console","Error","name","message","warn","remove","playing","resume","play"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/PlaybackController.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","PlayerState","PlaybackController","currentPlayingAttempt","shouldPreventPlayback","constructor","deps","collection","player","downloader","playbackFinished","watch","clearCurrentAttempt","togglePlayPause","attemptNumber","playerState","$playerState","getState","PLAYING","pause","handlePlayAttempt","preloadAudio","item","get","hasAudio","primePlayerIfIdle","audioDownloadPromise","downloadAudio","error","Error","name","console","IDLE","audioUri","prime","halt","abortAllDownloads","stop","releaseResources","getAll","forEach","controller","abortDownload","startsWith","URL","revokeObjectURL","e","audioLoading","update","undefined","collectionItem","downloadPromise","download","audioFileId","result","uri","audioError","isAbort","message","playAudioFx","setPlayerState","LOADING","warn","remove","playing","resume","play"],"sourceRoot":"../../../../../../src","sources":["features/voice/playing/model/PlaybackController.ts"],"mappings":"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","ignoreList":[]}