@magmamath/students-features 0.9.107-rc.27 → 0.9.107-rc.29
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.
- package/dist/commonjs/features/voiceRecord/components/VoiceRecordTimer.js +1 -1
- package/dist/commonjs/features/voiceRecord/components/VoiceRecordTimer.js.map +1 -1
- package/dist/commonjs/features/voiceRecord/helpers.js +1 -15
- package/dist/commonjs/features/voiceRecord/helpers.js.map +1 -1
- package/dist/commonjs/features/voiceRecord/hooks/useVoiceRecorder.js +0 -12
- package/dist/commonjs/features/voiceRecord/hooks/useVoiceRecorder.js.map +1 -1
- package/dist/commonjs/features/voiceRecord/model/Recorder.model.js +0 -2
- package/dist/commonjs/features/voiceRecord/model/Recorder.model.js.map +1 -1
- package/dist/commonjs/features/voiceRecord/model/VoiceRecord.model.js +6 -5
- package/dist/commonjs/features/voiceRecord/model/VoiceRecord.model.js.map +1 -1
- package/dist/commonjs/shared/translation/localization/ca.json +1 -0
- package/dist/commonjs/shared/translation/localization/de.json +1 -0
- package/dist/commonjs/shared/translation/localization/en.json +1 -0
- package/dist/commonjs/shared/translation/localization/gb.json +1 -0
- package/dist/commonjs/shared/translation/localization/sct.json +1 -0
- package/dist/commonjs/shared/translation/localization/sw.json +1 -0
- package/dist/module/features/voiceRecord/components/VoiceRecordTimer.js +1 -1
- package/dist/module/features/voiceRecord/components/VoiceRecordTimer.js.map +1 -1
- package/dist/module/features/voiceRecord/helpers.js +1 -15
- package/dist/module/features/voiceRecord/helpers.js.map +1 -1
- package/dist/module/features/voiceRecord/hooks/useVoiceRecorder.js +2 -14
- package/dist/module/features/voiceRecord/hooks/useVoiceRecorder.js.map +1 -1
- package/dist/module/features/voiceRecord/model/Recorder.model.js +0 -2
- package/dist/module/features/voiceRecord/model/Recorder.model.js.map +1 -1
- package/dist/module/features/voiceRecord/model/VoiceRecord.model.js +6 -5
- package/dist/module/features/voiceRecord/model/VoiceRecord.model.js.map +1 -1
- package/dist/module/shared/translation/localization/ca.json +1 -0
- package/dist/module/shared/translation/localization/de.json +1 -0
- package/dist/module/shared/translation/localization/en.json +1 -0
- package/dist/module/shared/translation/localization/gb.json +1 -0
- package/dist/module/shared/translation/localization/sct.json +1 -0
- package/dist/module/shared/translation/localization/sw.json +1 -0
- package/dist/typescript/commonjs/features/voiceRecord/helpers.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/voiceRecord/hooks/useVoiceRecorder.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/voiceRecord/model/Recorder.model.d.ts +0 -2
- package/dist/typescript/commonjs/features/voiceRecord/model/Recorder.model.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/voiceRecord/model/VoiceRecord.model.d.ts.map +1 -1
- package/dist/typescript/commonjs/shared/translation/constants.d.ts +6 -0
- package/dist/typescript/commonjs/shared/translation/constants.d.ts.map +1 -1
- package/dist/typescript/commonjs/shared/translation/model.d.ts +2 -0
- package/dist/typescript/commonjs/shared/translation/model.d.ts.map +1 -1
- package/dist/typescript/module/features/voiceRecord/helpers.d.ts.map +1 -1
- package/dist/typescript/module/features/voiceRecord/hooks/useVoiceRecorder.d.ts.map +1 -1
- package/dist/typescript/module/features/voiceRecord/model/Recorder.model.d.ts +0 -2
- package/dist/typescript/module/features/voiceRecord/model/Recorder.model.d.ts.map +1 -1
- package/dist/typescript/module/features/voiceRecord/model/VoiceRecord.model.d.ts.map +1 -1
- package/dist/typescript/module/shared/translation/constants.d.ts +6 -0
- package/dist/typescript/module/shared/translation/constants.d.ts.map +1 -1
- package/dist/typescript/module/shared/translation/model.d.ts +2 -0
- package/dist/typescript/module/shared/translation/model.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/voiceRecord/components/VoiceRecordTimer.tsx +1 -1
- package/src/features/voiceRecord/helpers.ts +2 -19
- package/src/features/voiceRecord/hooks/useVoiceRecorder.ts +2 -21
- package/src/features/voiceRecord/model/Recorder.model.ts +0 -2
- package/src/features/voiceRecord/model/VoiceRecord.model.ts +6 -6
- package/src/shared/translation/localization/ca.json +1 -0
- package/src/shared/translation/localization/de.json +1 -0
- package/src/shared/translation/localization/en.json +1 -0
- package/src/shared/translation/localization/gb.json +1 -0
- package/src/shared/translation/localization/sct.json +1 -0
- package/src/shared/translation/localization/sw.json +1 -0
|
@@ -16,7 +16,7 @@ const VoiceRecordTimer = ({
|
|
|
16
16
|
model,
|
|
17
17
|
recordingFileDurationMs
|
|
18
18
|
}) => {
|
|
19
|
-
const savedAudioFileDurationMs = (0, _effectorReact.useUnit)(model
|
|
19
|
+
const savedAudioFileDurationMs = (0, _effectorReact.useUnit)(model.$currentRecord)?.durationMs || 0;
|
|
20
20
|
const displayDurationMs = recordingFileDurationMs ? recordingFileDurationMs : savedAudioFileDurationMs;
|
|
21
21
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
22
22
|
style: [styles.container, style],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeUi","_react","_interopRequireDefault","_effectorReact","_helpers","_jsxRuntime","e","__esModule","default","VoiceRecordTimer","style","model","recordingFileDurationMs","savedAudioFileDurationMs","useUnit","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeUi","_react","_interopRequireDefault","_effectorReact","_helpers","_jsxRuntime","e","__esModule","default","VoiceRecordTimer","style","model","recordingFileDurationMs","savedAudioFileDurationMs","useUnit","$currentRecord","durationMs","displayDurationMs","jsx","View","styles","container","children","Typography","variant","text","formatDuration","exports","_default","StyleSheet","create","backgroundColor","COLORS","NEUTRAL_1","paddingHorizontal","paddingVertical","alignItems","borderWidth","borderColor","NEUTRAL_4","borderRadius","minWidth","color","NEUTRAL_10","fontSize","fontWeight","lineHeight","textTransform"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/components/VoiceRecordTimer.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAEA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAA2C,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQpC,MAAMG,gBAAgB,GAAGA,CAAC;EAC/BC,KAAK;EACLC,KAAK;EACLC;AACqB,CAAC,KAAK;EAC3B,MAAMC,wBAAwB,GAAG,IAAAC,sBAAO,EAACH,KAAK,CAACI,cAAc,CAAC,EAAEC,UAAU,IAAI,CAAC;EAE/E,MAAMC,iBAAiB,GAAGL,uBAAuB,GAC7CA,uBAAuB,GACvBC,wBAAwB;EAE5B,oBACE,IAAAR,WAAA,CAAAa,GAAA,EAACpB,YAAA,CAAAqB,IAAI;IAACT,KAAK,EAAE,CAACU,MAAM,CAACC,SAAS,EAAEX,KAAK,CAAE;IAAAY,QAAA,eACrC,IAAAjB,WAAA,CAAAa,GAAA,EAAClB,cAAA,CAAAuB,UAAU;MAACC,OAAO,EAAC,IAAI;MAACd,KAAK,EAAEU,MAAM,CAACK,IAAK;MAAAH,QAAA,EACzCL,iBAAiB,GAAG,IAAAS,uBAAc,EAACT,iBAAiB,CAAC,GAAG;IAAM,CACrD;EAAC,CACT,CAAC;AAEX,CAAC;AAAAU,OAAA,CAAAlB,gBAAA,GAAAA,gBAAA;AAAA,IAAAmB,QAAA,GAAAD,OAAA,CAAAnB,OAAA,GAEcC,gBAAgB;AAE/B,MAAMW,MAAM,GAAGS,uBAAU,CAACC,MAAM,CAAC;EAC/BT,SAAS,EAAE;IACTU,eAAe,EAAEC,qBAAM,CAACC,SAAS;IACjCC,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE,CAAC;IAClBC,UAAU,EAAE,QAAQ;IACpBC,WAAW,EAAE,GAAG;IAChBC,WAAW,EAAEN,qBAAM,CAACO,SAAS;IAC7BC,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ,CAAC;EACDhB,IAAI,EAAE;IACJiB,KAAK,EAAEV,qBAAM,CAACW,UAAU;IACxBC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE,EAAE;IACdC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -73,8 +73,7 @@ const getAudioDurationMs = (fileUri, externalPlayer) => {
|
|
|
73
73
|
return new Promise((resolve, reject) => {
|
|
74
74
|
const subscription = player.addListener('playbackStatusUpdate', () => {
|
|
75
75
|
console.log('player.duration: ', player.duration);
|
|
76
|
-
|
|
77
|
-
if (player.duration !== undefined && player.duration > 0 && Number.isFinite(player.duration)) {
|
|
76
|
+
if (player.duration !== undefined && player.duration > 0) {
|
|
78
77
|
subscription.remove();
|
|
79
78
|
|
|
80
79
|
// player.duration is in seconds (e.g., 1.234567)
|
|
@@ -86,19 +85,6 @@ const getAudioDurationMs = (fileUri, externalPlayer) => {
|
|
|
86
85
|
resolve(durationMs);
|
|
87
86
|
}
|
|
88
87
|
});
|
|
89
|
-
|
|
90
|
-
// Workaround for Chrome returning Infinity: seek to end to force duration calculation
|
|
91
|
-
if (_reactNativeUi.IS_WEB) {
|
|
92
|
-
setTimeout(() => {
|
|
93
|
-
try {
|
|
94
|
-
// Seeking to a large value forces Chrome to calculate the actual duration
|
|
95
|
-
player.seekTo(1e10);
|
|
96
|
-
player.seekTo(0);
|
|
97
|
-
} catch (e) {
|
|
98
|
-
// Ignore seek errors
|
|
99
|
-
}
|
|
100
|
-
}, 100);
|
|
101
|
-
}
|
|
102
88
|
setTimeout(() => {
|
|
103
89
|
subscription.remove();
|
|
104
90
|
if (isInternalPlayer) {
|
|
@@ -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","
|
|
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":[]}
|
|
@@ -9,10 +9,7 @@ var _helpers = require("../helpers.js");
|
|
|
9
9
|
var _react = require("react");
|
|
10
10
|
var _reactNativeUi = require("@magmamath/react-native-ui");
|
|
11
11
|
var _constants = require("../constants.js");
|
|
12
|
-
var _effectorReact = require("effector-react");
|
|
13
12
|
const useVoiceRecorder = model => {
|
|
14
|
-
const player = (0, _expoAudio.useAudioPlayer)();
|
|
15
|
-
const currentRecord = (0, _effectorReact.useUnit)(model.$currentRecord);
|
|
16
13
|
const recorder = (0, _expoAudio.useAudioRecorder)(_expoAudio.RecordingPresets.LOW_QUALITY, model.recordingStatusUpdate);
|
|
17
14
|
const recorderState = (0, _expoAudio.useAudioRecorderState)(recorder);
|
|
18
15
|
(0, _react.useEffect)(() => {
|
|
@@ -33,15 +30,6 @@ const useVoiceRecorder = model => {
|
|
|
33
30
|
});
|
|
34
31
|
return removeListener;
|
|
35
32
|
}, []);
|
|
36
|
-
(0, _react.useEffect)(() => {
|
|
37
|
-
if (currentRecord?.uri) {
|
|
38
|
-
const getDuration = async () => {
|
|
39
|
-
const durationMs = await (0, _helpers.getAudioDurationMs)(currentRecord.uri, player);
|
|
40
|
-
model.recorderModel.setAudioFileDurationMs(durationMs || 0);
|
|
41
|
-
};
|
|
42
|
-
getDuration();
|
|
43
|
-
}
|
|
44
|
-
}, [currentRecord?.uri]);
|
|
45
33
|
(0, _react.useEffect)(() => {
|
|
46
34
|
if (recorderState.isRecording) {
|
|
47
35
|
model.recorderModel.setVoiceRecordState(_constants.VoiceRecorderState.RECORDING);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_expoAudio","require","_helpers","_react","_reactNativeUi","_constants","
|
|
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":[]}
|
|
@@ -14,10 +14,8 @@ const AUDIO_MODE_CONFIG = {
|
|
|
14
14
|
class RecorderModel {
|
|
15
15
|
stopResolver = null;
|
|
16
16
|
reset = (0, _effector.createEvent)();
|
|
17
|
-
setAudioFileDurationMs = (0, _effector.createEvent)();
|
|
18
17
|
setVoiceRecordState = (0, _effector.createEvent)();
|
|
19
18
|
setAvailableInputs = (0, _effector.createEvent)();
|
|
20
|
-
$audioFileDurationMs = (0, _effector.restore)(this.setAudioFileDurationMs, 0).reset(this.reset);
|
|
21
19
|
$voiceRecordState = (0, _effector.restore)(this.setVoiceRecordState, _constants.VoiceRecorderState.IDLE).reset(this.reset);
|
|
22
20
|
$availableInputs = (0, _effector.restore)(this.setAvailableInputs, []);
|
|
23
21
|
start = (0, _effector.createEffect)(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effector","require","_expoAudio","_constants","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","stopResolver","reset","createEvent","
|
|
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":[]}
|
|
@@ -40,7 +40,6 @@ class VoiceRecordModel {
|
|
|
40
40
|
})
|
|
41
41
|
});
|
|
42
42
|
initializeRecording = (0, _effector.createEffect)(async () => {
|
|
43
|
-
console.log('Initializing new recording');
|
|
44
43
|
this.deleteCurrentRecording({
|
|
45
44
|
notification: false
|
|
46
45
|
});
|
|
@@ -55,7 +54,11 @@ class VoiceRecordModel {
|
|
|
55
54
|
this.notification.error((0, _index.t)('voiceRecorder.noMicrophoneFound'));
|
|
56
55
|
return;
|
|
57
56
|
}
|
|
58
|
-
return this.recorderModel.start()
|
|
57
|
+
return this.recorderModel.start().catch(error => {
|
|
58
|
+
if (error.name === 'NotAllowedError') {
|
|
59
|
+
this.notification.error((0, _index.t)('voiceRecorder.noMicrophoneAccessBySystem'));
|
|
60
|
+
}
|
|
61
|
+
});
|
|
59
62
|
});
|
|
60
63
|
stopAndDiscard = (0, _effector.createEffect)(async () => {
|
|
61
64
|
this.shouldDiscardRecording = true;
|
|
@@ -64,6 +67,7 @@ class VoiceRecordModel {
|
|
|
64
67
|
this.recorderModel.reset();
|
|
65
68
|
});
|
|
66
69
|
recordingStatusUpdate = status => {
|
|
70
|
+
console.log('status: ', status);
|
|
67
71
|
if (status.error) {
|
|
68
72
|
this.notification.error(`Recorder error: ${status.error}`);
|
|
69
73
|
this.recorderModel.clearStopResolver();
|
|
@@ -165,9 +169,6 @@ class VoiceRecordModel {
|
|
|
165
169
|
return;
|
|
166
170
|
}
|
|
167
171
|
this.setCurrentRecord(recordingItem);
|
|
168
|
-
if (recordingItem.durationMs) {
|
|
169
|
-
this.recorderModel.setAudioFileDurationMs(recordingItem.durationMs);
|
|
170
|
-
}
|
|
171
172
|
})
|
|
172
173
|
});
|
|
173
174
|
}
|
|
@@ -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","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","
|
|
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":[]}
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Löschen",
|
|
48
48
|
"cancel": "Abbrechen",
|
|
49
49
|
"noMicrophoneAccess": "Kein Mikrofon-Zugriff.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Mikrofonzugriff durch Systemeinstellungen verweigert.",
|
|
50
51
|
"noMicrophoneFound": "Kein Mikrofon gefunden.",
|
|
51
52
|
"uploadFailed": "Hochladen fehlgeschlagen. Bitte versuche es erneut.",
|
|
52
53
|
"redoRecording": "Aufnahme erneut aufnehmen?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Radera",
|
|
48
48
|
"cancel": "Avbryt",
|
|
49
49
|
"noMicrophoneAccess": "Ingen mikrofonåtkomst.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Mikrofonåtkomst nekad av systeminställningar.",
|
|
50
51
|
"noMicrophoneFound": "Ingen mikrofon hittades.",
|
|
51
52
|
"uploadFailed": "Uppladdning misslyckades. Försök igen.",
|
|
52
53
|
"redoRecording": "Spela in igen?",
|
|
@@ -11,7 +11,7 @@ export const VoiceRecordTimer = ({
|
|
|
11
11
|
model,
|
|
12
12
|
recordingFileDurationMs
|
|
13
13
|
}) => {
|
|
14
|
-
const savedAudioFileDurationMs = useUnit(model
|
|
14
|
+
const savedAudioFileDurationMs = useUnit(model.$currentRecord)?.durationMs || 0;
|
|
15
15
|
const displayDurationMs = recordingFileDurationMs ? recordingFileDurationMs : savedAudioFileDurationMs;
|
|
16
16
|
return /*#__PURE__*/_jsx(View, {
|
|
17
17
|
style: [styles.container, style],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","View","COLORS","Typography","React","useUnit","formatDuration","jsx","_jsx","VoiceRecordTimer","style","model","recordingFileDurationMs","savedAudioFileDurationMs","
|
|
1
|
+
{"version":3,"names":["StyleSheet","View","COLORS","Typography","React","useUnit","formatDuration","jsx","_jsx","VoiceRecordTimer","style","model","recordingFileDurationMs","savedAudioFileDurationMs","$currentRecord","durationMs","displayDurationMs","styles","container","children","variant","text","create","backgroundColor","NEUTRAL_1","paddingHorizontal","paddingVertical","alignItems","borderWidth","borderColor","NEUTRAL_4","borderRadius","minWidth","color","NEUTRAL_10","fontSize","fontWeight","lineHeight","textTransform"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/components/VoiceRecordTimer.tsx"],"mappings":";;AAAA,SAAoBA,UAAU,EAAEC,IAAI,QAAmB,cAAc;AACrE,SAASC,MAAM,EAAEC,UAAU,QAAQ,4BAA4B;AAC/D,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,OAAO,QAAQ,gBAAgB;AACxC,SAASC,cAAc,QAAQ,eAAY;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAQ3C,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAC/BC,KAAK;EACLC,KAAK;EACLC;AACqB,CAAC,KAAK;EAC3B,MAAMC,wBAAwB,GAAGR,OAAO,CAACM,KAAK,CAACG,cAAc,CAAC,EAAEC,UAAU,IAAI,CAAC;EAE/E,MAAMC,iBAAiB,GAAGJ,uBAAuB,GAC7CA,uBAAuB,GACvBC,wBAAwB;EAE5B,oBACEL,IAAA,CAACP,IAAI;IAACS,KAAK,EAAE,CAACO,MAAM,CAACC,SAAS,EAAER,KAAK,CAAE;IAAAS,QAAA,eACrCX,IAAA,CAACL,UAAU;MAACiB,OAAO,EAAC,IAAI;MAACV,KAAK,EAAEO,MAAM,CAACI,IAAK;MAAAF,QAAA,EACzCH,iBAAiB,GAAGV,cAAc,CAACU,iBAAiB,CAAC,GAAG;IAAM,CACrD;EAAC,CACT,CAAC;AAEX,CAAC;AAED,eAAeP,gBAAgB;AAE/B,MAAMQ,MAAM,GAAGjB,UAAU,CAACsB,MAAM,CAAC;EAC/BJ,SAAS,EAAE;IACTK,eAAe,EAAErB,MAAM,CAACsB,SAAS;IACjCC,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE,CAAC;IAClBC,UAAU,EAAE,QAAQ;IACpBC,WAAW,EAAE,GAAG;IAChBC,WAAW,EAAE3B,MAAM,CAAC4B,SAAS;IAC7BC,YAAY,EAAE,EAAE;IAChBC,QAAQ,EAAE;EACZ,CAAC;EACDX,IAAI,EAAE;IACJY,KAAK,EAAE/B,MAAM,CAACgC,UAAU;IACxBC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE,EAAE;IACdC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -65,8 +65,7 @@ export const getAudioDurationMs = (fileUri, externalPlayer) => {
|
|
|
65
65
|
return new Promise((resolve, reject) => {
|
|
66
66
|
const subscription = player.addListener('playbackStatusUpdate', () => {
|
|
67
67
|
console.log('player.duration: ', player.duration);
|
|
68
|
-
|
|
69
|
-
if (player.duration !== undefined && player.duration > 0 && Number.isFinite(player.duration)) {
|
|
68
|
+
if (player.duration !== undefined && player.duration > 0) {
|
|
70
69
|
subscription.remove();
|
|
71
70
|
|
|
72
71
|
// player.duration is in seconds (e.g., 1.234567)
|
|
@@ -78,19 +77,6 @@ export const getAudioDurationMs = (fileUri, externalPlayer) => {
|
|
|
78
77
|
resolve(durationMs);
|
|
79
78
|
}
|
|
80
79
|
});
|
|
81
|
-
|
|
82
|
-
// Workaround for Chrome returning Infinity: seek to end to force duration calculation
|
|
83
|
-
if (IS_WEB) {
|
|
84
|
-
setTimeout(() => {
|
|
85
|
-
try {
|
|
86
|
-
// Seeking to a large value forces Chrome to calculate the actual duration
|
|
87
|
-
player.seekTo(1e10);
|
|
88
|
-
player.seekTo(0);
|
|
89
|
-
} catch (e) {
|
|
90
|
-
// Ignore seek errors
|
|
91
|
-
}
|
|
92
|
-
}, 100);
|
|
93
|
-
}
|
|
94
80
|
setTimeout(() => {
|
|
95
81
|
subscription.remove();
|
|
96
82
|
if (isInternalPlayer) {
|
|
@@ -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","
|
|
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,14 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { RecordingPresets,
|
|
4
|
-
import { addAudioInputsListenerWeb,
|
|
3
|
+
import { RecordingPresets, useAudioRecorder, useAudioRecorderState } from 'expo-audio';
|
|
4
|
+
import { addAudioInputsListenerWeb, getAvailableInputs } from "../helpers.js";
|
|
5
5
|
import { useEffect } from 'react';
|
|
6
6
|
import { IS_WEB } from '@magmamath/react-native-ui';
|
|
7
7
|
import { VOICE_RECORDER_MAX_DURATION_MS, VoiceRecorderState } from "../constants.js";
|
|
8
|
-
import { useUnit } from 'effector-react';
|
|
9
8
|
export const useVoiceRecorder = model => {
|
|
10
|
-
const player = useAudioPlayer();
|
|
11
|
-
const currentRecord = useUnit(model.$currentRecord);
|
|
12
9
|
const recorder = useAudioRecorder(RecordingPresets.LOW_QUALITY, model.recordingStatusUpdate);
|
|
13
10
|
const recorderState = useAudioRecorderState(recorder);
|
|
14
11
|
useEffect(() => {
|
|
@@ -29,15 +26,6 @@ export const useVoiceRecorder = model => {
|
|
|
29
26
|
});
|
|
30
27
|
return removeListener;
|
|
31
28
|
}, []);
|
|
32
|
-
useEffect(() => {
|
|
33
|
-
if (currentRecord?.uri) {
|
|
34
|
-
const getDuration = async () => {
|
|
35
|
-
const durationMs = await getAudioDurationMs(currentRecord.uri, player);
|
|
36
|
-
model.recorderModel.setAudioFileDurationMs(durationMs || 0);
|
|
37
|
-
};
|
|
38
|
-
getDuration();
|
|
39
|
-
}
|
|
40
|
-
}, [currentRecord?.uri]);
|
|
41
29
|
useEffect(() => {
|
|
42
30
|
if (recorderState.isRecording) {
|
|
43
31
|
model.recorderModel.setVoiceRecordState(VoiceRecorderState.RECORDING);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RecordingPresets","
|
|
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":[]}
|
|
@@ -10,10 +10,8 @@ const AUDIO_MODE_CONFIG = {
|
|
|
10
10
|
export class RecorderModel {
|
|
11
11
|
stopResolver = null;
|
|
12
12
|
reset = createEvent();
|
|
13
|
-
setAudioFileDurationMs = createEvent();
|
|
14
13
|
setVoiceRecordState = createEvent();
|
|
15
14
|
setAvailableInputs = createEvent();
|
|
16
|
-
$audioFileDurationMs = restore(this.setAudioFileDurationMs, 0).reset(this.reset);
|
|
17
15
|
$voiceRecordState = restore(this.setVoiceRecordState, VoiceRecorderState.IDLE).reset(this.reset);
|
|
18
16
|
$availableInputs = restore(this.setAvailableInputs, []);
|
|
19
17
|
start = createEffect(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createEffect","createEvent","restore","setAudioModeAsync","VoiceRecorderState","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","stopResolver","reset","
|
|
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":[]}
|
|
@@ -36,7 +36,6 @@ export class VoiceRecordModel {
|
|
|
36
36
|
})
|
|
37
37
|
});
|
|
38
38
|
initializeRecording = createEffect(async () => {
|
|
39
|
-
console.log('Initializing new recording');
|
|
40
39
|
this.deleteCurrentRecording({
|
|
41
40
|
notification: false
|
|
42
41
|
});
|
|
@@ -51,7 +50,11 @@ export class VoiceRecordModel {
|
|
|
51
50
|
this.notification.error(t('voiceRecorder.noMicrophoneFound'));
|
|
52
51
|
return;
|
|
53
52
|
}
|
|
54
|
-
return this.recorderModel.start()
|
|
53
|
+
return this.recorderModel.start().catch(error => {
|
|
54
|
+
if (error.name === 'NotAllowedError') {
|
|
55
|
+
this.notification.error(t('voiceRecorder.noMicrophoneAccessBySystem'));
|
|
56
|
+
}
|
|
57
|
+
});
|
|
55
58
|
});
|
|
56
59
|
stopAndDiscard = createEffect(async () => {
|
|
57
60
|
this.shouldDiscardRecording = true;
|
|
@@ -60,6 +63,7 @@ export class VoiceRecordModel {
|
|
|
60
63
|
this.recorderModel.reset();
|
|
61
64
|
});
|
|
62
65
|
recordingStatusUpdate = status => {
|
|
66
|
+
console.log('status: ', status);
|
|
63
67
|
if (status.error) {
|
|
64
68
|
this.notification.error(`Recorder error: ${status.error}`);
|
|
65
69
|
this.recorderModel.clearStopResolver();
|
|
@@ -161,9 +165,6 @@ export class VoiceRecordModel {
|
|
|
161
165
|
return;
|
|
162
166
|
}
|
|
163
167
|
this.setCurrentRecord(recordingItem);
|
|
164
|
-
if (recordingItem.durationMs) {
|
|
165
|
-
this.recorderModel.setAudioFileDurationMs(recordingItem.durationMs);
|
|
166
|
-
}
|
|
167
168
|
})
|
|
168
169
|
});
|
|
169
170
|
}
|
|
@@ -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","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","
|
|
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":";;AAAA,SAASA,MAAM,EAAEC,YAAY,EAAEC,WAAW,EAAeC,OAAO,EAAEC,MAAM,QAAQ,UAAU;AAC1F,SACEC,0BAA0B,EAC1BC,qBAAqB,EACrBC,kBAAkB,EAClBC,kBAAkB,EAClBC,+BAA+B,QAC1B,eAAY;AAEnB,SAASC,CAAC,QAAQ,sCAA6B;AAC/C,SAASC,aAAa,QAAQ,qBAAkB;AAChD,SAASC,sBAAsB,QAAQ,4BAAyB;AA0BhE,OAAO,MAAMC,gBAAgB,CAAC;EAMpBC,sBAAsB,GAAG,KAAK;EAEtBC,aAAa,GAAGb,WAAW,CAAS,CAAC;EACrCc,gBAAgB,GAAGd,WAAW,CAAM,CAAC;EACrCe,KAAK,GAAGf,WAAW,CAAC,CAAC;EACrBgB,aAAa,GAAGhB,WAAW,CAAU,CAAC;EACtCiB,gBAAgB,GAAGjB,WAAW,CAAS,CAAC;EAExCkB,WAAW,GAAGjB,OAAO,CAAC,IAAI,CAACY,aAAa,EAAE,EAAE,CAAC;EAC7CM,cAAc,GAAGlB,OAAO,CAAC,IAAI,CAACa,gBAAgB,EAAE,IAAI,CAAC,CAACC,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EAEvEK,WAAW,GAAGnB,OAAO,CAAC,IAAI,CAACe,aAAa,EAAE,KAAK,CAAC;EAEhDK,sBAAsB,GAAGvB,MAAM,CAAC;IAC9CwB,MAAM,EAAE,IAAI,CAACJ,WAAW;IACxBK,SAAS,EAAEA,CAACC,KAAyC,EAAEC,UAAU,MAAM;MACrEC,YAAY,EAAE,IAAI;MAClB,GAAGF,KAAK;MACRC;IACF,CAAC,CAAC;IACFE,MAAM,EAAE5B,YAAY,CAAC,CAAC;MAAE0B,UAAU;MAAEC;IAA2C,CAAC,KAAK;MACnFE,OAAO,CAACC,GAAG,CAAC,8BAA8B,EAAEJ,UAAU,CAAC;MACvD,MAAMK,aAAa,GAAG,IAAI,CAACC,UAAU,CAACC,GAAG,CAACP,UAAU,CAAC;MAErD,IAAI,CAACQ,uBAAuB,CAACH,aAAa,CAAC;MAC3C,IAAI,CAACI,mBAAmB,CAACT,UAAU,CAAC;MAEpC,IAAIC,YAAY,EAAE;QAChB,IAAI,CAACA,YAAY,CAACS,IAAI,CAAC3B,CAAC,CAAC,gCAAgC,CAAC,CAAC;MAC7D;IACF,CAAC;EACH,CAAC,CAAC;EAEc4B,mBAAmB,GAAGrC,YAAY,CAAC,YAAY;IAC7D,IAAI,CAACsB,sBAAsB,CAAC;MAAEK,YAAY,EAAE;IAAM,CAAC,CAAC;IAEpD,MAAMW,cAAc,GAAG,MAAMlC,0BAA0B,CAAC,CAAC;IACzD,IAAI,CAACkC,cAAc,EAAE;MACnB,IAAI,CAACX,YAAY,CAACY,KAAK,CAAC9B,CAAC,CAAC,kCAAkC,CAAC,CAAC;MAC9D;IACF;IAEA,MAAM+B,MAAM,GAAG,MAAMjC,kBAAkB,CAAC,IAAI,CAACkC,aAAa,CAACC,QAAQ,CAAC;IACpE,IAAI,CAACD,aAAa,CAACE,kBAAkB,CAACH,MAAM,CAAC;IAE7C,IAAIA,MAAM,CAACI,MAAM,KAAK,CAAC,EAAE;MACvB,IAAI,CAACjB,YAAY,CAACY,KAAK,CAAC9B,CAAC,CAAC,iCAAiC,CAAC,CAAC;MAC7D;IACF;IAEA,OAAO,IAAI,CAACgC,aAAa,CAACI,KAAK,CAAC,CAAC,CAACC,KAAK,CAAEP,KAAK,IAAK;MACjD,IAAIA,KAAK,CAACQ,IAAI,KAAK,iBAAiB,EAAE;QACpC,IAAI,CAACpB,YAAY,CAACY,KAAK,CAAC9B,CAAC,CAAC,0CAA0C,CAAC,CAAC;MACxE;IACF,CAAC,CAAC;EACJ,CAAC,CAAC;EAEcuC,cAAc,GAAGhD,YAAY,CAAC,YAAY;IACxD,IAAI,CAACa,sBAAsB,GAAG,IAAI;IAClC,MAAM,IAAI,CAAC4B,aAAa,CAACQ,IAAI,CAAC,CAAC;IAC/B,IAAI,CAACR,aAAa,CAACS,iBAAiB,CAAC,CAAC;IACtC,IAAI,CAACT,aAAa,CAACzB,KAAK,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEcmC,qBAAqB,GAAIC,MAAW,IAAK;IACvDvB,OAAO,CAACC,GAAG,CAAC,UAAU,EAAEsB,MAAM,CAAC;IAC/B,IAAIA,MAAM,CAACb,KAAK,EAAE;MAChB,IAAI,CAACZ,YAAY,CAACY,KAAK,CAAC,mBAAmBa,MAAM,CAACb,KAAK,EAAE,CAAC;MAC1D,IAAI,CAACE,aAAa,CAACS,iBAAiB,CAAC,CAAC;MACtC,IAAI,CAACrC,sBAAsB,GAAG,KAAK;MACnC;IACF;IACA,IAAIuC,MAAM,CAACC,UAAU,IAAID,MAAM,CAACE,GAAG,EAAE;MACnC,IAAI,CAAC,IAAI,CAACzC,sBAAsB,EAAE;QAChC,IAAI,CAACK,gBAAgB,CAACkC,MAAM,CAACE,GAAG,CAAC;MACnC;MACA,IAAI,CAACzC,sBAAsB,GAAG,KAAK;IACrC;EACF,CAAC;EAED0C,WAAWA,CAAC;IAAEC,GAAG;IAAE7B,YAAY;IAAE8B;EAA+B,CAAC,EAAE;IACjE,IAAI,CAACD,GAAG,GAAGA,GAAG;IACd,IAAI,CAAC7B,YAAY,GAAGA,YAAY;IAChC,IAAI,CAAC8B,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAChB,aAAa,GAAG,IAAI/B,aAAa,CAAC,CAAC;IACxC,IAAI,CAACsB,UAAU,GAAG,IAAIrB,sBAAsB,CAAC,CAAC;IAE9C,IAAI,CAAC+C,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAACC,sBAAsB,CAAC,CAAC;EAC/B;EAEQzB,uBAAuBA,CAACH,aAAwD,EAAE;IACxF,IAAI,CAACA,aAAa,EAAE6B,EAAE,IAAI7B,aAAa,EAAE8B,UAAU,EAAE;MACnD9B,aAAa,CAAC8B,UAAU,CAACC,KAAK,CAAC,CAAC;IAClC;EACF;EAEQ3B,mBAAmBA,CAACT,UAAkB,EAAE;IAC9C,IAAI,CAACe,aAAa,CAACzB,KAAK,CAAC,CAAC;IAC1B,IAAI,CAACA,KAAK,CAAC,CAAC;IACZ,IAAI,CAACgB,UAAU,CAAC+B,MAAM,CAACrC,UAAU,CAAC;EACpC;EAEA,MAAcsC,iBAAiBA,CAAC;IAAEC,GAAG;IAAEvC;EAAyB,CAAC,EAAE;IACjE,MAAMwC,UAAU,GAAG,MAAM5D,kBAAkB,CAAC2D,GAAG,CAAC;IAChD,MAAME,QAAQ,GAAG,MAAM9D,qBAAqB,CAAC;MAC3C+D,YAAY,EAAEH,GAAG;MACjBC,UAAU;MACVG,QAAQ,EAAE3C;IACZ,CAAC,CAAC;IACF,MAAM;MAAE4C,WAAW;MAAET;IAAW,CAAC,GAAGrD,+BAA+B,CAAC2D,QAAQ,EAAE,IAAI,CAACX,GAAG,CAAC;IAEvF,MAAMe,kBAAkB,GAAGD,WAAW,CAAC,CAAC,CACrCE,IAAI,CAAEC,IAAI,IAAK;MACd;MACA,IAAI,IAAI,CAACzC,UAAU,CAACC,GAAG,CAACP,UAAU,CAAC,EAAE;QACnC,IAAI,CAACM,UAAU,CAAC0C,MAAM,CAAChD,UAAU,EAAE;UAAEkC,EAAE,EAAEa,IAAI,CAACb;QAAG,CAAC,CAAC;MACrD;MACA,OAAOa,IAAI;IACb,CAAC,CAAC,CACD3B,KAAK,CAAEP,KAAK,IAAK;MAChB,IAAIA,KAAK,CAACQ,IAAI,KAAK,eAAe,EAAE;MACpC,IAAI,CAACpB,YAAY,CAACY,KAAK,CAAC9B,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEJ,MAAMkE,cAAyC,GAAG;MAChDT,UAAU;MACVK,kBAAkB;MAClBV,UAAU;MACVI;IACF,CAAC;IAED,IAAI,CAACjC,UAAU,CAAC4C,GAAG,CAAClD,UAAU,EAAEiD,cAAc,CAAC;IAC/C,IAAI,CAAC5D,gBAAgB,CAAC4D,cAAc,CAAC;IACrC,IAAI,CAAClC,aAAa,CAACoC,6BAA6B,CAACF,cAAc,CAAC;IAEhE,OAAOJ,kBAAkB;EAC3B;EAEQb,kBAAkBA,CAAA,EAAG;IAC3BvD,MAAM,CAAC;MACL2E,KAAK,EAAE,IAAI,CAAC5D,gBAAgB;MAC5BK,MAAM,EAAE,IAAI,CAACJ,WAAW;MACxB4D,MAAM,EAAEA,CAACrD,UAAU,EAAEuC,GAAG,KAAK,CAAC,CAACA,GAAG,IAAI,CAAC,CAACvC,UAAU;MAClDsD,EAAE,EAAEA,CAACtD,UAAU,EAAEuC,GAAG,MAAM;QAAEvC,UAAU;QAAEuC;MAAI,CAAC,CAAC;MAC9CgB,MAAM,EAAEjF,YAAY,CAAC,CAAC;QAAEiE,GAAG;QAAEvC;MAAyB,CAAC,KACrD,IAAI,CAACsC,iBAAiB,CAAC;QAAEC,GAAG;QAAEvC;MAAW,CAAC,CAC5C;IACF,CAAC,CAAC;EACJ;EAEQiC,sBAAsBA,CAAA,EAAG;IAC/BxD,MAAM,CAAC;MACLoB,MAAM,EAAE,IAAI,CAACJ,WAAW;MACxB6D,EAAE,EAAGtD,UAAU,IAAK,IAAI,CAACM,UAAU,CAACC,GAAG,CAACP,UAAU,CAAC;MACnDuD,MAAM,EAAEjF,YAAY,CAAE+B,aAAyC,IAAK;QAClE,IAAI,CAACA,aAAa,EAAE;UAClB,IAAI,CAACf,KAAK,CAAC,CAAC;UACZ;QACF;QAEA,IAAI,CAACD,gBAAgB,CAACgB,aAAa,CAAC;MACtC,CAAC;IACH,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Löschen",
|
|
48
48
|
"cancel": "Abbrechen",
|
|
49
49
|
"noMicrophoneAccess": "Kein Mikrofon-Zugriff.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Mikrofonzugriff durch Systemeinstellungen verweigert.",
|
|
50
51
|
"noMicrophoneFound": "Kein Mikrofon gefunden.",
|
|
51
52
|
"uploadFailed": "Hochladen fehlgeschlagen. Bitte versuche es erneut.",
|
|
52
53
|
"redoRecording": "Aufnahme erneut aufnehmen?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Radera",
|
|
48
48
|
"cancel": "Avbryt",
|
|
49
49
|
"noMicrophoneAccess": "Ingen mikrofonåtkomst.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Mikrofonåtkomst nekad av systeminställningar.",
|
|
50
51
|
"noMicrophoneFound": "Ingen mikrofon hittades.",
|
|
51
52
|
"uploadFailed": "Uppladdning misslyckades. Försök igen.",
|
|
52
53
|
"redoRecording": "Spela in igen?",
|
|
@@ -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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -5,10 +5,8 @@ export declare class RecorderModel {
|
|
|
5
5
|
recorder: AudioRecorder;
|
|
6
6
|
private stopResolver;
|
|
7
7
|
readonly reset: import("effector").EventCallable<void>;
|
|
8
|
-
readonly setAudioFileDurationMs: import("effector").EventCallable<number>;
|
|
9
8
|
readonly setVoiceRecordState: import("effector").EventCallable<VoiceRecorderState>;
|
|
10
9
|
readonly setAvailableInputs: import("effector").EventCallable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
|
|
11
|
-
readonly $audioFileDurationMs: import("effector").StoreWritable<number>;
|
|
12
10
|
readonly $voiceRecordState: import("effector").StoreWritable<VoiceRecorderState>;
|
|
13
11
|
readonly $availableInputs: import("effector").StoreWritable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
|
|
14
12
|
readonly start: import("effector").Effect<void, void, Error>;
|
|
@@ -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,
|
|
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 +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,+
|
|
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;IAoC/B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;CAc/B"}
|
|
@@ -48,6 +48,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
48
48
|
delete: string;
|
|
49
49
|
cancel: string;
|
|
50
50
|
noMicrophoneAccess: string;
|
|
51
|
+
noMicrophoneAccessBySystem: string;
|
|
51
52
|
noMicrophoneFound: string;
|
|
52
53
|
uploadFailed: string;
|
|
53
54
|
redoRecording: string;
|
|
@@ -104,6 +105,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
104
105
|
delete: string;
|
|
105
106
|
cancel: string;
|
|
106
107
|
noMicrophoneAccess: string;
|
|
108
|
+
noMicrophoneAccessBySystem: string;
|
|
107
109
|
noMicrophoneFound: string;
|
|
108
110
|
uploadFailed: string;
|
|
109
111
|
redoRecording: string;
|
|
@@ -160,6 +162,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
160
162
|
delete: string;
|
|
161
163
|
cancel: string;
|
|
162
164
|
noMicrophoneAccess: string;
|
|
165
|
+
noMicrophoneAccessBySystem: string;
|
|
163
166
|
noMicrophoneFound: string;
|
|
164
167
|
uploadFailed: string;
|
|
165
168
|
redoRecording: string;
|
|
@@ -216,6 +219,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
216
219
|
delete: string;
|
|
217
220
|
cancel: string;
|
|
218
221
|
noMicrophoneAccess: string;
|
|
222
|
+
noMicrophoneAccessBySystem: string;
|
|
219
223
|
noMicrophoneFound: string;
|
|
220
224
|
uploadFailed: string;
|
|
221
225
|
redoRecording: string;
|
|
@@ -272,6 +276,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
272
276
|
delete: string;
|
|
273
277
|
cancel: string;
|
|
274
278
|
noMicrophoneAccess: string;
|
|
279
|
+
noMicrophoneAccessBySystem: string;
|
|
275
280
|
noMicrophoneFound: string;
|
|
276
281
|
uploadFailed: string;
|
|
277
282
|
redoRecording: string;
|
|
@@ -328,6 +333,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
328
333
|
delete: string;
|
|
329
334
|
cancel: string;
|
|
330
335
|
noMicrophoneAccess: string;
|
|
336
|
+
noMicrophoneAccessBySystem: string;
|
|
331
337
|
noMicrophoneFound: string;
|
|
332
338
|
uploadFailed: string;
|
|
333
339
|
redoRecording: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/shared/translation/constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/shared/translation/constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhC,CAAA"}
|
|
@@ -49,6 +49,7 @@ export declare const setLocalization: import("effector").EventCallable<{
|
|
|
49
49
|
delete: string;
|
|
50
50
|
cancel: string;
|
|
51
51
|
noMicrophoneAccess: string;
|
|
52
|
+
noMicrophoneAccessBySystem: string;
|
|
52
53
|
noMicrophoneFound: string;
|
|
53
54
|
uploadFailed: string;
|
|
54
55
|
redoRecording: string;
|
|
@@ -105,6 +106,7 @@ export declare const $localization: import("effector").StoreWritable<{
|
|
|
105
106
|
delete: string;
|
|
106
107
|
cancel: string;
|
|
107
108
|
noMicrophoneAccess: string;
|
|
109
|
+
noMicrophoneAccessBySystem: string;
|
|
108
110
|
noMicrophoneFound: string;
|
|
109
111
|
uploadFailed: string;
|
|
110
112
|
redoRecording: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/shared/translation/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/shared/translation/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cACD,OAAO,oBAAoB,KAAK,YAAY,EACpE,CAAA;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMzB,CAAA"}
|
|
@@ -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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -5,10 +5,8 @@ export declare class RecorderModel {
|
|
|
5
5
|
recorder: AudioRecorder;
|
|
6
6
|
private stopResolver;
|
|
7
7
|
readonly reset: import("effector").EventCallable<void>;
|
|
8
|
-
readonly setAudioFileDurationMs: import("effector").EventCallable<number>;
|
|
9
8
|
readonly setVoiceRecordState: import("effector").EventCallable<VoiceRecorderState>;
|
|
10
9
|
readonly setAvailableInputs: import("effector").EventCallable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
|
|
11
|
-
readonly $audioFileDurationMs: import("effector").StoreWritable<number>;
|
|
12
10
|
readonly $voiceRecordState: import("effector").StoreWritable<VoiceRecorderState>;
|
|
13
11
|
readonly $availableInputs: import("effector").StoreWritable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
|
|
14
12
|
readonly start: import("effector").Effect<void, void, Error>;
|
|
@@ -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,
|
|
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 +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,+
|
|
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;IAoC/B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;CAc/B"}
|
|
@@ -48,6 +48,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
48
48
|
delete: string;
|
|
49
49
|
cancel: string;
|
|
50
50
|
noMicrophoneAccess: string;
|
|
51
|
+
noMicrophoneAccessBySystem: string;
|
|
51
52
|
noMicrophoneFound: string;
|
|
52
53
|
uploadFailed: string;
|
|
53
54
|
redoRecording: string;
|
|
@@ -104,6 +105,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
104
105
|
delete: string;
|
|
105
106
|
cancel: string;
|
|
106
107
|
noMicrophoneAccess: string;
|
|
108
|
+
noMicrophoneAccessBySystem: string;
|
|
107
109
|
noMicrophoneFound: string;
|
|
108
110
|
uploadFailed: string;
|
|
109
111
|
redoRecording: string;
|
|
@@ -160,6 +162,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
160
162
|
delete: string;
|
|
161
163
|
cancel: string;
|
|
162
164
|
noMicrophoneAccess: string;
|
|
165
|
+
noMicrophoneAccessBySystem: string;
|
|
163
166
|
noMicrophoneFound: string;
|
|
164
167
|
uploadFailed: string;
|
|
165
168
|
redoRecording: string;
|
|
@@ -216,6 +219,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
216
219
|
delete: string;
|
|
217
220
|
cancel: string;
|
|
218
221
|
noMicrophoneAccess: string;
|
|
222
|
+
noMicrophoneAccessBySystem: string;
|
|
219
223
|
noMicrophoneFound: string;
|
|
220
224
|
uploadFailed: string;
|
|
221
225
|
redoRecording: string;
|
|
@@ -272,6 +276,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
272
276
|
delete: string;
|
|
273
277
|
cancel: string;
|
|
274
278
|
noMicrophoneAccess: string;
|
|
279
|
+
noMicrophoneAccessBySystem: string;
|
|
275
280
|
noMicrophoneFound: string;
|
|
276
281
|
uploadFailed: string;
|
|
277
282
|
redoRecording: string;
|
|
@@ -328,6 +333,7 @@ export declare const LOCALIZATION_CONFIGS: {
|
|
|
328
333
|
delete: string;
|
|
329
334
|
cancel: string;
|
|
330
335
|
noMicrophoneAccess: string;
|
|
336
|
+
noMicrophoneAccessBySystem: string;
|
|
331
337
|
noMicrophoneFound: string;
|
|
332
338
|
uploadFailed: string;
|
|
333
339
|
redoRecording: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/shared/translation/constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/shared/translation/constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhC,CAAA"}
|
|
@@ -49,6 +49,7 @@ export declare const setLocalization: import("effector").EventCallable<{
|
|
|
49
49
|
delete: string;
|
|
50
50
|
cancel: string;
|
|
51
51
|
noMicrophoneAccess: string;
|
|
52
|
+
noMicrophoneAccessBySystem: string;
|
|
52
53
|
noMicrophoneFound: string;
|
|
53
54
|
uploadFailed: string;
|
|
54
55
|
redoRecording: string;
|
|
@@ -105,6 +106,7 @@ export declare const $localization: import("effector").StoreWritable<{
|
|
|
105
106
|
delete: string;
|
|
106
107
|
cancel: string;
|
|
107
108
|
noMicrophoneAccess: string;
|
|
109
|
+
noMicrophoneAccessBySystem: string;
|
|
108
110
|
noMicrophoneFound: string;
|
|
109
111
|
uploadFailed: string;
|
|
110
112
|
redoRecording: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/shared/translation/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../../src/shared/translation/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,YAAY,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAElD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cACD,OAAO,oBAAoB,KAAK,YAAY,EACpE,CAAA;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMzB,CAAA"}
|
package/package.json
CHANGED
|
@@ -16,7 +16,7 @@ export const VoiceRecordTimer = ({
|
|
|
16
16
|
model,
|
|
17
17
|
recordingFileDurationMs,
|
|
18
18
|
}: VoiceRecordTimerProps) => {
|
|
19
|
-
const savedAudioFileDurationMs = useUnit(model
|
|
19
|
+
const savedAudioFileDurationMs = useUnit(model.$currentRecord)?.durationMs || 0
|
|
20
20
|
|
|
21
21
|
const displayDurationMs = recordingFileDurationMs
|
|
22
22
|
? recordingFileDurationMs
|
|
@@ -84,12 +84,8 @@ export const getAudioDurationMs = (
|
|
|
84
84
|
return new Promise((resolve, reject) => {
|
|
85
85
|
const subscription = player.addListener('playbackStatusUpdate', () => {
|
|
86
86
|
console.log('player.duration: ', player.duration)
|
|
87
|
-
|
|
88
|
-
if (
|
|
89
|
-
player.duration !== undefined &&
|
|
90
|
-
player.duration > 0 &&
|
|
91
|
-
Number.isFinite(player.duration)
|
|
92
|
-
) {
|
|
87
|
+
|
|
88
|
+
if (player.duration !== undefined && player.duration > 0) {
|
|
93
89
|
subscription.remove()
|
|
94
90
|
|
|
95
91
|
// player.duration is in seconds (e.g., 1.234567)
|
|
@@ -103,19 +99,6 @@ export const getAudioDurationMs = (
|
|
|
103
99
|
}
|
|
104
100
|
})
|
|
105
101
|
|
|
106
|
-
// Workaround for Chrome returning Infinity: seek to end to force duration calculation
|
|
107
|
-
if (IS_WEB) {
|
|
108
|
-
setTimeout(() => {
|
|
109
|
-
try {
|
|
110
|
-
// Seeking to a large value forces Chrome to calculate the actual duration
|
|
111
|
-
player.seekTo(1e10)
|
|
112
|
-
player.seekTo(0)
|
|
113
|
-
} catch (e) {
|
|
114
|
-
// Ignore seek errors
|
|
115
|
-
}
|
|
116
|
-
}, 100)
|
|
117
|
-
}
|
|
118
|
-
|
|
119
102
|
setTimeout(() => {
|
|
120
103
|
subscription.remove()
|
|
121
104
|
|
|
@@ -1,20 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
useAudioPlayer,
|
|
4
|
-
useAudioRecorder,
|
|
5
|
-
useAudioRecorderState,
|
|
6
|
-
} from 'expo-audio'
|
|
7
|
-
import { addAudioInputsListenerWeb, getAudioDurationMs, getAvailableInputs } from '../helpers'
|
|
1
|
+
import { RecordingPresets, useAudioRecorder, useAudioRecorderState } from 'expo-audio'
|
|
2
|
+
import { addAudioInputsListenerWeb, getAvailableInputs } from '../helpers'
|
|
8
3
|
import { VoiceRecordModel } from '../model/VoiceRecord.model'
|
|
9
4
|
import { useEffect } from 'react'
|
|
10
5
|
import { IS_WEB } from '@magmamath/react-native-ui'
|
|
11
6
|
import { VOICE_RECORDER_MAX_DURATION_MS, VoiceRecorderState } from '../constants'
|
|
12
|
-
import { useUnit } from 'effector-react'
|
|
13
7
|
|
|
14
8
|
export const useVoiceRecorder = (model: VoiceRecordModel) => {
|
|
15
|
-
const player = useAudioPlayer()
|
|
16
|
-
const currentRecord = useUnit(model.$currentRecord)
|
|
17
|
-
|
|
18
9
|
const recorder = useAudioRecorder(RecordingPresets.LOW_QUALITY, model.recordingStatusUpdate)
|
|
19
10
|
const recorderState = useAudioRecorderState(recorder)
|
|
20
11
|
|
|
@@ -43,16 +34,6 @@ export const useVoiceRecorder = (model: VoiceRecordModel) => {
|
|
|
43
34
|
return removeListener
|
|
44
35
|
}, [])
|
|
45
36
|
|
|
46
|
-
useEffect(() => {
|
|
47
|
-
if (currentRecord?.uri) {
|
|
48
|
-
const getDuration = async () => {
|
|
49
|
-
const durationMs = await getAudioDurationMs(currentRecord.uri!, player)
|
|
50
|
-
model.recorderModel.setAudioFileDurationMs(durationMs || 0)
|
|
51
|
-
}
|
|
52
|
-
getDuration()
|
|
53
|
-
}
|
|
54
|
-
}, [currentRecord?.uri])
|
|
55
|
-
|
|
56
37
|
useEffect(() => {
|
|
57
38
|
if (recorderState.isRecording) {
|
|
58
39
|
model.recorderModel.setVoiceRecordState(VoiceRecorderState.RECORDING)
|
|
@@ -15,11 +15,9 @@ export class RecorderModel {
|
|
|
15
15
|
private stopResolver: StopResolver | null = null
|
|
16
16
|
|
|
17
17
|
public readonly reset = createEvent()
|
|
18
|
-
public readonly setAudioFileDurationMs = createEvent<number>()
|
|
19
18
|
public readonly setVoiceRecordState = createEvent<VoiceRecorderState>()
|
|
20
19
|
public readonly setAvailableInputs = createEvent<AvailableAudioInputs>()
|
|
21
20
|
|
|
22
|
-
public readonly $audioFileDurationMs = restore(this.setAudioFileDurationMs, 0).reset(this.reset)
|
|
23
21
|
public readonly $voiceRecordState = restore(
|
|
24
22
|
this.setVoiceRecordState,
|
|
25
23
|
VoiceRecorderState.IDLE,
|
|
@@ -75,7 +75,6 @@ export class VoiceRecordModel {
|
|
|
75
75
|
})
|
|
76
76
|
|
|
77
77
|
public readonly initializeRecording = createEffect(async () => {
|
|
78
|
-
console.log('Initializing new recording')
|
|
79
78
|
this.deleteCurrentRecording({ notification: false })
|
|
80
79
|
|
|
81
80
|
const hasPermissions = await ensureRecordingPermissions()
|
|
@@ -92,7 +91,11 @@ export class VoiceRecordModel {
|
|
|
92
91
|
return
|
|
93
92
|
}
|
|
94
93
|
|
|
95
|
-
return this.recorderModel.start()
|
|
94
|
+
return this.recorderModel.start().catch((error) => {
|
|
95
|
+
if (error.name === 'NotAllowedError') {
|
|
96
|
+
this.notification.error(t('voiceRecorder.noMicrophoneAccessBySystem'))
|
|
97
|
+
}
|
|
98
|
+
})
|
|
96
99
|
})
|
|
97
100
|
|
|
98
101
|
public readonly stopAndDiscard = createEffect(async () => {
|
|
@@ -103,6 +106,7 @@ export class VoiceRecordModel {
|
|
|
103
106
|
})
|
|
104
107
|
|
|
105
108
|
public readonly recordingStatusUpdate = (status: any) => {
|
|
109
|
+
console.log('status: ', status)
|
|
106
110
|
if (status.error) {
|
|
107
111
|
this.notification.error(`Recorder error: ${status.error}`)
|
|
108
112
|
this.recorderModel.clearStopResolver()
|
|
@@ -199,10 +203,6 @@ export class VoiceRecordModel {
|
|
|
199
203
|
}
|
|
200
204
|
|
|
201
205
|
this.setCurrentRecord(recordingItem)
|
|
202
|
-
|
|
203
|
-
if (recordingItem.durationMs) {
|
|
204
|
-
this.recorderModel.setAudioFileDurationMs(recordingItem.durationMs)
|
|
205
|
-
}
|
|
206
206
|
}),
|
|
207
207
|
})
|
|
208
208
|
}
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Löschen",
|
|
48
48
|
"cancel": "Abbrechen",
|
|
49
49
|
"noMicrophoneAccess": "Kein Mikrofon-Zugriff.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Mikrofonzugriff durch Systemeinstellungen verweigert.",
|
|
50
51
|
"noMicrophoneFound": "Kein Mikrofon gefunden.",
|
|
51
52
|
"uploadFailed": "Hochladen fehlgeschlagen. Bitte versuche es erneut.",
|
|
52
53
|
"redoRecording": "Aufnahme erneut aufnehmen?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Delete",
|
|
48
48
|
"cancel": "Cancel",
|
|
49
49
|
"noMicrophoneAccess": "No microphone access.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Microphone access denied by system settings.",
|
|
50
51
|
"noMicrophoneFound": "No microphone found.",
|
|
51
52
|
"uploadFailed": "Upload failed. Please try again.",
|
|
52
53
|
"redoRecording": "Redo recording?",
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
"delete": "Radera",
|
|
48
48
|
"cancel": "Avbryt",
|
|
49
49
|
"noMicrophoneAccess": "Ingen mikrofonåtkomst.",
|
|
50
|
+
"noMicrophoneAccessBySystem": "Mikrofonåtkomst nekad av systeminställningar.",
|
|
50
51
|
"noMicrophoneFound": "Ingen mikrofon hittades.",
|
|
51
52
|
"uploadFailed": "Uppladdning misslyckades. Försök igen.",
|
|
52
53
|
"redoRecording": "Spela in igen?",
|