@magmamath/students-features 0.9.107-rc.30 → 0.9.107-rc.32

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 (31) hide show
  1. package/dist/commonjs/features/voiceRecord/helpers.js +1 -4
  2. package/dist/commonjs/features/voiceRecord/helpers.js.map +1 -1
  3. package/dist/commonjs/features/voiceRecord/hooks/useVoiceRecorder.js +4 -0
  4. package/dist/commonjs/features/voiceRecord/hooks/useVoiceRecorder.js.map +1 -1
  5. package/dist/commonjs/features/voiceRecord/model/Recorder.model.js +2 -0
  6. package/dist/commonjs/features/voiceRecord/model/Recorder.model.js.map +1 -1
  7. package/dist/commonjs/features/voiceRecord/model/VoiceRecord.model.js +17 -13
  8. package/dist/commonjs/features/voiceRecord/model/VoiceRecord.model.js.map +1 -1
  9. package/dist/module/features/voiceRecord/helpers.js +1 -4
  10. package/dist/module/features/voiceRecord/helpers.js.map +1 -1
  11. package/dist/module/features/voiceRecord/hooks/useVoiceRecorder.js +4 -0
  12. package/dist/module/features/voiceRecord/hooks/useVoiceRecorder.js.map +1 -1
  13. package/dist/module/features/voiceRecord/model/Recorder.model.js +2 -0
  14. package/dist/module/features/voiceRecord/model/Recorder.model.js.map +1 -1
  15. package/dist/module/features/voiceRecord/model/VoiceRecord.model.js +18 -14
  16. package/dist/module/features/voiceRecord/model/VoiceRecord.model.js.map +1 -1
  17. package/dist/typescript/commonjs/features/voiceRecord/helpers.d.ts.map +1 -1
  18. package/dist/typescript/commonjs/features/voiceRecord/hooks/useVoiceRecorder.d.ts.map +1 -1
  19. package/dist/typescript/commonjs/features/voiceRecord/model/Recorder.model.d.ts +2 -0
  20. package/dist/typescript/commonjs/features/voiceRecord/model/Recorder.model.d.ts.map +1 -1
  21. package/dist/typescript/commonjs/features/voiceRecord/model/VoiceRecord.model.d.ts.map +1 -1
  22. package/dist/typescript/module/features/voiceRecord/helpers.d.ts.map +1 -1
  23. package/dist/typescript/module/features/voiceRecord/hooks/useVoiceRecorder.d.ts.map +1 -1
  24. package/dist/typescript/module/features/voiceRecord/model/Recorder.model.d.ts +2 -0
  25. package/dist/typescript/module/features/voiceRecord/model/Recorder.model.d.ts.map +1 -1
  26. package/dist/typescript/module/features/voiceRecord/model/VoiceRecord.model.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/src/features/voiceRecord/helpers.ts +1 -5
  29. package/src/features/voiceRecord/hooks/useVoiceRecorder.ts +4 -0
  30. package/src/features/voiceRecord/model/Recorder.model.ts +2 -0
  31. package/src/features/voiceRecord/model/VoiceRecord.model.ts +11 -9
@@ -17,6 +17,7 @@ const ensureRecordingPermissions = async () => {
17
17
  const {
18
18
  status
19
19
  } = await (0, _expoAudio.getRecordingPermissionsAsync)();
20
+ console.log('permission status: ', status);
20
21
  if (status !== 'granted') {
21
22
  const {
22
23
  granted
@@ -64,15 +65,11 @@ const addAudioInputsListenerWeb = callback => {
64
65
  exports.addAudioInputsListenerWeb = addAudioInputsListenerWeb;
65
66
  const getAudioDurationMs = (fileUri, externalPlayer) => {
66
67
  if (!fileUri) return Promise.resolve(undefined);
67
- console.log('fileUri: ', fileUri);
68
68
  const player = externalPlayer ?? (0, _expoAudio.createAudioPlayer)();
69
- console.log('player: ', player);
70
69
  const isInternalPlayer = !externalPlayer;
71
- console.log('isInternalPlayer: ', isInternalPlayer);
72
70
  player.replace(fileUri);
73
71
  return new Promise((resolve, reject) => {
74
72
  const subscription = player.addListener('playbackStatusUpdate', () => {
75
- console.log('player.duration: ', player.duration);
76
73
  if (player.duration !== undefined && player.duration > 0) {
77
74
  subscription.remove();
78
75
 
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNativeUi","require","_expoAudio","formatDuration","ms","totalSeconds","Math","floor","minutes","seconds","toString","padStart","exports","ensureRecordingPermissions","status","getRecordingPermissionsAsync","granted","requestRecordingPermissionsAsync","getAvailableInputsWeb","navigator","mediaDevices","enumerateDevices","devices","filter","d","kind","getAvailableInputs","recorder","IS_WEB","IS_MOBILE","addAudioInputsListenerWeb","callback","addEventListener","handleDeviceChange","removeEventListener","getAudioDurationMs","fileUri","externalPlayer","Promise","resolve","undefined","console","log","player","createAudioPlayer","isInternalPlayer","replace","reject","subscription","addListener","duration","remove","durationMs","round","setTimeout","Error","generateAudioFormData","audioFileUri","fileName","formData","FormData","response","fetch","blob","filename","type","append","file","uri","name","uploadAudioFileRequestGenerator","audioFileFormData","api","controller","AbortController","uploadAudio","uploadAudioFile","signal"],"sourceRoot":"../../../../src","sources":["features/voiceRecord/helpers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNativeUi","require","_expoAudio","formatDuration","ms","totalSeconds","Math","floor","minutes","seconds","toString","padStart","exports","ensureRecordingPermissions","status","getRecordingPermissionsAsync","console","log","granted","requestRecordingPermissionsAsync","getAvailableInputsWeb","navigator","mediaDevices","enumerateDevices","devices","filter","d","kind","getAvailableInputs","recorder","IS_WEB","IS_MOBILE","addAudioInputsListenerWeb","callback","addEventListener","handleDeviceChange","removeEventListener","getAudioDurationMs","fileUri","externalPlayer","Promise","resolve","undefined","player","createAudioPlayer","isInternalPlayer","replace","reject","subscription","addListener","duration","remove","durationMs","round","setTimeout","Error","generateAudioFormData","audioFileUri","fileName","formData","FormData","response","fetch","blob","filename","type","append","file","uri","name","uploadAudioFileRequestGenerator","audioFileFormData","api","controller","AbortController","uploadAudio","uploadAudioFile","signal"],"sourceRoot":"../../../../src","sources":["features/voiceRecord/helpers.ts"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,10 @@ const useVoiceRecorder = model => {
16
16
  if (recorderState.durationMillis >= _constants.VOICE_RECORDER_MAX_DURATION_MS && recorderState.isRecording) {
17
17
  model.recorderModel.stop();
18
18
  }
19
+ // Track the last known duration while recording (for old browsers where getAudioDurationMs returns Infinity)
20
+ if (recorderState.isRecording && recorderState.durationMillis > 0) {
21
+ model.recorderModel.setLastKnownDurationMs(recorderState.durationMillis);
22
+ }
19
23
  }, [recorderState.durationMillis]);
20
24
  (0, _react.useEffect)(() => {
21
25
  if (!_reactNativeUi.IS_WEB) {
@@ -1 +1 @@
1
- {"version":3,"names":["_expoAudio","require","_helpers","_react","_reactNativeUi","_constants","useVoiceRecorder","model","recorder","useAudioRecorder","RecordingPresets","LOW_QUALITY","recordingStatusUpdate","recorderState","useAudioRecorderState","useEffect","durationMillis","VOICE_RECORDER_MAX_DURATION_MS","isRecording","recorderModel","stop","IS_WEB","getAvailableInputs","then","inputs","setAvailableInputs","removeListener","addAudioInputsListenerWeb","devices","setVoiceRecordState","VoiceRecorderState","RECORDING","PAUSED","IDLE","reset","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/hooks/useVoiceRecorder.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAEO,MAAMK,gBAAgB,GAAIC,KAAuB,IAAK;EAC3D,MAAMC,QAAQ,GAAG,IAAAC,2BAAgB,EAACC,2BAAgB,CAACC,WAAW,EAAEJ,KAAK,CAACK,qBAAqB,CAAC;EAC5F,MAAMC,aAAa,GAAG,IAAAC,gCAAqB,EAACN,QAAQ,CAAC;EAErD,IAAAO,gBAAS,EAAC,MAAM;IACd,IACEF,aAAa,CAACG,cAAc,IAAIC,yCAA8B,IAC9DJ,aAAa,CAACK,WAAW,EACzB;MACAX,KAAK,CAACY,aAAa,CAACC,IAAI,CAAC,CAAC;IAC5B;EACF,CAAC,EAAE,CAACP,aAAa,CAACG,cAAc,CAAC,CAAC;EAElC,IAAAD,gBAAS,EAAC,MAAM;IACd,IAAI,CAACM,qBAAM,EAAE;MACX;MACA,IAAAC,2BAAkB,EAACd,QAAQ,CAAC,CAACe,IAAI,CAAEC,MAAM,IAAK;QAC5CjB,KAAK,CAACY,aAAa,CAACM,kBAAkB,CAACD,MAAM,CAAC;MAChD,CAAC,CAAC;MACF;IACF;IAEA,MAAME,cAAc,GAAG,IAAAC,kCAAyB,EAAEC,OAAO,IAAK;MAC5DrB,KAAK,CAACY,aAAa,CAACM,kBAAkB,CAACG,OAAO,CAAC;IACjD,CAAC,CAAC;IAEF,OAAOF,cAAc;EACvB,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAX,gBAAS,EAAC,MAAM;IACd,IAAIF,aAAa,CAACK,WAAW,EAAE;MAC7BX,KAAK,CAACY,aAAa,CAACU,mBAAmB,CAACC,6BAAkB,CAACC,SAAS,CAAC;MACrE;IACF;IACA,IAAIlB,aAAa,CAACG,cAAc,GAAG,CAAC,EAAE;MACpCT,KAAK,CAACY,aAAa,CAACU,mBAAmB,CAACC,6BAAkB,CAACE,MAAM,CAAC;MAClE;IACF;IACAzB,KAAK,CAACY,aAAa,CAACU,mBAAmB,CAACC,6BAAkB,CAACG,IAAI,CAAC;IAEhE,OAAO,MAAM;MACX1B,KAAK,CAACY,aAAa,CAACe,KAAK,CAAC,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAACrB,aAAa,CAAC,CAAC;EAEnB,IAAAE,gBAAS,EAAC,MAAM;IACdR,KAAK,CAACY,aAAa,CAACX,QAAQ,GAAGA,QAAQ;EACzC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,OAAO;IAAEK;EAAc,CAAC;AAC1B,CAAC;AAAAsB,OAAA,CAAA7B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_expoAudio","require","_helpers","_react","_reactNativeUi","_constants","useVoiceRecorder","model","recorder","useAudioRecorder","RecordingPresets","LOW_QUALITY","recordingStatusUpdate","recorderState","useAudioRecorderState","useEffect","durationMillis","VOICE_RECORDER_MAX_DURATION_MS","isRecording","recorderModel","stop","setLastKnownDurationMs","IS_WEB","getAvailableInputs","then","inputs","setAvailableInputs","removeListener","addAudioInputsListenerWeb","devices","setVoiceRecordState","VoiceRecorderState","RECORDING","PAUSED","IDLE","reset","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/hooks/useVoiceRecorder.ts"],"mappings":";;;;;;AAAA,IAAAA,UAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAEA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AAEO,MAAMK,gBAAgB,GAAIC,KAAuB,IAAK;EAC3D,MAAMC,QAAQ,GAAG,IAAAC,2BAAgB,EAACC,2BAAgB,CAACC,WAAW,EAAEJ,KAAK,CAACK,qBAAqB,CAAC;EAC5F,MAAMC,aAAa,GAAG,IAAAC,gCAAqB,EAACN,QAAQ,CAAC;EAErD,IAAAO,gBAAS,EAAC,MAAM;IACd,IACEF,aAAa,CAACG,cAAc,IAAIC,yCAA8B,IAC9DJ,aAAa,CAACK,WAAW,EACzB;MACAX,KAAK,CAACY,aAAa,CAACC,IAAI,CAAC,CAAC;IAC5B;IACA;IACA,IAAIP,aAAa,CAACK,WAAW,IAAIL,aAAa,CAACG,cAAc,GAAG,CAAC,EAAE;MACjET,KAAK,CAACY,aAAa,CAACE,sBAAsB,CAACR,aAAa,CAACG,cAAc,CAAC;IAC1E;EACF,CAAC,EAAE,CAACH,aAAa,CAACG,cAAc,CAAC,CAAC;EAElC,IAAAD,gBAAS,EAAC,MAAM;IACd,IAAI,CAACO,qBAAM,EAAE;MACX;MACA,IAAAC,2BAAkB,EAACf,QAAQ,CAAC,CAACgB,IAAI,CAAEC,MAAM,IAAK;QAC5ClB,KAAK,CAACY,aAAa,CAACO,kBAAkB,CAACD,MAAM,CAAC;MAChD,CAAC,CAAC;MACF;IACF;IAEA,MAAME,cAAc,GAAG,IAAAC,kCAAyB,EAAEC,OAAO,IAAK;MAC5DtB,KAAK,CAACY,aAAa,CAACO,kBAAkB,CAACG,OAAO,CAAC;IACjD,CAAC,CAAC;IAEF,OAAOF,cAAc;EACvB,CAAC,EAAE,EAAE,CAAC;EAEN,IAAAZ,gBAAS,EAAC,MAAM;IACd,IAAIF,aAAa,CAACK,WAAW,EAAE;MAC7BX,KAAK,CAACY,aAAa,CAACW,mBAAmB,CAACC,6BAAkB,CAACC,SAAS,CAAC;MACrE;IACF;IACA,IAAInB,aAAa,CAACG,cAAc,GAAG,CAAC,EAAE;MACpCT,KAAK,CAACY,aAAa,CAACW,mBAAmB,CAACC,6BAAkB,CAACE,MAAM,CAAC;MAClE;IACF;IACA1B,KAAK,CAACY,aAAa,CAACW,mBAAmB,CAACC,6BAAkB,CAACG,IAAI,CAAC;IAEhE,OAAO,MAAM;MACX3B,KAAK,CAACY,aAAa,CAACgB,KAAK,CAAC,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAACtB,aAAa,CAAC,CAAC;EAEnB,IAAAE,gBAAS,EAAC,MAAM;IACdR,KAAK,CAACY,aAAa,CAACX,QAAQ,GAAGA,QAAQ;EACzC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,OAAO;IAAEK;EAAc,CAAC;AAC1B,CAAC;AAAAuB,OAAA,CAAA9B,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -16,8 +16,10 @@ class RecorderModel {
16
16
  reset = (0, _effector.createEvent)();
17
17
  setVoiceRecordState = (0, _effector.createEvent)();
18
18
  setAvailableInputs = (0, _effector.createEvent)();
19
+ setLastKnownDurationMs = (0, _effector.createEvent)();
19
20
  $voiceRecordState = (0, _effector.restore)(this.setVoiceRecordState, _constants.VoiceRecorderState.IDLE).reset(this.reset);
20
21
  $availableInputs = (0, _effector.restore)(this.setAvailableInputs, []);
22
+ $lastKnownDurationMs = (0, _effector.restore)(this.setLastKnownDurationMs, 0).reset(this.reset);
21
23
  start = (0, _effector.createEffect)(async () => {
22
24
  try {
23
25
  await (0, _expoAudio.setAudioModeAsync)(AUDIO_MODE_CONFIG);
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_expoAudio","_constants","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","stopResolver","reset","createEvent","setVoiceRecordState","setAvailableInputs","$voiceRecordState","restore","VoiceRecorderState","IDLE","$availableInputs","start","createEffect","setAudioModeAsync","recorder","prepareToRecordAsync","record","error","console","stop","getStatus","isRecording","Promise","resolve","stopAndGetCollectionItem","resolveStopWithCollectionItem","item","clearStopResolver","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/Recorder.model.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAGA,MAAMG,iBAAiB,GAAG;EACxBC,iBAAiB,EAAE,IAAI;EACvBC,eAAe,EAAE;AACnB,CAAU;AAIH,MAAMC,aAAa,CAAC;EAEjBC,YAAY,GAAwB,IAAI;EAEhCC,KAAK,GAAG,IAAAC,qBAAW,EAAC,CAAC;EACrBC,mBAAmB,GAAG,IAAAD,qBAAW,EAAqB,CAAC;EACvDE,kBAAkB,GAAG,IAAAF,qBAAW,EAAuB,CAAC;EAExDG,iBAAiB,GAAG,IAAAC,iBAAO,EACzC,IAAI,CAACH,mBAAmB,EACxBI,6BAAkB,CAACC,IACrB,CAAC,CAACP,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACHQ,gBAAgB,GAAG,IAAAH,iBAAO,EAAC,IAAI,CAACF,kBAAkB,EAAE,EAAE,CAAC;EAEvDM,KAAK,GAAG,IAAAC,sBAAY,EAAC,YAAY;IAC/C,IAAI;MACF,MAAM,IAAAC,4BAAiB,EAAChB,iBAAiB,CAAC;MAC1C,MAAM,IAAI,CAACiB,QAAQ,CAACC,oBAAoB,CAAC,CAAC;MAC1C,IAAI,CAACD,QAAQ,CAACE,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC;MACjD,MAAMA,KAAK;IACb;EACF,CAAC,CAAC;EAEcE,IAAI,GAAG,IAAAP,sBAAY,EAAC,MAAM;IACxC,IAAI,CAAC,IAAI,CAACE,QAAQ,CAACM,SAAS,CAAC,CAAC,CAACC,WAAW,EAAE,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;IACpE,OAAO,IAAI,CAACT,QAAQ,CAACK,IAAI,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEKK,wBAAwBA,CAAA,EAAuC;IACpE,OAAO,IAAIF,OAAO,CAAEC,OAAO,IAAK;MAC9B,IAAI,CAACtB,YAAY,GAAGsB,OAAO;MAC3B,IAAI,CAACT,QAAQ,CAACM,SAAS,CAAC,CAAC,CAACC,WAAW,IAAI,IAAI,CAACP,QAAQ,CAACK,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC;EACJ;EAEOM,6BAA6BA,CAACC,IAA+B,EAAQ;IAC1E,IAAI,IAAI,CAACzB,YAAY,EAAE;MACrB,IAAI,CAACA,YAAY,CAACyB,IAAI,CAAC;MACvB,IAAI,CAACzB,YAAY,GAAG,IAAI;IAC1B;EACF;EAEO0B,iBAAiBA,CAAA,EAAS;IAC/B,IAAI,CAAC1B,YAAY,GAAG,IAAI;EAC1B;AACF;AAAC2B,OAAA,CAAA5B,aAAA,GAAAA,aAAA","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_expoAudio","_constants","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","stopResolver","reset","createEvent","setVoiceRecordState","setAvailableInputs","setLastKnownDurationMs","$voiceRecordState","restore","VoiceRecorderState","IDLE","$availableInputs","$lastKnownDurationMs","start","createEffect","setAudioModeAsync","recorder","prepareToRecordAsync","record","error","console","stop","getStatus","isRecording","Promise","resolve","stopAndGetCollectionItem","resolveStopWithCollectionItem","item","clearStopResolver","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/Recorder.model.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,UAAA,GAAAF,OAAA;AAGA,MAAMG,iBAAiB,GAAG;EACxBC,iBAAiB,EAAE,IAAI;EACvBC,eAAe,EAAE;AACnB,CAAU;AAIH,MAAMC,aAAa,CAAC;EAEjBC,YAAY,GAAwB,IAAI;EAEhCC,KAAK,GAAG,IAAAC,qBAAW,EAAC,CAAC;EACrBC,mBAAmB,GAAG,IAAAD,qBAAW,EAAqB,CAAC;EACvDE,kBAAkB,GAAG,IAAAF,qBAAW,EAAuB,CAAC;EACxDG,sBAAsB,GAAG,IAAAH,qBAAW,EAAS,CAAC;EAE9CI,iBAAiB,GAAG,IAAAC,iBAAO,EACzC,IAAI,CAACJ,mBAAmB,EACxBK,6BAAkB,CAACC,IACrB,CAAC,CAACR,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACHS,gBAAgB,GAAG,IAAAH,iBAAO,EAAC,IAAI,CAACH,kBAAkB,EAAE,EAAE,CAAC;EACvDO,oBAAoB,GAAG,IAAAJ,iBAAO,EAAC,IAAI,CAACF,sBAAsB,EAAE,CAAC,CAAC,CAACJ,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EAEhFW,KAAK,GAAG,IAAAC,sBAAY,EAAC,YAAY;IAC/C,IAAI;MACF,MAAM,IAAAC,4BAAiB,EAAClB,iBAAiB,CAAC;MAC1C,MAAM,IAAI,CAACmB,QAAQ,CAACC,oBAAoB,CAAC,CAAC;MAC1C,IAAI,CAACD,QAAQ,CAACE,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC;MACjD,MAAMA,KAAK;IACb;EACF,CAAC,CAAC;EAEcE,IAAI,GAAG,IAAAP,sBAAY,EAAC,MAAM;IACxC,IAAI,CAAC,IAAI,CAACE,QAAQ,CAACM,SAAS,CAAC,CAAC,CAACC,WAAW,EAAE,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;IACpE,OAAO,IAAI,CAACT,QAAQ,CAACK,IAAI,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEKK,wBAAwBA,CAAA,EAAuC;IACpE,OAAO,IAAIF,OAAO,CAAEC,OAAO,IAAK;MAC9B,IAAI,CAACxB,YAAY,GAAGwB,OAAO;MAC3B,IAAI,CAACT,QAAQ,CAACM,SAAS,CAAC,CAAC,CAACC,WAAW,IAAI,IAAI,CAACP,QAAQ,CAACK,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC;EACJ;EAEOM,6BAA6BA,CAACC,IAA+B,EAAQ;IAC1E,IAAI,IAAI,CAAC3B,YAAY,EAAE;MACrB,IAAI,CAACA,YAAY,CAAC2B,IAAI,CAAC;MACvB,IAAI,CAAC3B,YAAY,GAAG,IAAI;IAC1B;EACF;EAEO4B,iBAAiBA,CAAA,EAAS;IAC/B,IAAI,CAAC5B,YAAY,GAAG,IAAI;EAC1B;AACF;AAAC6B,OAAA,CAAA9B,aAAA,GAAAA,aAAA","ignoreList":[]}
@@ -30,7 +30,6 @@ class VoiceRecordModel {
30
30
  currentKey,
31
31
  notification
32
32
  }) => {
33
- console.log('Deleting recording with key:', currentKey);
34
33
  const recordingItem = this.collection.get(currentKey);
35
34
  this.abortUploadIfInProgress(recordingItem);
36
35
  this.resetRecordingState(currentKey);
@@ -106,9 +105,11 @@ class VoiceRecordModel {
106
105
  }
107
106
  async handleAudioUpload({
108
107
  uri,
109
- currentKey
108
+ currentKey,
109
+ durationMs
110
110
  }) {
111
- const durationMs = await (0, _helpers.getAudioDurationMs)(uri);
111
+ // Use the last known duration from recorder state (more reliable for old browsers like Chrome 93
112
+ // where getAudioDurationMs can return Infinity)
112
113
  const formData = await (0, _helpers.generateAudioFormData)({
113
114
  audioFileUri: uri,
114
115
  durationMs,
@@ -146,19 +147,22 @@ class VoiceRecordModel {
146
147
  setupUploadHandler() {
147
148
  (0, _effector.sample)({
148
149
  clock: this.startAudioUpload,
149
- source: this.$currentKey,
150
- filter: (currentKey, uri) => !!uri && !!currentKey,
151
- fn: (currentKey, uri) => ({
150
+ source: {
151
+ currentKey: this.$currentKey,
152
+ durationMs: this.recorderModel.$lastKnownDurationMs
153
+ },
154
+ filter: ({
155
+ currentKey
156
+ }, uri) => !!uri && !!currentKey,
157
+ fn: ({
158
+ currentKey,
159
+ durationMs
160
+ }, uri) => ({
152
161
  currentKey,
162
+ durationMs,
153
163
  uri
154
164
  }),
155
- target: (0, _effector.createEffect)(({
156
- uri,
157
- currentKey
158
- }) => this.handleAudioUpload({
159
- uri,
160
- currentKey
161
- }))
165
+ target: (0, _effector.createEffect)(params => this.handleAudioUpload(params))
162
166
  });
163
167
  }
164
168
  setupCurrentRecordSync() {
@@ -1 +1 @@
1
- {"version":3,"names":["_effector","require","_helpers","_index","_RecorderModel","_VoiceRecordCollection","VoiceRecordModel","shouldDiscardRecording","setCurrentKey","createEvent","setCurrentRecord","reset","setIsDisabled","startAudioUpload","$currentKey","restore","$currentRecord","$isDisabled","deleteCurrentRecording","attach","source","mapParams","props","currentKey","notification","effect","createEffect","console","log","recordingItem","collection","get","abortUploadIfInProgress","resetRecordingState","info","t","initializeRecording","hasPermissions","ensureRecordingPermissions","error","inputs","getAvailableInputs","recorderModel","recorder","setAvailableInputs","length","start","catch","name","stopAndDiscard","stop","clearStopResolver","recordingStatusUpdate","status","isFinished","url","constructor","api","events","RecorderModel","VoiceRecordsCollection","setupUploadHandler","setupCurrentRecordSync","id","controller","abort","delete","handleAudioUpload","uri","durationMs","getAudioDurationMs","formData","generateAudioFormData","audioFileUri","fileName","uploadAudio","uploadAudioFileRequestGenerator","audioUploadPromise","then","data","update","collectionItem","add","resolveStopWithCollectionItem","sample","clock","filter","fn","target","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecord.model.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_effector","require","_helpers","_index","_RecorderModel","_VoiceRecordCollection","VoiceRecordModel","shouldDiscardRecording","setCurrentKey","createEvent","setCurrentRecord","reset","setIsDisabled","startAudioUpload","$currentKey","restore","$currentRecord","$isDisabled","deleteCurrentRecording","attach","source","mapParams","props","currentKey","notification","effect","createEffect","recordingItem","collection","get","abortUploadIfInProgress","resetRecordingState","info","t","initializeRecording","hasPermissions","ensureRecordingPermissions","error","inputs","getAvailableInputs","recorderModel","recorder","setAvailableInputs","length","start","catch","name","stopAndDiscard","stop","clearStopResolver","recordingStatusUpdate","status","console","log","isFinished","url","constructor","api","events","RecorderModel","VoiceRecordsCollection","setupUploadHandler","setupCurrentRecordSync","id","controller","abort","delete","handleAudioUpload","uri","durationMs","formData","generateAudioFormData","audioFileUri","fileName","uploadAudio","uploadAudioFileRequestGenerator","audioUploadPromise","then","data","update","collectionItem","add","resolveStopWithCollectionItem","sample","clock","$lastKnownDurationMs","filter","fn","target","params","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecord.model.ts"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,7 @@ export const ensureRecordingPermissions = async () => {
12
12
  const {
13
13
  status
14
14
  } = await getRecordingPermissionsAsync();
15
+ console.log('permission status: ', status);
15
16
  if (status !== 'granted') {
16
17
  const {
17
18
  granted
@@ -56,15 +57,11 @@ export const addAudioInputsListenerWeb = callback => {
56
57
  */
57
58
  export const getAudioDurationMs = (fileUri, externalPlayer) => {
58
59
  if (!fileUri) return Promise.resolve(undefined);
59
- console.log('fileUri: ', fileUri);
60
60
  const player = externalPlayer ?? createAudioPlayer();
61
- console.log('player: ', player);
62
61
  const isInternalPlayer = !externalPlayer;
63
- console.log('isInternalPlayer: ', isInternalPlayer);
64
62
  player.replace(fileUri);
65
63
  return new Promise((resolve, reject) => {
66
64
  const subscription = player.addListener('playbackStatusUpdate', () => {
67
- console.log('player.duration: ', player.duration);
68
65
  if (player.duration !== undefined && player.duration > 0) {
69
66
  subscription.remove();
70
67
 
@@ -1 +1 @@
1
- {"version":3,"names":["IS_MOBILE","IS_WEB","createAudioPlayer","getRecordingPermissionsAsync","requestRecordingPermissionsAsync","formatDuration","ms","totalSeconds","Math","floor","minutes","seconds","toString","padStart","ensureRecordingPermissions","status","granted","getAvailableInputsWeb","navigator","mediaDevices","enumerateDevices","devices","filter","d","kind","getAvailableInputs","recorder","addAudioInputsListenerWeb","callback","addEventListener","handleDeviceChange","removeEventListener","getAudioDurationMs","fileUri","externalPlayer","Promise","resolve","undefined","console","log","player","isInternalPlayer","replace","reject","subscription","addListener","duration","remove","durationMs","round","setTimeout","Error","generateAudioFormData","audioFileUri","fileName","formData","FormData","response","fetch","blob","filename","type","append","file","uri","name","uploadAudioFileRequestGenerator","audioFileFormData","api","controller","AbortController","uploadAudio","uploadAudioFile","signal"],"sourceRoot":"../../../../src","sources":["features/voiceRecord/helpers.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["IS_MOBILE","IS_WEB","createAudioPlayer","getRecordingPermissionsAsync","requestRecordingPermissionsAsync","formatDuration","ms","totalSeconds","Math","floor","minutes","seconds","toString","padStart","ensureRecordingPermissions","status","console","log","granted","getAvailableInputsWeb","navigator","mediaDevices","enumerateDevices","devices","filter","d","kind","getAvailableInputs","recorder","addAudioInputsListenerWeb","callback","addEventListener","handleDeviceChange","removeEventListener","getAudioDurationMs","fileUri","externalPlayer","Promise","resolve","undefined","player","isInternalPlayer","replace","reject","subscription","addListener","duration","remove","durationMs","round","setTimeout","Error","generateAudioFormData","audioFileUri","fileName","formData","FormData","response","fetch","blob","filename","type","append","file","uri","name","uploadAudioFileRequestGenerator","audioFileFormData","api","controller","AbortController","uploadAudio","uploadAudioFile","signal"],"sourceRoot":"../../../../src","sources":["features/voiceRecord/helpers.ts"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,10 @@ export const useVoiceRecorder = model => {
12
12
  if (recorderState.durationMillis >= VOICE_RECORDER_MAX_DURATION_MS && recorderState.isRecording) {
13
13
  model.recorderModel.stop();
14
14
  }
15
+ // Track the last known duration while recording (for old browsers where getAudioDurationMs returns Infinity)
16
+ if (recorderState.isRecording && recorderState.durationMillis > 0) {
17
+ model.recorderModel.setLastKnownDurationMs(recorderState.durationMillis);
18
+ }
15
19
  }, [recorderState.durationMillis]);
16
20
  useEffect(() => {
17
21
  if (!IS_WEB) {
@@ -1 +1 @@
1
- {"version":3,"names":["RecordingPresets","useAudioRecorder","useAudioRecorderState","addAudioInputsListenerWeb","getAvailableInputs","useEffect","IS_WEB","VOICE_RECORDER_MAX_DURATION_MS","VoiceRecorderState","useVoiceRecorder","model","recorder","LOW_QUALITY","recordingStatusUpdate","recorderState","durationMillis","isRecording","recorderModel","stop","then","inputs","setAvailableInputs","removeListener","devices","setVoiceRecordState","RECORDING","PAUSED","IDLE","reset"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/hooks/useVoiceRecorder.ts"],"mappings":";;AAAA,SAASA,gBAAgB,EAAEC,gBAAgB,EAAEC,qBAAqB,QAAQ,YAAY;AACtF,SAASC,yBAAyB,EAAEC,kBAAkB,QAAQ,eAAY;AAE1E,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,8BAA8B,EAAEC,kBAAkB,QAAQ,iBAAc;AAEjF,OAAO,MAAMC,gBAAgB,GAAIC,KAAuB,IAAK;EAC3D,MAAMC,QAAQ,GAAGV,gBAAgB,CAACD,gBAAgB,CAACY,WAAW,EAAEF,KAAK,CAACG,qBAAqB,CAAC;EAC5F,MAAMC,aAAa,GAAGZ,qBAAqB,CAACS,QAAQ,CAAC;EAErDN,SAAS,CAAC,MAAM;IACd,IACES,aAAa,CAACC,cAAc,IAAIR,8BAA8B,IAC9DO,aAAa,CAACE,WAAW,EACzB;MACAN,KAAK,CAACO,aAAa,CAACC,IAAI,CAAC,CAAC;IAC5B;EACF,CAAC,EAAE,CAACJ,aAAa,CAACC,cAAc,CAAC,CAAC;EAElCV,SAAS,CAAC,MAAM;IACd,IAAI,CAACC,MAAM,EAAE;MACX;MACAF,kBAAkB,CAACO,QAAQ,CAAC,CAACQ,IAAI,CAAEC,MAAM,IAAK;QAC5CV,KAAK,CAACO,aAAa,CAACI,kBAAkB,CAACD,MAAM,CAAC;MAChD,CAAC,CAAC;MACF;IACF;IAEA,MAAME,cAAc,GAAGnB,yBAAyB,CAAEoB,OAAO,IAAK;MAC5Db,KAAK,CAACO,aAAa,CAACI,kBAAkB,CAACE,OAAO,CAAC;IACjD,CAAC,CAAC;IAEF,OAAOD,cAAc;EACvB,CAAC,EAAE,EAAE,CAAC;EAENjB,SAAS,CAAC,MAAM;IACd,IAAIS,aAAa,CAACE,WAAW,EAAE;MAC7BN,KAAK,CAACO,aAAa,CAACO,mBAAmB,CAAChB,kBAAkB,CAACiB,SAAS,CAAC;MACrE;IACF;IACA,IAAIX,aAAa,CAACC,cAAc,GAAG,CAAC,EAAE;MACpCL,KAAK,CAACO,aAAa,CAACO,mBAAmB,CAAChB,kBAAkB,CAACkB,MAAM,CAAC;MAClE;IACF;IACAhB,KAAK,CAACO,aAAa,CAACO,mBAAmB,CAAChB,kBAAkB,CAACmB,IAAI,CAAC;IAEhE,OAAO,MAAM;MACXjB,KAAK,CAACO,aAAa,CAACW,KAAK,CAAC,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAACd,aAAa,CAAC,CAAC;EAEnBT,SAAS,CAAC,MAAM;IACdK,KAAK,CAACO,aAAa,CAACN,QAAQ,GAAGA,QAAQ;EACzC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,OAAO;IAAEG;EAAc,CAAC;AAC1B,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["RecordingPresets","useAudioRecorder","useAudioRecorderState","addAudioInputsListenerWeb","getAvailableInputs","useEffect","IS_WEB","VOICE_RECORDER_MAX_DURATION_MS","VoiceRecorderState","useVoiceRecorder","model","recorder","LOW_QUALITY","recordingStatusUpdate","recorderState","durationMillis","isRecording","recorderModel","stop","setLastKnownDurationMs","then","inputs","setAvailableInputs","removeListener","devices","setVoiceRecordState","RECORDING","PAUSED","IDLE","reset"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/hooks/useVoiceRecorder.ts"],"mappings":";;AAAA,SAASA,gBAAgB,EAAEC,gBAAgB,EAAEC,qBAAqB,QAAQ,YAAY;AACtF,SAASC,yBAAyB,EAAEC,kBAAkB,QAAQ,eAAY;AAE1E,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,MAAM,QAAQ,4BAA4B;AACnD,SAASC,8BAA8B,EAAEC,kBAAkB,QAAQ,iBAAc;AAEjF,OAAO,MAAMC,gBAAgB,GAAIC,KAAuB,IAAK;EAC3D,MAAMC,QAAQ,GAAGV,gBAAgB,CAACD,gBAAgB,CAACY,WAAW,EAAEF,KAAK,CAACG,qBAAqB,CAAC;EAC5F,MAAMC,aAAa,GAAGZ,qBAAqB,CAACS,QAAQ,CAAC;EAErDN,SAAS,CAAC,MAAM;IACd,IACES,aAAa,CAACC,cAAc,IAAIR,8BAA8B,IAC9DO,aAAa,CAACE,WAAW,EACzB;MACAN,KAAK,CAACO,aAAa,CAACC,IAAI,CAAC,CAAC;IAC5B;IACA;IACA,IAAIJ,aAAa,CAACE,WAAW,IAAIF,aAAa,CAACC,cAAc,GAAG,CAAC,EAAE;MACjEL,KAAK,CAACO,aAAa,CAACE,sBAAsB,CAACL,aAAa,CAACC,cAAc,CAAC;IAC1E;EACF,CAAC,EAAE,CAACD,aAAa,CAACC,cAAc,CAAC,CAAC;EAElCV,SAAS,CAAC,MAAM;IACd,IAAI,CAACC,MAAM,EAAE;MACX;MACAF,kBAAkB,CAACO,QAAQ,CAAC,CAACS,IAAI,CAAEC,MAAM,IAAK;QAC5CX,KAAK,CAACO,aAAa,CAACK,kBAAkB,CAACD,MAAM,CAAC;MAChD,CAAC,CAAC;MACF;IACF;IAEA,MAAME,cAAc,GAAGpB,yBAAyB,CAAEqB,OAAO,IAAK;MAC5Dd,KAAK,CAACO,aAAa,CAACK,kBAAkB,CAACE,OAAO,CAAC;IACjD,CAAC,CAAC;IAEF,OAAOD,cAAc;EACvB,CAAC,EAAE,EAAE,CAAC;EAENlB,SAAS,CAAC,MAAM;IACd,IAAIS,aAAa,CAACE,WAAW,EAAE;MAC7BN,KAAK,CAACO,aAAa,CAACQ,mBAAmB,CAACjB,kBAAkB,CAACkB,SAAS,CAAC;MACrE;IACF;IACA,IAAIZ,aAAa,CAACC,cAAc,GAAG,CAAC,EAAE;MACpCL,KAAK,CAACO,aAAa,CAACQ,mBAAmB,CAACjB,kBAAkB,CAACmB,MAAM,CAAC;MAClE;IACF;IACAjB,KAAK,CAACO,aAAa,CAACQ,mBAAmB,CAACjB,kBAAkB,CAACoB,IAAI,CAAC;IAEhE,OAAO,MAAM;MACXlB,KAAK,CAACO,aAAa,CAACY,KAAK,CAAC,CAAC;IAC7B,CAAC;EACH,CAAC,EAAE,CAACf,aAAa,CAAC,CAAC;EAEnBT,SAAS,CAAC,MAAM;IACdK,KAAK,CAACO,aAAa,CAACN,QAAQ,GAAGA,QAAQ;EACzC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,OAAO;IAAEG;EAAc,CAAC;AAC1B,CAAC","ignoreList":[]}
@@ -12,8 +12,10 @@ export class RecorderModel {
12
12
  reset = createEvent();
13
13
  setVoiceRecordState = createEvent();
14
14
  setAvailableInputs = createEvent();
15
+ setLastKnownDurationMs = createEvent();
15
16
  $voiceRecordState = restore(this.setVoiceRecordState, VoiceRecorderState.IDLE).reset(this.reset);
16
17
  $availableInputs = restore(this.setAvailableInputs, []);
18
+ $lastKnownDurationMs = restore(this.setLastKnownDurationMs, 0).reset(this.reset);
17
19
  start = createEffect(async () => {
18
20
  try {
19
21
  await setAudioModeAsync(AUDIO_MODE_CONFIG);
@@ -1 +1 @@
1
- {"version":3,"names":["createEffect","createEvent","restore","setAudioModeAsync","VoiceRecorderState","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","stopResolver","reset","setVoiceRecordState","setAvailableInputs","$voiceRecordState","IDLE","$availableInputs","start","recorder","prepareToRecordAsync","record","error","console","stop","getStatus","isRecording","Promise","resolve","stopAndGetCollectionItem","resolveStopWithCollectionItem","item","clearStopResolver"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/Recorder.model.ts"],"mappings":";;AAAA,SAASA,YAAY,EAAEC,WAAW,EAAEC,OAAO,QAAQ,UAAU;AAC7D,SAAwBC,iBAAiB,QAAQ,YAAY;AAC7D,SAASC,kBAAkB,QAAQ,iBAAc;AAGjD,MAAMC,iBAAiB,GAAG;EACxBC,iBAAiB,EAAE,IAAI;EACvBC,eAAe,EAAE;AACnB,CAAU;AAIV,OAAO,MAAMC,aAAa,CAAC;EAEjBC,YAAY,GAAwB,IAAI;EAEhCC,KAAK,GAAGT,WAAW,CAAC,CAAC;EACrBU,mBAAmB,GAAGV,WAAW,CAAqB,CAAC;EACvDW,kBAAkB,GAAGX,WAAW,CAAuB,CAAC;EAExDY,iBAAiB,GAAGX,OAAO,CACzC,IAAI,CAACS,mBAAmB,EACxBP,kBAAkB,CAACU,IACrB,CAAC,CAACJ,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACHK,gBAAgB,GAAGb,OAAO,CAAC,IAAI,CAACU,kBAAkB,EAAE,EAAE,CAAC;EAEvDI,KAAK,GAAGhB,YAAY,CAAC,YAAY;IAC/C,IAAI;MACF,MAAMG,iBAAiB,CAACE,iBAAiB,CAAC;MAC1C,MAAM,IAAI,CAACY,QAAQ,CAACC,oBAAoB,CAAC,CAAC;MAC1C,IAAI,CAACD,QAAQ,CAACE,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC;MACjD,MAAMA,KAAK;IACb;EACF,CAAC,CAAC;EAEcE,IAAI,GAAGtB,YAAY,CAAC,MAAM;IACxC,IAAI,CAAC,IAAI,CAACiB,QAAQ,CAACM,SAAS,CAAC,CAAC,CAACC,WAAW,EAAE,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;IACpE,OAAO,IAAI,CAACT,QAAQ,CAACK,IAAI,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEKK,wBAAwBA,CAAA,EAAuC;IACpE,OAAO,IAAIF,OAAO,CAAEC,OAAO,IAAK;MAC9B,IAAI,CAACjB,YAAY,GAAGiB,OAAO;MAC3B,IAAI,CAACT,QAAQ,CAACM,SAAS,CAAC,CAAC,CAACC,WAAW,IAAI,IAAI,CAACP,QAAQ,CAACK,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC;EACJ;EAEOM,6BAA6BA,CAACC,IAA+B,EAAQ;IAC1E,IAAI,IAAI,CAACpB,YAAY,EAAE;MACrB,IAAI,CAACA,YAAY,CAACoB,IAAI,CAAC;MACvB,IAAI,CAACpB,YAAY,GAAG,IAAI;IAC1B;EACF;EAEOqB,iBAAiBA,CAAA,EAAS;IAC/B,IAAI,CAACrB,YAAY,GAAG,IAAI;EAC1B;AACF","ignoreList":[]}
1
+ {"version":3,"names":["createEffect","createEvent","restore","setAudioModeAsync","VoiceRecorderState","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","stopResolver","reset","setVoiceRecordState","setAvailableInputs","setLastKnownDurationMs","$voiceRecordState","IDLE","$availableInputs","$lastKnownDurationMs","start","recorder","prepareToRecordAsync","record","error","console","stop","getStatus","isRecording","Promise","resolve","stopAndGetCollectionItem","resolveStopWithCollectionItem","item","clearStopResolver"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/Recorder.model.ts"],"mappings":";;AAAA,SAASA,YAAY,EAAEC,WAAW,EAAEC,OAAO,QAAQ,UAAU;AAC7D,SAAwBC,iBAAiB,QAAQ,YAAY;AAC7D,SAASC,kBAAkB,QAAQ,iBAAc;AAGjD,MAAMC,iBAAiB,GAAG;EACxBC,iBAAiB,EAAE,IAAI;EACvBC,eAAe,EAAE;AACnB,CAAU;AAIV,OAAO,MAAMC,aAAa,CAAC;EAEjBC,YAAY,GAAwB,IAAI;EAEhCC,KAAK,GAAGT,WAAW,CAAC,CAAC;EACrBU,mBAAmB,GAAGV,WAAW,CAAqB,CAAC;EACvDW,kBAAkB,GAAGX,WAAW,CAAuB,CAAC;EACxDY,sBAAsB,GAAGZ,WAAW,CAAS,CAAC;EAE9Ca,iBAAiB,GAAGZ,OAAO,CACzC,IAAI,CAACS,mBAAmB,EACxBP,kBAAkB,CAACW,IACrB,CAAC,CAACL,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACHM,gBAAgB,GAAGd,OAAO,CAAC,IAAI,CAACU,kBAAkB,EAAE,EAAE,CAAC;EACvDK,oBAAoB,GAAGf,OAAO,CAAC,IAAI,CAACW,sBAAsB,EAAE,CAAC,CAAC,CAACH,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EAEhFQ,KAAK,GAAGlB,YAAY,CAAC,YAAY;IAC/C,IAAI;MACF,MAAMG,iBAAiB,CAACE,iBAAiB,CAAC;MAC1C,MAAM,IAAI,CAACc,QAAQ,CAACC,oBAAoB,CAAC,CAAC;MAC1C,IAAI,CAACD,QAAQ,CAACE,MAAM,CAAC,CAAC;IACxB,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,2BAA2B,EAAEA,KAAK,CAAC;MACjD,MAAMA,KAAK;IACb;EACF,CAAC,CAAC;EAEcE,IAAI,GAAGxB,YAAY,CAAC,MAAM;IACxC,IAAI,CAAC,IAAI,CAACmB,QAAQ,CAACM,SAAS,CAAC,CAAC,CAACC,WAAW,EAAE,OAAOC,OAAO,CAACC,OAAO,CAAC,CAAC;IACpE,OAAO,IAAI,CAACT,QAAQ,CAACK,IAAI,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEKK,wBAAwBA,CAAA,EAAuC;IACpE,OAAO,IAAIF,OAAO,CAAEC,OAAO,IAAK;MAC9B,IAAI,CAACnB,YAAY,GAAGmB,OAAO;MAC3B,IAAI,CAACT,QAAQ,CAACM,SAAS,CAAC,CAAC,CAACC,WAAW,IAAI,IAAI,CAACP,QAAQ,CAACK,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC;EACJ;EAEOM,6BAA6BA,CAACC,IAA+B,EAAQ;IAC1E,IAAI,IAAI,CAACtB,YAAY,EAAE;MACrB,IAAI,CAACA,YAAY,CAACsB,IAAI,CAAC;MACvB,IAAI,CAACtB,YAAY,GAAG,IAAI;IAC1B;EACF;EAEOuB,iBAAiBA,CAAA,EAAS;IAC/B,IAAI,CAACvB,YAAY,GAAG,IAAI;EAC1B;AACF","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { attach, createEffect, createEvent, restore, sample } from 'effector';
4
- import { ensureRecordingPermissions, generateAudioFormData, getAudioDurationMs, getAvailableInputs, uploadAudioFileRequestGenerator } from "../helpers.js";
4
+ import { ensureRecordingPermissions, generateAudioFormData, getAvailableInputs, uploadAudioFileRequestGenerator } from "../helpers.js";
5
5
  import { t } from "../../../shared/translation/index.js";
6
6
  import { RecorderModel } from "./Recorder.model.js";
7
7
  import { VoiceRecordsCollection } from "./VoiceRecordCollection.js";
@@ -26,7 +26,6 @@ export class VoiceRecordModel {
26
26
  currentKey,
27
27
  notification
28
28
  }) => {
29
- console.log('Deleting recording with key:', currentKey);
30
29
  const recordingItem = this.collection.get(currentKey);
31
30
  this.abortUploadIfInProgress(recordingItem);
32
31
  this.resetRecordingState(currentKey);
@@ -102,9 +101,11 @@ export class VoiceRecordModel {
102
101
  }
103
102
  async handleAudioUpload({
104
103
  uri,
105
- currentKey
104
+ currentKey,
105
+ durationMs
106
106
  }) {
107
- const durationMs = await getAudioDurationMs(uri);
107
+ // Use the last known duration from recorder state (more reliable for old browsers like Chrome 93
108
+ // where getAudioDurationMs can return Infinity)
108
109
  const formData = await generateAudioFormData({
109
110
  audioFileUri: uri,
110
111
  durationMs,
@@ -142,19 +143,22 @@ export class VoiceRecordModel {
142
143
  setupUploadHandler() {
143
144
  sample({
144
145
  clock: this.startAudioUpload,
145
- source: this.$currentKey,
146
- filter: (currentKey, uri) => !!uri && !!currentKey,
147
- fn: (currentKey, uri) => ({
146
+ source: {
147
+ currentKey: this.$currentKey,
148
+ durationMs: this.recorderModel.$lastKnownDurationMs
149
+ },
150
+ filter: ({
151
+ currentKey
152
+ }, uri) => !!uri && !!currentKey,
153
+ fn: ({
154
+ currentKey,
155
+ durationMs
156
+ }, uri) => ({
148
157
  currentKey,
158
+ durationMs,
149
159
  uri
150
160
  }),
151
- target: createEffect(({
152
- uri,
153
- currentKey
154
- }) => this.handleAudioUpload({
155
- uri,
156
- currentKey
157
- }))
161
+ target: createEffect(params => this.handleAudioUpload(params))
158
162
  });
159
163
  }
160
164
  setupCurrentRecordSync() {
@@ -1 +1 @@
1
- {"version":3,"names":["attach","createEffect","createEvent","restore","sample","ensureRecordingPermissions","generateAudioFormData","getAudioDurationMs","getAvailableInputs","uploadAudioFileRequestGenerator","t","RecorderModel","VoiceRecordsCollection","VoiceRecordModel","shouldDiscardRecording","setCurrentKey","setCurrentRecord","reset","setIsDisabled","startAudioUpload","$currentKey","$currentRecord","$isDisabled","deleteCurrentRecording","source","mapParams","props","currentKey","notification","effect","console","log","recordingItem","collection","get","abortUploadIfInProgress","resetRecordingState","info","initializeRecording","hasPermissions","error","inputs","recorderModel","recorder","setAvailableInputs","length","start","catch","name","stopAndDiscard","stop","clearStopResolver","recordingStatusUpdate","status","isFinished","url","constructor","api","events","setupUploadHandler","setupCurrentRecordSync","id","controller","abort","delete","handleAudioUpload","uri","durationMs","formData","audioFileUri","fileName","uploadAudio","audioUploadPromise","then","data","update","collectionItem","add","resolveStopWithCollectionItem","clock","filter","fn","target"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecord.model.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["attach","createEffect","createEvent","restore","sample","ensureRecordingPermissions","generateAudioFormData","getAvailableInputs","uploadAudioFileRequestGenerator","t","RecorderModel","VoiceRecordsCollection","VoiceRecordModel","shouldDiscardRecording","setCurrentKey","setCurrentRecord","reset","setIsDisabled","startAudioUpload","$currentKey","$currentRecord","$isDisabled","deleteCurrentRecording","source","mapParams","props","currentKey","notification","effect","recordingItem","collection","get","abortUploadIfInProgress","resetRecordingState","info","initializeRecording","hasPermissions","error","inputs","recorderModel","recorder","setAvailableInputs","length","start","catch","name","stopAndDiscard","stop","clearStopResolver","recordingStatusUpdate","status","console","log","isFinished","url","constructor","api","events","setupUploadHandler","setupCurrentRecordSync","id","controller","abort","delete","handleAudioUpload","uri","durationMs","formData","audioFileUri","fileName","uploadAudio","audioUploadPromise","then","data","update","collectionItem","add","resolveStopWithCollectionItem","clock","$lastKnownDurationMs","filter","fn","target","params"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecord.model.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/features/voiceRecord/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,aAAa,EAId,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,eAAO,MAAM,cAAc,OAAQ,MAAM,KAAG,MAK3C,CAAA;AAED,eAAO,MAAM,0BAA0B,wBAStC,CAAA;AASD,eAAO,MAAM,kBAAkB,aAAoB,aAAa,uEAQ/D,CAAA;AAED,eAAO,MAAM,yBAAyB,aAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,eAiBvF,CAAA;AACD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,mBACE,WAAW,KAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAuC5B,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,qBAAqB,4CAI/B,2BAA2B,KAAG,OAAO,CAAC,QAAQ,CA+BhD,CAAA;AAED,eAAO,MAAM,+BAA+B,sBAAuB,QAAQ,OAAO,QAAQ;;;;;;;CAgBzF,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/features/voiceRecord/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,aAAa,EAId,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,eAAO,MAAM,cAAc,OAAQ,MAAM,KAAG,MAK3C,CAAA;AAED,eAAO,MAAM,0BAA0B,wBAUtC,CAAA;AASD,eAAO,MAAM,kBAAkB,aAAoB,aAAa,uEAQ/D,CAAA;AAED,eAAO,MAAM,yBAAyB,aAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,eAiBvF,CAAA;AACD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,mBACE,WAAW,KAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAkC5B,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,qBAAqB,4CAI/B,2BAA2B,KAAG,OAAO,CAAC,QAAQ,CA+BhD,CAAA;AAED,eAAO,MAAM,+BAA+B,sBAAuB,QAAQ,OAAO,QAAQ;;;;;;;CAgBzF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAK7D,eAAO,MAAM,gBAAgB,UAAW,gBAAgB;;CAkDvD,CAAA"}
1
+ {"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAK7D,eAAO,MAAM,gBAAgB,UAAW,gBAAgB;;CAsDvD,CAAA"}
@@ -7,8 +7,10 @@ export declare class RecorderModel {
7
7
  readonly reset: import("effector").EventCallable<void>;
8
8
  readonly setVoiceRecordState: import("effector").EventCallable<VoiceRecorderState>;
9
9
  readonly setAvailableInputs: import("effector").EventCallable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
10
+ readonly setLastKnownDurationMs: import("effector").EventCallable<number>;
10
11
  readonly $voiceRecordState: import("effector").StoreWritable<VoiceRecorderState>;
11
12
  readonly $availableInputs: import("effector").StoreWritable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
13
+ readonly $lastKnownDurationMs: import("effector").StoreWritable<number>;
12
14
  readonly start: import("effector").Effect<void, void, Error>;
13
15
  readonly stop: import("effector").Effect<void, void, Error>;
14
16
  stopAndGetCollectionItem(): Promise<VoiceRecordCollectionItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"Recorder.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/Recorder.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAwB,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAS1E,qBAAa,aAAa;IACjB,QAAQ,EAAG,aAAa,CAAA;IAC/B,OAAO,CAAC,YAAY,CAA4B;IAEhD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,mBAAmB,uDAAoC;IACvE,SAAgB,kBAAkB,8FAAsC;IAExE,SAAgB,iBAAiB,uDAGd;IACnB,SAAgB,gBAAgB,8FAAuC;IAEvE,SAAgB,KAAK,+CASnB;IAEF,SAAgB,IAAI,+CAGlB;IAEK,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAO9D,6BAA6B,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI;IAOpE,iBAAiB,IAAI,IAAI;CAGjC"}
1
+ {"version":3,"file":"Recorder.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/Recorder.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAwB,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAS1E,qBAAa,aAAa;IACjB,QAAQ,EAAG,aAAa,CAAA;IAC/B,OAAO,CAAC,YAAY,CAA4B;IAEhD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,mBAAmB,uDAAoC;IACvE,SAAgB,kBAAkB,8FAAsC;IACxE,SAAgB,sBAAsB,2CAAwB;IAE9D,SAAgB,iBAAiB,uDAGd;IACnB,SAAgB,gBAAgB,8FAAuC;IACvE,SAAgB,oBAAoB,2CAA4D;IAEhG,SAAgB,KAAK,+CASnB;IAEF,SAAgB,IAAI,+CAGlB;IAEK,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAO9D,6BAA6B,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI;IAOpE,iBAAiB,IAAI,IAAI;CAGjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceRecord.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/VoiceRecord.model.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAA6B,MAAM,UAAU,CAAA;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,KAAK,sBAAsB,GAAG;IAC5B,GAAG,EAAE,QAAQ,CAAA;IACb,YAAY,EAAE,4BAA4B,CAAA;IAC1C,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAOD,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAMD,qBAAa,gBAAgB;IAC3B,SAAgB,aAAa,EAAE,aAAa,CAAA;IAC5C,SAAgB,UAAU,EAAE,sBAAsB,CAAA;IAClD,SAAgB,GAAG,EAAE,QAAQ,CAAA;IAC7B,SAAgB,YAAY,EAAE,4BAA4B,CAAA;IAC1D,SAAgB,MAAM,EAAE,iBAAiB,CAAA;IACzC,OAAO,CAAC,sBAAsB,CAAQ;IAEtC,SAAgB,aAAa,2CAAwB;IACrD,SAAgB,gBAAgB,wCAAqB;IACrD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,aAAa,4CAAyB;IACtD,SAAgB,gBAAgB,2CAAwB;IAExD,SAAgB,WAAW,2CAAkC;IAC7D,SAAgB,cAAc,wCAAyD;IAEvF,SAAgB,WAAW,4CAAqC;IAEhE,SAAgB,sBAAsB,6EAkBpC;IAEF,SAAgB,mBAAmB,+CAsBjC;IAEF,SAAgB,cAAc,+CAK5B;IAEF,SAAgB,qBAAqB,WAAY,GAAG,UAcnD;gBAEW,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,sBAAsB;IAWjE,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,mBAAmB;YAMb,iBAAiB;IAsC/B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;CAc/B"}
1
+ {"version":3,"file":"VoiceRecord.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/VoiceRecord.model.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAA6B,MAAM,UAAU,CAAA;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,KAAK,sBAAsB,GAAG;IAC5B,GAAG,EAAE,QAAQ,CAAA;IACb,YAAY,EAAE,4BAA4B,CAAA;IAC1C,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAQD,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAMD,qBAAa,gBAAgB;IAC3B,SAAgB,aAAa,EAAE,aAAa,CAAA;IAC5C,SAAgB,UAAU,EAAE,sBAAsB,CAAA;IAClD,SAAgB,GAAG,EAAE,QAAQ,CAAA;IAC7B,SAAgB,YAAY,EAAE,4BAA4B,CAAA;IAC1D,SAAgB,MAAM,EAAE,iBAAiB,CAAA;IACzC,OAAO,CAAC,sBAAsB,CAAQ;IAEtC,SAAgB,aAAa,2CAAwB;IACrD,SAAgB,gBAAgB,wCAAqB;IACrD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,aAAa,4CAAyB;IACtD,SAAgB,gBAAgB,2CAAwB;IAExD,SAAgB,WAAW,2CAAkC;IAC7D,SAAgB,cAAc,wCAAyD;IAEvF,SAAgB,WAAW,4CAAqC;IAEhE,SAAgB,sBAAsB,6EAiBpC;IAEF,SAAgB,mBAAmB,+CAsBjC;IAEF,SAAgB,cAAc,+CAK5B;IAEF,SAAgB,qBAAqB,WAAY,GAAG,UAcnD;gBAEW,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,sBAAsB;IAWjE,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,mBAAmB;YAMb,iBAAiB;IAuC/B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,sBAAsB;CAc/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/features/voiceRecord/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,aAAa,EAId,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,eAAO,MAAM,cAAc,OAAQ,MAAM,KAAG,MAK3C,CAAA;AAED,eAAO,MAAM,0BAA0B,wBAStC,CAAA;AASD,eAAO,MAAM,kBAAkB,aAAoB,aAAa,uEAQ/D,CAAA;AAED,eAAO,MAAM,yBAAyB,aAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,eAiBvF,CAAA;AACD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,mBACE,WAAW,KAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAuC5B,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,qBAAqB,4CAI/B,2BAA2B,KAAG,OAAO,CAAC,QAAQ,CA+BhD,CAAA;AAED,eAAO,MAAM,+BAA+B,sBAAuB,QAAQ,OAAO,QAAQ;;;;;;;CAgBzF,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../../src/features/voiceRecord/helpers.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,aAAa,EAId,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,eAAO,MAAM,cAAc,OAAQ,MAAM,KAAG,MAK3C,CAAA;AAED,eAAO,MAAM,0BAA0B,wBAUtC,CAAA;AASD,eAAO,MAAM,kBAAkB,aAAoB,aAAa,uEAQ/D,CAAA;AAED,eAAO,MAAM,yBAAyB,aAAc,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,IAAI,eAiBvF,CAAA;AACD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,YACpB,MAAM,mBACE,WAAW,KAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAkC5B,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,qBAAqB,4CAI/B,2BAA2B,KAAG,OAAO,CAAC,QAAQ,CA+BhD,CAAA;AAED,eAAO,MAAM,+BAA+B,sBAAuB,QAAQ,OAAO,QAAQ;;;;;;;CAgBzF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAK7D,eAAO,MAAM,gBAAgB,UAAW,gBAAgB;;CAkDvD,CAAA"}
1
+ {"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAK7D,eAAO,MAAM,gBAAgB,UAAW,gBAAgB;;CAsDvD,CAAA"}
@@ -7,8 +7,10 @@ export declare class RecorderModel {
7
7
  readonly reset: import("effector").EventCallable<void>;
8
8
  readonly setVoiceRecordState: import("effector").EventCallable<VoiceRecorderState>;
9
9
  readonly setAvailableInputs: import("effector").EventCallable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
10
+ readonly setLastKnownDurationMs: import("effector").EventCallable<number>;
10
11
  readonly $voiceRecordState: import("effector").StoreWritable<VoiceRecorderState>;
11
12
  readonly $availableInputs: import("effector").StoreWritable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
13
+ readonly $lastKnownDurationMs: import("effector").StoreWritable<number>;
12
14
  readonly start: import("effector").Effect<void, void, Error>;
13
15
  readonly stop: import("effector").Effect<void, void, Error>;
14
16
  stopAndGetCollectionItem(): Promise<VoiceRecordCollectionItem>;
@@ -1 +1 @@
1
- {"version":3,"file":"Recorder.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/Recorder.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAwB,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAS1E,qBAAa,aAAa;IACjB,QAAQ,EAAG,aAAa,CAAA;IAC/B,OAAO,CAAC,YAAY,CAA4B;IAEhD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,mBAAmB,uDAAoC;IACvE,SAAgB,kBAAkB,8FAAsC;IAExE,SAAgB,iBAAiB,uDAGd;IACnB,SAAgB,gBAAgB,8FAAuC;IAEvE,SAAgB,KAAK,+CASnB;IAEF,SAAgB,IAAI,+CAGlB;IAEK,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAO9D,6BAA6B,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI;IAOpE,iBAAiB,IAAI,IAAI;CAGjC"}
1
+ {"version":3,"file":"Recorder.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/Recorder.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAA;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAwB,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAS1E,qBAAa,aAAa;IACjB,QAAQ,EAAG,aAAa,CAAA;IAC/B,OAAO,CAAC,YAAY,CAA4B;IAEhD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,mBAAmB,uDAAoC;IACvE,SAAgB,kBAAkB,8FAAsC;IACxE,SAAgB,sBAAsB,2CAAwB;IAE9D,SAAgB,iBAAiB,uDAGd;IACnB,SAAgB,gBAAgB,8FAAuC;IACvE,SAAgB,oBAAoB,2CAA4D;IAEhG,SAAgB,KAAK,+CASnB;IAEF,SAAgB,IAAI,+CAGlB;IAEK,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAO9D,6BAA6B,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI;IAOpE,iBAAiB,IAAI,IAAI;CAGjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"VoiceRecord.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/VoiceRecord.model.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAA6B,MAAM,UAAU,CAAA;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,KAAK,sBAAsB,GAAG;IAC5B,GAAG,EAAE,QAAQ,CAAA;IACb,YAAY,EAAE,4BAA4B,CAAA;IAC1C,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAOD,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAMD,qBAAa,gBAAgB;IAC3B,SAAgB,aAAa,EAAE,aAAa,CAAA;IAC5C,SAAgB,UAAU,EAAE,sBAAsB,CAAA;IAClD,SAAgB,GAAG,EAAE,QAAQ,CAAA;IAC7B,SAAgB,YAAY,EAAE,4BAA4B,CAAA;IAC1D,SAAgB,MAAM,EAAE,iBAAiB,CAAA;IACzC,OAAO,CAAC,sBAAsB,CAAQ;IAEtC,SAAgB,aAAa,2CAAwB;IACrD,SAAgB,gBAAgB,wCAAqB;IACrD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,aAAa,4CAAyB;IACtD,SAAgB,gBAAgB,2CAAwB;IAExD,SAAgB,WAAW,2CAAkC;IAC7D,SAAgB,cAAc,wCAAyD;IAEvF,SAAgB,WAAW,4CAAqC;IAEhE,SAAgB,sBAAsB,6EAkBpC;IAEF,SAAgB,mBAAmB,+CAsBjC;IAEF,SAAgB,cAAc,+CAK5B;IAEF,SAAgB,qBAAqB,WAAY,GAAG,UAcnD;gBAEW,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,sBAAsB;IAWjE,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,mBAAmB;YAMb,iBAAiB;IAsC/B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;CAc/B"}
1
+ {"version":3,"file":"VoiceRecord.model.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/VoiceRecord.model.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAA6B,MAAM,UAAU,CAAA;AAE5F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAEhE,KAAK,sBAAsB,GAAG;IAC5B,GAAG,EAAE,QAAQ,CAAA;IACb,YAAY,EAAE,4BAA4B,CAAA;IAC1C,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAQD,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,MAAM,IAAI,CAAA;IACxB,UAAU,EAAE,MAAM,IAAI,CAAA;CACvB,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAMD,qBAAa,gBAAgB;IAC3B,SAAgB,aAAa,EAAE,aAAa,CAAA;IAC5C,SAAgB,UAAU,EAAE,sBAAsB,CAAA;IAClD,SAAgB,GAAG,EAAE,QAAQ,CAAA;IAC7B,SAAgB,YAAY,EAAE,4BAA4B,CAAA;IAC1D,SAAgB,MAAM,EAAE,iBAAiB,CAAA;IACzC,OAAO,CAAC,sBAAsB,CAAQ;IAEtC,SAAgB,aAAa,2CAAwB;IACrD,SAAgB,gBAAgB,wCAAqB;IACrD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,aAAa,4CAAyB;IACtD,SAAgB,gBAAgB,2CAAwB;IAExD,SAAgB,WAAW,2CAAkC;IAC7D,SAAgB,cAAc,wCAAyD;IAEvF,SAAgB,WAAW,4CAAqC;IAEhE,SAAgB,sBAAsB,6EAiBpC;IAEF,SAAgB,mBAAmB,+CAsBjC;IAEF,SAAgB,cAAc,+CAK5B;IAEF,SAAgB,qBAAqB,WAAY,GAAG,UAcnD;gBAEW,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,sBAAsB;IAWjE,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,mBAAmB;YAMb,iBAAiB;IAuC/B,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,sBAAsB;CAc/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@magmamath/students-features",
3
- "version": "0.9.107-rc.30",
3
+ "version": "0.9.107-rc.32",
4
4
  "description": "Magmamath features library",
5
5
  "source": "src/index.ts",
6
6
  "main": "src/index.ts",
@@ -17,6 +17,7 @@ export const formatDuration = (ms: number): string => {
17
17
 
18
18
  export const ensureRecordingPermissions = async () => {
19
19
  const { status } = await getRecordingPermissionsAsync()
20
+ console.log('permission status: ', status)
20
21
 
21
22
  if (status !== 'granted') {
22
23
  const { granted } = await requestRecordingPermissionsAsync()
@@ -72,19 +73,14 @@ export const getAudioDurationMs = (
72
73
  externalPlayer?: AudioPlayer,
73
74
  ): Promise<number | undefined> => {
74
75
  if (!fileUri) return Promise.resolve(undefined)
75
- console.log('fileUri: ', fileUri)
76
76
 
77
77
  const player = externalPlayer ?? createAudioPlayer()
78
- console.log('player: ', player)
79
78
  const isInternalPlayer = !externalPlayer
80
- console.log('isInternalPlayer: ', isInternalPlayer)
81
79
 
82
80
  player.replace(fileUri)
83
81
 
84
82
  return new Promise((resolve, reject) => {
85
83
  const subscription = player.addListener('playbackStatusUpdate', () => {
86
- console.log('player.duration: ', player.duration)
87
-
88
84
  if (player.duration !== undefined && player.duration > 0) {
89
85
  subscription.remove()
90
86
 
@@ -16,6 +16,10 @@ export const useVoiceRecorder = (model: VoiceRecordModel) => {
16
16
  ) {
17
17
  model.recorderModel.stop()
18
18
  }
19
+ // Track the last known duration while recording (for old browsers where getAudioDurationMs returns Infinity)
20
+ if (recorderState.isRecording && recorderState.durationMillis > 0) {
21
+ model.recorderModel.setLastKnownDurationMs(recorderState.durationMillis)
22
+ }
19
23
  }, [recorderState.durationMillis])
20
24
 
21
25
  useEffect(() => {
@@ -17,12 +17,14 @@ export class RecorderModel {
17
17
  public readonly reset = createEvent()
18
18
  public readonly setVoiceRecordState = createEvent<VoiceRecorderState>()
19
19
  public readonly setAvailableInputs = createEvent<AvailableAudioInputs>()
20
+ public readonly setLastKnownDurationMs = createEvent<number>()
20
21
 
21
22
  public readonly $voiceRecordState = restore(
22
23
  this.setVoiceRecordState,
23
24
  VoiceRecorderState.IDLE,
24
25
  ).reset(this.reset)
25
26
  public readonly $availableInputs = restore(this.setAvailableInputs, [])
27
+ public readonly $lastKnownDurationMs = restore(this.setLastKnownDurationMs, 0).reset(this.reset)
26
28
 
27
29
  public readonly start = createEffect(async () => {
28
30
  try {
@@ -20,6 +20,7 @@ type VoiceRecordModelParams = {
20
20
  type UploadParams = {
21
21
  uri: string
22
22
  currentKey: string
23
+ durationMs: number
23
24
  }
24
25
 
25
26
  type VoiceRecordEvents = {
@@ -62,7 +63,6 @@ export class VoiceRecordModel {
62
63
  currentKey,
63
64
  }),
64
65
  effect: createEffect(({ currentKey, notification }: DeleteCurrentRecordingValues) => {
65
- console.log('Deleting recording with key:', currentKey)
66
66
  const recordingItem = this.collection.get(currentKey)
67
67
 
68
68
  this.abortUploadIfInProgress(recordingItem)
@@ -144,8 +144,9 @@ export class VoiceRecordModel {
144
144
  this.collection.delete(currentKey)
145
145
  }
146
146
 
147
- private async handleAudioUpload({ uri, currentKey }: UploadParams) {
148
- const durationMs = await getAudioDurationMs(uri)
147
+ private async handleAudioUpload({ uri, currentKey, durationMs }: UploadParams) {
148
+ // Use the last known duration from recorder state (more reliable for old browsers like Chrome 93
149
+ // where getAudioDurationMs can return Infinity)
149
150
  const formData = await generateAudioFormData({
150
151
  audioFileUri: uri,
151
152
  durationMs,
@@ -185,12 +186,13 @@ export class VoiceRecordModel {
185
186
  private setupUploadHandler() {
186
187
  sample({
187
188
  clock: this.startAudioUpload,
188
- source: this.$currentKey,
189
- filter: (currentKey, uri) => !!uri && !!currentKey,
190
- fn: (currentKey, uri) => ({ currentKey, uri }),
191
- target: createEffect(({ uri, currentKey }: UploadParams) =>
192
- this.handleAudioUpload({ uri, currentKey }),
193
- ),
189
+ source: {
190
+ currentKey: this.$currentKey,
191
+ durationMs: this.recorderModel.$lastKnownDurationMs,
192
+ },
193
+ filter: ({ currentKey }, uri) => !!uri && !!currentKey,
194
+ fn: ({ currentKey, durationMs }, uri) => ({ currentKey, durationMs, uri }),
195
+ target: createEffect((params: UploadParams) => this.handleAudioUpload(params)),
194
196
  })
195
197
  }
196
198