@magmamath/students-features 0.9.107-rc.12 → 0.9.107-rc.14
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/VoiceRecordDeleteButton.js +1 -0
- package/dist/commonjs/features/voiceRecord/components/VoiceRecordDeleteButton.js.map +1 -1
- package/dist/commonjs/features/voiceRecord/hooks/useVoiceRecorder.js +1 -0
- package/dist/commonjs/features/voiceRecord/hooks/useVoiceRecorder.js.map +1 -1
- package/dist/commonjs/features/voiceRecord/model/Recorder.model.js +17 -1
- package/dist/commonjs/features/voiceRecord/model/Recorder.model.js.map +1 -1
- package/dist/commonjs/features/voiceRecord/model/VoiceRecord.model.js +4 -2
- package/dist/commonjs/features/voiceRecord/model/VoiceRecord.model.js.map +1 -1
- package/dist/commonjs/features/voiceRecord/model/VoiceRecordCollection.js.map +1 -1
- package/dist/module/features/voiceRecord/components/VoiceRecordDeleteButton.js +1 -0
- package/dist/module/features/voiceRecord/components/VoiceRecordDeleteButton.js.map +1 -1
- package/dist/module/features/voiceRecord/hooks/useVoiceRecorder.js +1 -0
- package/dist/module/features/voiceRecord/hooks/useVoiceRecorder.js.map +1 -1
- package/dist/module/features/voiceRecord/model/Recorder.model.js +17 -1
- package/dist/module/features/voiceRecord/model/Recorder.model.js.map +1 -1
- package/dist/module/features/voiceRecord/model/VoiceRecord.model.js +4 -2
- package/dist/module/features/voiceRecord/model/VoiceRecord.model.js.map +1 -1
- package/dist/module/features/voiceRecord/model/VoiceRecordCollection.js.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 +5 -0
- 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 +2 -2
- package/dist/typescript/commonjs/features/voiceRecord/model/VoiceRecord.model.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/voiceRecord/model/VoiceRecordCollection.d.ts +5 -5
- package/dist/typescript/commonjs/features/voiceRecord/model/VoiceRecordCollection.d.ts.map +1 -1
- package/dist/typescript/commonjs/features/voiceRecord/types.d.ts +2 -2
- package/dist/typescript/commonjs/features/voiceRecord/types.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 +5 -0
- 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 +2 -2
- package/dist/typescript/module/features/voiceRecord/model/VoiceRecord.model.d.ts.map +1 -1
- package/dist/typescript/module/features/voiceRecord/model/VoiceRecordCollection.d.ts +5 -5
- package/dist/typescript/module/features/voiceRecord/model/VoiceRecordCollection.d.ts.map +1 -1
- package/dist/typescript/module/features/voiceRecord/types.d.ts +2 -2
- package/dist/typescript/module/features/voiceRecord/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/voiceRecord/components/VoiceRecordDeleteButton.tsx +1 -1
- package/src/features/voiceRecord/hooks/useVoiceRecorder.ts +1 -0
- package/src/features/voiceRecord/model/Recorder.model.ts +23 -2
- package/src/features/voiceRecord/model/VoiceRecord.model.ts +11 -6
- package/src/features/voiceRecord/model/VoiceRecordCollection.ts +4 -4
- package/src/features/voiceRecord/types.ts +3 -3
|
@@ -16,6 +16,7 @@ const VoiceRecordDeleteButton = ({
|
|
|
16
16
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
17
17
|
style: styles.container,
|
|
18
18
|
onPress: onPress,
|
|
19
|
+
disabled: isDisabled,
|
|
19
20
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeUi.TrashcanIcon, {
|
|
20
21
|
size: 20,
|
|
21
22
|
color: isDisabled ? _reactNativeUi.COLORS.NEUTRAL_5 : _reactNativeUi.COLORS.NEUTRAL_9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeUi","_react","_interopRequireDefault","_jsxRuntime","e","__esModule","default","VoiceRecordDeleteButton","onPress","isDisabled","jsx","TouchableOpacity","style","styles","container","children","TrashcanIcon","size","color","COLORS","NEUTRAL_5","NEUTRAL_9","exports","StyleSheet","create","width","height","alignItems","justifyContent"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/components/VoiceRecordDeleteButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAyB,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAOlB,MAAMG,uBAAuB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAAmC,CAAC,KAAK;EAC1F,oBACE,IAAAN,WAAA,CAAAO,GAAA,EAACZ,YAAA,CAAAa,gBAAgB;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAACN,OAAO,EAAEA,OAAQ;IAAAO,QAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeUi","_react","_interopRequireDefault","_jsxRuntime","e","__esModule","default","VoiceRecordDeleteButton","onPress","isDisabled","jsx","TouchableOpacity","style","styles","container","disabled","children","TrashcanIcon","size","color","COLORS","NEUTRAL_5","NEUTRAL_9","exports","StyleSheet","create","width","height","alignItems","justifyContent"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/components/VoiceRecordDeleteButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAyB,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAOlB,MAAMG,uBAAuB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAAmC,CAAC,KAAK;EAC1F,oBACE,IAAAN,WAAA,CAAAO,GAAA,EAACZ,YAAA,CAAAa,gBAAgB;IAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;IAACN,OAAO,EAAEA,OAAQ;IAACO,QAAQ,EAAEN,UAAW;IAAAO,QAAA,eAChF,IAAAb,WAAA,CAAAO,GAAA,EAACV,cAAA,CAAAiB,YAAY;MAACC,IAAI,EAAE,EAAG;MAACC,KAAK,EAAEV,UAAU,GAAGW,qBAAM,CAACC,SAAS,GAAGD,qBAAM,CAACE;IAAU,CAAE;EAAC,CACnE,CAAC;AAEvB,CAAC;AAAAC,OAAA,CAAAhB,uBAAA,GAAAA,uBAAA;AAED,MAAMM,MAAM,GAAGW,uBAAU,CAACC,MAAM,CAAC;EAC/BX,SAAS,EAAE;IACTY,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -16,6 +16,7 @@ const useVoiceRecorder = model => {
|
|
|
16
16
|
const recorder = (0, _expoAudio.useAudioRecorder)(_expoAudio.RecordingPresets.LOW_QUALITY, status => {
|
|
17
17
|
if (status.error) {
|
|
18
18
|
model.notification.error(`Recorder error: ${status.error}`);
|
|
19
|
+
model.recorderModel.clearStopResolver();
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
22
|
if (status.isFinished && status.url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_expoAudio","require","_helpers","_react","_reactNativeUi","_constants","_effectorReact","useVoiceRecorder","model","player","useAudioPlayer","audioFilePath","useUnit","$uri","recorder","useAudioRecorder","RecordingPresets","LOW_QUALITY","status","error","notification","isFinished","url","setUri","recorderState","useAudioRecorderState","useEffect","durationMillis","VOICE_RECORDER_MAX_DURATION_MS","isRecording","
|
|
1
|
+
{"version":3,"names":["_expoAudio","require","_helpers","_react","_reactNativeUi","_constants","_effectorReact","useVoiceRecorder","model","player","useAudioPlayer","audioFilePath","useUnit","$uri","recorder","useAudioRecorder","RecordingPresets","LOW_QUALITY","status","error","notification","recorderModel","clearStopResolver","isFinished","url","setUri","recorderState","useAudioRecorderState","useEffect","durationMillis","VOICE_RECORDER_MAX_DURATION_MS","isRecording","stop","IS_WEB","getAvailableInputs","then","inputs","setAvailableInputs","removeListener","addAudioInputsListenerWeb","devices","getDuration","durationMs","getAudioDurationMs","setAudioFileDurationMs","setVoiceRecordState","VoiceRecorderState","RECORDING","PAUSED","IDLE","reset","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/hooks/useVoiceRecorder.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ const AUDIO_MODE_CONFIG = {
|
|
|
12
12
|
allowsRecording: true
|
|
13
13
|
};
|
|
14
14
|
class RecorderModel {
|
|
15
|
+
stopResolver = null;
|
|
15
16
|
reset = (0, _effector.createEvent)();
|
|
16
17
|
setAudioFileDurationMs = (0, _effector.createEvent)();
|
|
17
18
|
setVoiceRecordState = (0, _effector.createEvent)();
|
|
@@ -29,9 +30,24 @@ class RecorderModel {
|
|
|
29
30
|
throw error;
|
|
30
31
|
}
|
|
31
32
|
});
|
|
32
|
-
stop = (0, _effector.createEffect)(
|
|
33
|
+
stop = (0, _effector.createEffect)(() => {
|
|
33
34
|
return this.recorder.stop();
|
|
34
35
|
});
|
|
36
|
+
stopAndGetCollectionItem() {
|
|
37
|
+
return new Promise(resolve => {
|
|
38
|
+
this.stopResolver = resolve;
|
|
39
|
+
this.recorder.stop();
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
resolveStopWithCollectionItem(item) {
|
|
43
|
+
if (this.stopResolver) {
|
|
44
|
+
this.stopResolver(item);
|
|
45
|
+
this.stopResolver = null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
clearStopResolver() {
|
|
49
|
+
this.stopResolver = null;
|
|
50
|
+
}
|
|
35
51
|
}
|
|
36
52
|
exports.RecorderModel = RecorderModel;
|
|
37
53
|
//# sourceMappingURL=Recorder.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effector","require","_expoAudio","_constants","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","reset","createEvent","setAudioFileDurationMs","setVoiceRecordState","setAvailableInputs","$audioFileDurationMs","restore","$voiceRecordState","VoiceRecorderState","IDLE","$availableInputs","start","createEffect","setAudioModeAsync","recorder","prepareToRecordAsync","record","error","console","stop","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;
|
|
1
|
+
{"version":3,"names":["_effector","require","_expoAudio","_constants","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","stopResolver","reset","createEvent","setAudioFileDurationMs","setVoiceRecordState","setAvailableInputs","$audioFileDurationMs","restore","$voiceRecordState","VoiceRecorderState","IDLE","$availableInputs","start","createEffect","setAudioModeAsync","recorder","prepareToRecordAsync","record","error","console","stop","stopAndGetCollectionItem","Promise","resolve","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,sBAAsB,GAAG,IAAAD,qBAAW,EAAS,CAAC;EAC9CE,mBAAmB,GAAG,IAAAF,qBAAW,EAAqB,CAAC;EACvDG,kBAAkB,GAAG,IAAAH,qBAAW,EAAuB,CAAC;EAExDI,oBAAoB,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACJ,sBAAsB,EAAE,CAAC,CAAC,CAACF,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EAChFO,iBAAiB,GAAG,IAAAD,iBAAO,EACzC,IAAI,CAACH,mBAAmB,EACxBK,6BAAkB,CAACC,IACrB,CAAC,CAACT,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACHU,gBAAgB,GAAG,IAAAJ,iBAAO,EAAC,IAAI,CAACF,kBAAkB,EAAE,EAAE,CAAC;EAEvDO,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,OAAO,IAAI,CAACE,QAAQ,CAACK,IAAI,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEKC,wBAAwBA,CAAA,EAAuC;IACpE,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;MAC9B,IAAI,CAACvB,YAAY,GAAGuB,OAAO;MAC3B,IAAI,CAACR,QAAQ,CAACK,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;EACJ;EAEOI,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":[]}
|
|
@@ -103,12 +103,14 @@ class VoiceRecordModel {
|
|
|
103
103
|
if (error.name === 'CanceledError') return;
|
|
104
104
|
this.notification.error((0, _index.t)('voiceRecorder.uploadFailed'));
|
|
105
105
|
});
|
|
106
|
-
|
|
106
|
+
const collectionItem = {
|
|
107
107
|
durationMs,
|
|
108
108
|
audioUploadPromise,
|
|
109
109
|
controller,
|
|
110
110
|
uri
|
|
111
|
-
}
|
|
111
|
+
};
|
|
112
|
+
this.collection.add(currentKey, collectionItem);
|
|
113
|
+
this.recorderModel.resolveStopWithCollectionItem(collectionItem);
|
|
112
114
|
return audioUploadPromise;
|
|
113
115
|
}
|
|
114
116
|
setupUploadHandler() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_effector","require","_helpers","_index","_RecorderModel","_VoiceRecordCollection","VoiceRecordModel","setCurrentKey","createEvent","setUri","setCurrentRecord","reset","setIsDisabled","$currentKey","restore","$currentRecord","createStore","$uri","$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","constructor","api","events","RecorderModel","VoiceRecordsCollection","setupUploadHandler","setupCurrentRecordSync","id","controller","abort","delete","handleAudioUpload","uri","durationMs","getAudioDurationMs","formData","generateAudioFormData","audioFileUri","uploadAudio","uploadAudioFileRequestGenerator","audioUploadPromise","then","data","update","catch","name","add","sample","clock","filter","fn","target","setAudioFileDurationMs","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecord.model.ts"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAQA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,cAAA,GAAAH,OAAA;AACA,IAAAI,sBAAA,GAAAJ,OAAA;AA0BO,MAAMK,gBAAgB,CAAC;EAOZC,aAAa,GAAG,IAAAC,qBAAW,EAAS,CAAC;EACrCC,MAAM,GAAG,IAAAD,qBAAW,EAAS,CAAC;EAC9BE,gBAAgB,GAAG,IAAAF,qBAAW,EAAM,CAAC;EACrCG,KAAK,GAAG,IAAAH,qBAAW,EAAC,CAAC;EACrBI,aAAa,GAAG,IAAAJ,qBAAW,EAAU,CAAC;EAEtCK,WAAW,GAAG,IAAAC,iBAAO,EAAC,IAAI,CAACP,aAAa,EAAE,EAAE,CAAC;EAC7CQ,cAAc,GAAG,IAAAC,qBAAW,
|
|
1
|
+
{"version":3,"names":["_effector","require","_helpers","_index","_RecorderModel","_VoiceRecordCollection","VoiceRecordModel","setCurrentKey","createEvent","setUri","setCurrentRecord","reset","setIsDisabled","$currentKey","restore","$currentRecord","createStore","$uri","$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","constructor","api","events","RecorderModel","VoiceRecordsCollection","setupUploadHandler","setupCurrentRecordSync","id","controller","abort","delete","handleAudioUpload","uri","durationMs","getAudioDurationMs","formData","generateAudioFormData","audioFileUri","uploadAudio","uploadAudioFileRequestGenerator","audioUploadPromise","then","data","update","catch","name","collectionItem","add","resolveStopWithCollectionItem","sample","clock","filter","fn","target","setAudioFileDurationMs","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecord.model.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VoiceRecordsCollection","collection","Map","add","key","item","set","update","existingItem","get","delete","clear","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecordCollection.ts"],"mappings":";;;;;;AAEO,MAAMA,sBAAsB,CAAC;EAClBC,UAAU,
|
|
1
|
+
{"version":3,"names":["VoiceRecordsCollection","collection","Map","add","key","item","set","update","existingItem","get","delete","clear","exports"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecordCollection.ts"],"mappings":";;;;;;AAEO,MAAMA,sBAAsB,CAAC;EAClBC,UAAU,GAA2C,IAAIC,GAAG,CAAC,CAAC;EAEvEC,GAAGA,CAACC,GAAW,EAAEC,IAA+B,EAAE;IACvD,IAAI,CAACJ,UAAU,CAACK,GAAG,CAACF,GAAG,EAAEC,IAAI,CAAC;EAChC;EAEOE,MAAMA,CAACH,GAAW,EAAEC,IAAwC,EAAE;IACnE,MAAMG,YAAY,GAAG,IAAI,CAACP,UAAU,CAACQ,GAAG,CAACL,GAAG,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAACH,UAAU,CAACK,GAAG,CAACF,GAAG,EAAE;MAAE,GAAGI,YAAY;MAAE,GAAGH;IAAK,CAAC,CAAC;EACxD;EAEOK,MAAMA,CAACN,GAAW,EAAE;IACzB,IAAI,CAACH,UAAU,CAACS,MAAM,CAACN,GAAG,CAAC;EAC7B;EAEOK,GAAGA,CAACL,GAAW,EAAE;IACtB,OAAO,IAAI,CAACH,UAAU,CAACQ,GAAG,CAACL,GAAG,CAAC;EACjC;EAEOO,KAAKA,CAAA,EAAG;IACb,IAAI,CAACV,UAAU,CAACU,KAAK,CAAC,CAAC;EACzB;AACF;AAACC,OAAA,CAAAZ,sBAAA,GAAAA,sBAAA","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ export const VoiceRecordDeleteButton = ({
|
|
|
11
11
|
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
12
12
|
style: styles.container,
|
|
13
13
|
onPress: onPress,
|
|
14
|
+
disabled: isDisabled,
|
|
14
15
|
children: /*#__PURE__*/_jsx(TrashcanIcon, {
|
|
15
16
|
size: 20,
|
|
16
17
|
color: isDisabled ? COLORS.NEUTRAL_5 : COLORS.NEUTRAL_9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","TouchableOpacity","COLORS","TrashcanIcon","React","jsx","_jsx","VoiceRecordDeleteButton","onPress","isDisabled","style","styles","container","children","size","color","NEUTRAL_5","NEUTRAL_9","create","width","height","alignItems","justifyContent"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/components/VoiceRecordDeleteButton.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,gBAAgB,QAAQ,cAAc;AAC3D,SAASC,MAAM,EAAEC,YAAY,QAAQ,4BAA4B;AACjE,OAAOC,KAAK,MAAM,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAOzB,OAAO,MAAMC,uBAAuB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAAmC,CAAC,KAAK;EAC1F,oBACEH,IAAA,CAACL,gBAAgB;IAACS,KAAK,EAAEC,MAAM,CAACC,SAAU;IAACJ,OAAO,EAAEA,OAAQ;IAAAK,QAAA,
|
|
1
|
+
{"version":3,"names":["StyleSheet","TouchableOpacity","COLORS","TrashcanIcon","React","jsx","_jsx","VoiceRecordDeleteButton","onPress","isDisabled","style","styles","container","disabled","children","size","color","NEUTRAL_5","NEUTRAL_9","create","width","height","alignItems","justifyContent"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/components/VoiceRecordDeleteButton.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,gBAAgB,QAAQ,cAAc;AAC3D,SAASC,MAAM,EAAEC,YAAY,QAAQ,4BAA4B;AACjE,OAAOC,KAAK,MAAM,OAAO;AAAA,SAAAC,GAAA,IAAAC,IAAA;AAOzB,OAAO,MAAMC,uBAAuB,GAAGA,CAAC;EAAEC,OAAO;EAAEC;AAAmC,CAAC,KAAK;EAC1F,oBACEH,IAAA,CAACL,gBAAgB;IAACS,KAAK,EAAEC,MAAM,CAACC,SAAU;IAACJ,OAAO,EAAEA,OAAQ;IAACK,QAAQ,EAAEJ,UAAW;IAAAK,QAAA,eAChFR,IAAA,CAACH,YAAY;MAACY,IAAI,EAAE,EAAG;MAACC,KAAK,EAAEP,UAAU,GAAGP,MAAM,CAACe,SAAS,GAAGf,MAAM,CAACgB;IAAU,CAAE;EAAC,CACnE,CAAC;AAEvB,CAAC;AAED,MAAMP,MAAM,GAAGX,UAAU,CAACmB,MAAM,CAAC;EAC/BP,SAAS,EAAE;IACTQ,KAAK,EAAE,EAAE;IACTC,MAAM,EAAE,EAAE;IACVC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ export const useVoiceRecorder = model => {
|
|
|
12
12
|
const recorder = useAudioRecorder(RecordingPresets.LOW_QUALITY, status => {
|
|
13
13
|
if (status.error) {
|
|
14
14
|
model.notification.error(`Recorder error: ${status.error}`);
|
|
15
|
+
model.recorderModel.clearStopResolver();
|
|
15
16
|
return;
|
|
16
17
|
}
|
|
17
18
|
if (status.isFinished && status.url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["RecordingPresets","useAudioPlayer","useAudioRecorder","useAudioRecorderState","addAudioInputsListenerWeb","getAudioDurationMs","getAvailableInputs","useEffect","IS_WEB","VOICE_RECORDER_MAX_DURATION_MS","VoiceRecorderState","useUnit","useVoiceRecorder","model","player","audioFilePath","$uri","recorder","LOW_QUALITY","status","error","notification","isFinished","url","setUri","recorderState","durationMillis","isRecording","
|
|
1
|
+
{"version":3,"names":["RecordingPresets","useAudioPlayer","useAudioRecorder","useAudioRecorderState","addAudioInputsListenerWeb","getAudioDurationMs","getAvailableInputs","useEffect","IS_WEB","VOICE_RECORDER_MAX_DURATION_MS","VoiceRecorderState","useUnit","useVoiceRecorder","model","player","audioFilePath","$uri","recorder","LOW_QUALITY","status","error","notification","recorderModel","clearStopResolver","isFinished","url","setUri","recorderState","durationMillis","isRecording","stop","then","inputs","setAvailableInputs","removeListener","devices","getDuration","durationMs","setAudioFileDurationMs","setVoiceRecordState","RECORDING","PAUSED","IDLE","reset"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/hooks/useVoiceRecorder.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,6 +8,7 @@ const AUDIO_MODE_CONFIG = {
|
|
|
8
8
|
allowsRecording: true
|
|
9
9
|
};
|
|
10
10
|
export class RecorderModel {
|
|
11
|
+
stopResolver = null;
|
|
11
12
|
reset = createEvent();
|
|
12
13
|
setAudioFileDurationMs = createEvent();
|
|
13
14
|
setVoiceRecordState = createEvent();
|
|
@@ -25,8 +26,23 @@ export class RecorderModel {
|
|
|
25
26
|
throw error;
|
|
26
27
|
}
|
|
27
28
|
});
|
|
28
|
-
stop = createEffect(
|
|
29
|
+
stop = createEffect(() => {
|
|
29
30
|
return this.recorder.stop();
|
|
30
31
|
});
|
|
32
|
+
stopAndGetCollectionItem() {
|
|
33
|
+
return new Promise(resolve => {
|
|
34
|
+
this.stopResolver = resolve;
|
|
35
|
+
this.recorder.stop();
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
resolveStopWithCollectionItem(item) {
|
|
39
|
+
if (this.stopResolver) {
|
|
40
|
+
this.stopResolver(item);
|
|
41
|
+
this.stopResolver = null;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
clearStopResolver() {
|
|
45
|
+
this.stopResolver = null;
|
|
46
|
+
}
|
|
31
47
|
}
|
|
32
48
|
//# sourceMappingURL=Recorder.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createEffect","createEvent","restore","setAudioModeAsync","VoiceRecorderState","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","reset","setAudioFileDurationMs","setVoiceRecordState","setAvailableInputs","$audioFileDurationMs","$voiceRecordState","IDLE","$availableInputs","start","recorder","prepareToRecordAsync","record","error","console","stop"],"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;
|
|
1
|
+
{"version":3,"names":["createEffect","createEvent","restore","setAudioModeAsync","VoiceRecorderState","AUDIO_MODE_CONFIG","playsInSilentMode","allowsRecording","RecorderModel","stopResolver","reset","setAudioFileDurationMs","setVoiceRecordState","setAvailableInputs","$audioFileDurationMs","$voiceRecordState","IDLE","$availableInputs","start","recorder","prepareToRecordAsync","record","error","console","stop","stopAndGetCollectionItem","Promise","resolve","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,sBAAsB,GAAGV,WAAW,CAAS,CAAC;EAC9CW,mBAAmB,GAAGX,WAAW,CAAqB,CAAC;EACvDY,kBAAkB,GAAGZ,WAAW,CAAuB,CAAC;EAExDa,oBAAoB,GAAGZ,OAAO,CAAC,IAAI,CAACS,sBAAsB,EAAE,CAAC,CAAC,CAACD,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EAChFK,iBAAiB,GAAGb,OAAO,CACzC,IAAI,CAACU,mBAAmB,EACxBR,kBAAkB,CAACY,IACrB,CAAC,CAACN,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EACHO,gBAAgB,GAAGf,OAAO,CAAC,IAAI,CAACW,kBAAkB,EAAE,EAAE,CAAC;EAEvDK,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,OAAO,IAAI,CAACmB,QAAQ,CAACK,IAAI,CAAC,CAAC;EAC7B,CAAC,CAAC;EAEKC,wBAAwBA,CAAA,EAAuC;IACpE,OAAO,IAAIC,OAAO,CAAEC,OAAO,IAAK;MAC9B,IAAI,CAAClB,YAAY,GAAGkB,OAAO;MAC3B,IAAI,CAACR,QAAQ,CAACK,IAAI,CAAC,CAAC;IACtB,CAAC,CAAC;EACJ;EAEOI,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":[]}
|
|
@@ -99,12 +99,14 @@ export class VoiceRecordModel {
|
|
|
99
99
|
if (error.name === 'CanceledError') return;
|
|
100
100
|
this.notification.error(t('voiceRecorder.uploadFailed'));
|
|
101
101
|
});
|
|
102
|
-
|
|
102
|
+
const collectionItem = {
|
|
103
103
|
durationMs,
|
|
104
104
|
audioUploadPromise,
|
|
105
105
|
controller,
|
|
106
106
|
uri
|
|
107
|
-
}
|
|
107
|
+
};
|
|
108
|
+
this.collection.add(currentKey, collectionItem);
|
|
109
|
+
this.recorderModel.resolveStopWithCollectionItem(collectionItem);
|
|
108
110
|
return audioUploadPromise;
|
|
109
111
|
}
|
|
110
112
|
setupUploadHandler() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["attach","createEffect","createEvent","createStore","restore","sample","ensureRecordingPermissions","generateAudioFormData","getAudioDurationMs","getAvailableInputs","uploadAudioFileRequestGenerator","t","RecorderModel","VoiceRecordsCollection","VoiceRecordModel","setCurrentKey","setUri","setCurrentRecord","reset","setIsDisabled","$currentKey","$currentRecord","$uri","$isDisabled","deleteCurrentRecording","source","mapParams","props","currentKey","notification","effect","recordingItem","collection","get","abortUploadIfInProgress","resetRecordingState","info","initializeRecording","hasPermissions","error","inputs","recorderModel","recorder","setAvailableInputs","length","start","constructor","api","events","setupUploadHandler","setupCurrentRecordSync","id","controller","abort","delete","handleAudioUpload","uri","durationMs","formData","audioFileUri","uploadAudio","audioUploadPromise","then","data","update","catch","name","add","clock","filter","fn","target","setAudioFileDurationMs"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecord.model.ts"],"mappings":";;AAAA,SAASA,MAAM,
|
|
1
|
+
{"version":3,"names":["attach","createEffect","createEvent","createStore","restore","sample","ensureRecordingPermissions","generateAudioFormData","getAudioDurationMs","getAvailableInputs","uploadAudioFileRequestGenerator","t","RecorderModel","VoiceRecordsCollection","VoiceRecordModel","setCurrentKey","setUri","setCurrentRecord","reset","setIsDisabled","$currentKey","$currentRecord","$uri","$isDisabled","deleteCurrentRecording","source","mapParams","props","currentKey","notification","effect","recordingItem","collection","get","abortUploadIfInProgress","resetRecordingState","info","initializeRecording","hasPermissions","error","inputs","recorderModel","recorder","setAvailableInputs","length","start","constructor","api","events","setupUploadHandler","setupCurrentRecordSync","id","controller","abort","delete","handleAudioUpload","uri","durationMs","formData","audioFileUri","uploadAudio","audioUploadPromise","then","data","update","catch","name","collectionItem","add","resolveStopWithCollectionItem","clock","filter","fn","target","setAudioFileDurationMs"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecord.model.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,YAAY,EAAEC,WAAW,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;EAOZC,aAAa,GAAGb,WAAW,CAAS,CAAC;EACrCc,MAAM,GAAGd,WAAW,CAAS,CAAC;EAC9Be,gBAAgB,GAAGf,WAAW,CAAM,CAAC;EACrCgB,KAAK,GAAGhB,WAAW,CAAC,CAAC;EACrBiB,aAAa,GAAGjB,WAAW,CAAU,CAAC;EAEtCkB,WAAW,GAAGhB,OAAO,CAAC,IAAI,CAACW,aAAa,EAAE,EAAE,CAAC;EAC7CM,cAAc,GAAGlB,WAAW,CAAmC,IAAI,CAAC,CAACe,KAAK,CACxF,IAAI,CAACA,KACP,CAAC;EACeI,IAAI,GAAGlB,OAAO,CAAC,IAAI,CAACY,MAAM,EAAE,EAAE,CAAC,CAACE,KAAK,CAAC,IAAI,CAACA,KAAK,CAAC;EAEjDK,WAAW,GAAGnB,OAAO,CAAC,IAAI,CAACe,aAAa,EAAE,KAAK,CAAC;EAEhDK,sBAAsB,GAAGxB,MAAM,CAAC;IAC9CyB,MAAM,EAAE,IAAI,CAACL,WAAW;IACxBM,SAAS,EAAEA,CAACC,KAAyC,EAAEC,UAAU,MAAM;MACrEC,YAAY,EAAE,IAAI;MAClB,GAAGF,KAAK;MACRC;IACF,CAAC,CAAC;IACFE,MAAM,EAAE7B,YAAY,CAAC,CAAC;MAAE2B,UAAU;MAAEC;IAA2C,CAAC,KAAK;MACnF,MAAME,aAAa,GAAG,IAAI,CAACC,UAAU,CAACC,GAAG,CAACL,UAAU,CAAC;MAErD,IAAI,CAACM,uBAAuB,CAACH,aAAa,CAAC;MAC3C,IAAI,CAACI,mBAAmB,CAACP,UAAU,CAAC;MAEpC,IAAIC,YAAY,EAAE;QAChB,IAAI,CAACA,YAAY,CAACO,IAAI,CAACzB,CAAC,CAAC,gCAAgC,CAAC,CAAC;MAC7D;IACF,CAAC;EACH,CAAC,CAAC;EAEc0B,mBAAmB,GAAGpC,YAAY,CAAC,YAAY;IAC7D,IAAI,CAACuB,sBAAsB,CAAC;MAAEK,YAAY,EAAE;IAAM,CAAC,CAAC;IAEpD,MAAMS,cAAc,GAAG,MAAMhC,0BAA0B,CAAC,CAAC;IACzD,IAAI,CAACgC,cAAc,EAAE;MACnB,IAAI,CAACT,YAAY,CAACU,KAAK,CAAC5B,CAAC,CAAC,kCAAkC,CAAC,CAAC;MAC9D;IACF;IAEA,MAAM6B,MAAM,GAAG,MAAM/B,kBAAkB,CAAC,IAAI,CAACgC,aAAa,CAACC,QAAQ,CAAC;IACpE,IAAI,CAACD,aAAa,CAACE,kBAAkB,CAACH,MAAM,CAAC;IAE7C,IAAIA,MAAM,CAACI,MAAM,KAAK,CAAC,EAAE;MACvB,IAAI,CAACf,YAAY,CAACU,KAAK,CAAC5B,CAAC,CAAC,iCAAiC,CAAC,CAAC;MAC7D;IACF;IAEA,OAAO,IAAI,CAAC8B,aAAa,CAACI,KAAK,CAAC,CAAC;EACnC,CAAC,CAAC;EAEFC,WAAWA,CAAC;IAAEC,GAAG;IAAElB,YAAY;IAAEmB;EAA+B,CAAC,EAAE;IACjE,IAAI,CAACD,GAAG,GAAGA,GAAG;IACd,IAAI,CAAClB,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACmB,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACP,aAAa,GAAG,IAAI7B,aAAa,CAAC,CAAC;IACxC,IAAI,CAACoB,UAAU,GAAG,IAAInB,sBAAsB,CAAC,CAAC;IAE9C,IAAI,CAACoC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAACC,sBAAsB,CAAC,CAAC;EAC/B;EAEQhB,uBAAuBA,CAACH,aAAwD,EAAE;IACxF,IAAI,CAACA,aAAa,EAAEoB,EAAE,IAAIpB,aAAa,EAAEqB,UAAU,EAAE;MACnDrB,aAAa,CAACqB,UAAU,CAACC,KAAK,CAAC,CAAC;IAClC;EACF;EAEQlB,mBAAmBA,CAACP,UAAkB,EAAE;IAC9C,IAAI,CAACa,aAAa,CAACvB,KAAK,CAAC,CAAC;IAC1B,IAAI,CAACA,KAAK,CAAC,CAAC;IACZ,IAAI,CAACc,UAAU,CAACsB,MAAM,CAAC1B,UAAU,CAAC;EACpC;EAEA,MAAc2B,iBAAiBA,CAAC;IAAEC,GAAG;IAAE5B;EAAyB,CAAC,EAAE;IACjE,MAAM6B,UAAU,GAAG,MAAMjD,kBAAkB,CAACgD,GAAG,CAAC;IAChD,MAAME,QAAQ,GAAG,MAAMnD,qBAAqB,CAAC;MAAEoD,YAAY,EAAEH,GAAG;MAAEC;IAAW,CAAC,CAAC;IAC/E,MAAM;MAAEG,WAAW;MAAER;IAAW,CAAC,GAAG1C,+BAA+B,CAACgD,QAAQ,EAAE,IAAI,CAACX,GAAG,CAAC;IAEvF,MAAMc,kBAAkB,GAAGD,WAAW,CAAC,CAAC,CACrCE,IAAI,CAAEC,IAAI,IAAK;MACd;MACA,IAAI,IAAI,CAAC/B,UAAU,CAACC,GAAG,CAACL,UAAU,CAAC,EAAE;QACnC,IAAI,CAACI,UAAU,CAACgC,MAAM,CAACpC,UAAU,EAAE;UAAEuB,EAAE,EAAEY,IAAI,CAACZ;QAAG,CAAC,CAAC;MACrD;MACA,OAAOY,IAAI;IACb,CAAC,CAAC,CACDE,KAAK,CAAE1B,KAAK,IAAK;MAChB,IAAIA,KAAK,CAAC2B,IAAI,KAAK,eAAe,EAAE;MACpC,IAAI,CAACrC,YAAY,CAACU,KAAK,CAAC5B,CAAC,CAAC,4BAA4B,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEJ,MAAMwD,cAAyC,GAAG;MAChDV,UAAU;MACVI,kBAAkB;MAClBT,UAAU;MACVI;IACF,CAAC;IAED,IAAI,CAACxB,UAAU,CAACoC,GAAG,CAACxC,UAAU,EAAEuC,cAAc,CAAC;IAC/C,IAAI,CAAC1B,aAAa,CAAC4B,6BAA6B,CAACF,cAAc,CAAC;IAEhE,OAAON,kBAAkB;EAC3B;EAEQZ,kBAAkBA,CAAA,EAAG;IAC3B5C,MAAM,CAAC;MACLiE,KAAK,EAAE,IAAI,CAACtD,MAAM;MAClBS,MAAM,EAAE,IAAI,CAACL,WAAW;MACxBmD,MAAM,EAAEA,CAAC3C,UAAU,EAAE4B,GAAG,KAAK,CAAC,CAACA,GAAG,IAAI,CAAC,CAAC5B,UAAU;MAClD4C,EAAE,EAAEA,CAAC5C,UAAU,EAAE4B,GAAG,MAAM;QAAE5B,UAAU;QAAE4B;MAAI,CAAC,CAAC;MAC9CiB,MAAM,EAAExE,YAAY,CAAC,CAAC;QAAEuD,GAAG;QAAE5B;MAAyB,CAAC,KACrD,IAAI,CAAC2B,iBAAiB,CAAC;QAAEC,GAAG;QAAE5B;MAAW,CAAC,CAC5C;IACF,CAAC,CAAC;EACJ;EAEQsB,sBAAsBA,CAAA,EAAG;IAC/B7C,MAAM,CAAC;MACLoB,MAAM,EAAE,IAAI,CAACL,WAAW;MACxBoD,EAAE,EAAG5C,UAAU,IAAK,IAAI,CAACI,UAAU,CAACC,GAAG,CAACL,UAAU,CAAC;MACnD6C,MAAM,EAAExE,YAAY,CAAE8B,aAAyC,IAAK;QAClE,IAAI,CAACA,aAAa,EAAE;UAClB,IAAI,CAACb,KAAK,CAAC,CAAC;UACZ;QACF;QAEA,IAAI,CAACD,gBAAgB,CAACc,aAAa,CAAC;QAEpC,IAAIA,aAAa,CAAC0B,UAAU,EAAE;UAC5B,IAAI,CAAChB,aAAa,CAACiC,sBAAsB,CAAC3C,aAAa,CAAC0B,UAAU,CAAC;QACrE;QAEA,IAAI1B,aAAa,CAACyB,GAAG,EAAE;UACrB,IAAI,CAACxC,MAAM,CAACe,aAAa,CAACyB,GAAG,CAAC;QAChC;MACF,CAAC;IACH,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["VoiceRecordsCollection","collection","Map","add","key","item","set","update","existingItem","get","delete","clear"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecordCollection.ts"],"mappings":";;AAEA,OAAO,MAAMA,sBAAsB,CAAC;EAClBC,UAAU,
|
|
1
|
+
{"version":3,"names":["VoiceRecordsCollection","collection","Map","add","key","item","set","update","existingItem","get","delete","clear"],"sourceRoot":"../../../../../src","sources":["features/voiceRecord/model/VoiceRecordCollection.ts"],"mappings":";;AAEA,OAAO,MAAMA,sBAAsB,CAAC;EAClBC,UAAU,GAA2C,IAAIC,GAAG,CAAC,CAAC;EAEvEC,GAAGA,CAACC,GAAW,EAAEC,IAA+B,EAAE;IACvD,IAAI,CAACJ,UAAU,CAACK,GAAG,CAACF,GAAG,EAAEC,IAAI,CAAC;EAChC;EAEOE,MAAMA,CAACH,GAAW,EAAEC,IAAwC,EAAE;IACnE,MAAMG,YAAY,GAAG,IAAI,CAACP,UAAU,CAACQ,GAAG,CAACL,GAAG,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAACH,UAAU,CAACK,GAAG,CAACF,GAAG,EAAE;MAAE,GAAGI,YAAY;MAAE,GAAGH;IAAK,CAAC,CAAC;EACxD;EAEOK,MAAMA,CAACN,GAAW,EAAE;IACzB,IAAI,CAACH,UAAU,CAACS,MAAM,CAACN,GAAG,CAAC;EAC7B;EAEOK,GAAGA,CAACL,GAAW,EAAE;IACtB,OAAO,IAAI,CAACH,UAAU,CAACQ,GAAG,CAACL,GAAG,CAAC;EACjC;EAEOO,KAAKA,CAAA,EAAG;IACb,IAAI,CAACV,UAAU,CAACU,KAAK,CAAC,CAAC;EACzB;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAM7D,eAAO,MAAM,gBAAgB,UAAW,gBAAgB;;
|
|
1
|
+
{"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAM7D,eAAO,MAAM,gBAAgB,UAAW,gBAAgB;;CAwEvD,CAAA"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AudioRecorder } from 'expo-audio';
|
|
2
2
|
import { VoiceRecorderState } from '../constants';
|
|
3
|
+
import { VoiceRecordCollectionItem } from '../types';
|
|
3
4
|
export declare class RecorderModel {
|
|
4
5
|
recorder: AudioRecorder;
|
|
6
|
+
private stopResolver;
|
|
5
7
|
readonly reset: import("effector").EventCallable<void>;
|
|
6
8
|
readonly setAudioFileDurationMs: import("effector").EventCallable<number>;
|
|
7
9
|
readonly setVoiceRecordState: import("effector").EventCallable<VoiceRecorderState>;
|
|
@@ -11,5 +13,8 @@ export declare class RecorderModel {
|
|
|
11
13
|
readonly $availableInputs: import("effector").StoreWritable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
|
|
12
14
|
readonly start: import("effector").Effect<void, void, Error>;
|
|
13
15
|
readonly stop: import("effector").Effect<void, void, Error>;
|
|
16
|
+
stopAndGetCollectionItem(): Promise<VoiceRecordCollectionItem>;
|
|
17
|
+
resolveStopWithCollectionItem(item: VoiceRecordCollectionItem): void;
|
|
18
|
+
clearStopResolver(): void;
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=Recorder.model.d.ts.map
|
|
@@ -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;
|
|
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,sBAAsB,2CAAwB;IAC9D,SAAgB,mBAAmB,uDAAoC;IACvE,SAAgB,kBAAkB,8FAAsC;IAExE,SAAgB,oBAAoB,2CAA4D;IAChG,SAAgB,iBAAiB,uDAGd;IACnB,SAAgB,gBAAgB,8FAAuC;IAEvE,SAAgB,KAAK,+CASnB;IAEF,SAAgB,IAAI,+CAElB;IAEK,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAO9D,6BAA6B,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI;IAOpE,iBAAiB,IAAI,IAAI;CAGjC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AudioApi, VoiceRecordNotificationTypes,
|
|
1
|
+
import { AudioApi, VoiceRecordNotificationTypes, VoiceRecordCollectionItem } from '../types';
|
|
2
2
|
import { RecorderModel } from './Recorder.model';
|
|
3
3
|
import { VoiceRecordsCollection } from './VoiceRecordCollection';
|
|
4
4
|
type VoiceRecordModelParams = {
|
|
@@ -25,7 +25,7 @@ export declare class VoiceRecordModel {
|
|
|
25
25
|
readonly reset: import("effector").EventCallable<void>;
|
|
26
26
|
readonly setIsDisabled: import("effector").EventCallable<boolean>;
|
|
27
27
|
readonly $currentKey: import("effector").StoreWritable<string>;
|
|
28
|
-
readonly $currentRecord: import("effector").StoreWritable<
|
|
28
|
+
readonly $currentRecord: import("effector").StoreWritable<VoiceRecordCollectionItem | null>;
|
|
29
29
|
readonly $uri: import("effector").StoreWritable<string>;
|
|
30
30
|
readonly $isDisabled: import("effector").StoreWritable<boolean>;
|
|
31
31
|
readonly deleteCurrentRecording: import("effector").Effect<void | DeleteCurrentRecordingProps, void, Error>;
|
|
@@ -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,EAAE,
|
|
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,EAAE,yBAAyB,EAAE,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;IAEzC,SAAgB,aAAa,2CAAwB;IACrD,SAAgB,MAAM,2CAAwB;IAC9C,SAAgB,gBAAgB,wCAAqB;IACrD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,aAAa,4CAAyB;IAEtD,SAAgB,WAAW,2CAAkC;IAC7D,SAAgB,cAAc,qEAE7B;IACD,SAAgB,IAAI,2CAA6C;IAEjE,SAAgB,WAAW,4CAAqC;IAEhE,SAAgB,sBAAsB,6EAiBpC;IAEF,SAAgB,mBAAmB,+CAkBjC;gBAEU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,sBAAsB;IAWjE,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,mBAAmB;YAMb,iBAAiB;IA+B/B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;CAsB/B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VoiceRecordCollectionItem } from '../types';
|
|
2
2
|
export declare class VoiceRecordsCollection {
|
|
3
|
-
readonly collection: Map<string,
|
|
4
|
-
add(key: string, item:
|
|
5
|
-
update(key: string, item: Partial<
|
|
3
|
+
readonly collection: Map<string, VoiceRecordCollectionItem>;
|
|
4
|
+
add(key: string, item: VoiceRecordCollectionItem): void;
|
|
5
|
+
update(key: string, item: Partial<VoiceRecordCollectionItem>): void;
|
|
6
6
|
delete(key: string): void;
|
|
7
|
-
get(key: string):
|
|
7
|
+
get(key: string): VoiceRecordCollectionItem | undefined;
|
|
8
8
|
clear(): void;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=VoiceRecordCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceRecordCollection.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/VoiceRecordCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"VoiceRecordCollection.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/VoiceRecordCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAEpD,qBAAa,sBAAsB;IACjC,SAAgB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAY;IAEvE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB;IAIhD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,yBAAyB,CAAC;IAK5D,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,KAAK;CAGb"}
|
|
@@ -21,7 +21,7 @@ export type AudioApi = {
|
|
|
21
21
|
uploadAudioFile: (data: UploadAudioPayload) => Promise<UploadAudioResponse>;
|
|
22
22
|
getAudioFileTranscript: (audioFileId: string) => Promise<AudioTranscriptResponse>;
|
|
23
23
|
};
|
|
24
|
-
export type
|
|
24
|
+
export type VoiceRecordCollectionItem = {
|
|
25
25
|
solutionId?: string;
|
|
26
26
|
id?: string;
|
|
27
27
|
durationMs?: number;
|
|
@@ -30,7 +30,7 @@ export type VoiceRecordStackItem = {
|
|
|
30
30
|
controller?: AbortController;
|
|
31
31
|
};
|
|
32
32
|
export type VoiceRecordStack = {
|
|
33
|
-
[problemId: string]:
|
|
33
|
+
[problemId: string]: VoiceRecordCollectionItem;
|
|
34
34
|
};
|
|
35
35
|
export type AvailableAudioInputs = Awaited<ReturnType<typeof getAvailableInputs>>;
|
|
36
36
|
export type VoiceRecordDeleteModalParams = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/voiceRecord/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;IAC/C,iBAAiB,EAAE,QAAQ,CAAA;CAC5B,CAAC,CAAA;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AACD,KAAK,mBAAmB,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC3E,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAClF,CAAA;AAED,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/voiceRecord/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;IAC/C,iBAAiB,EAAE,QAAQ,CAAA;CAC5B,CAAC,CAAA;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AACD,KAAK,mBAAmB,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC3E,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAClF,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC,CAAA;IACxD,UAAU,CAAC,EAAE,eAAe,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAA;AAEjF,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE,gBAAgB,CAAA;CACxB,CAAA;AACD,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,gBAAgB,CAAA;CACxB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAM7D,eAAO,MAAM,gBAAgB,UAAW,gBAAgB;;
|
|
1
|
+
{"version":3,"file":"useVoiceRecorder.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/hooks/useVoiceRecorder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAM7D,eAAO,MAAM,gBAAgB,UAAW,gBAAgB;;CAwEvD,CAAA"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { AudioRecorder } from 'expo-audio';
|
|
2
2
|
import { VoiceRecorderState } from '../constants';
|
|
3
|
+
import { VoiceRecordCollectionItem } from '../types';
|
|
3
4
|
export declare class RecorderModel {
|
|
4
5
|
recorder: AudioRecorder;
|
|
6
|
+
private stopResolver;
|
|
5
7
|
readonly reset: import("effector").EventCallable<void>;
|
|
6
8
|
readonly setAudioFileDurationMs: import("effector").EventCallable<number>;
|
|
7
9
|
readonly setVoiceRecordState: import("effector").EventCallable<VoiceRecorderState>;
|
|
@@ -11,5 +13,8 @@ export declare class RecorderModel {
|
|
|
11
13
|
readonly $availableInputs: import("effector").StoreWritable<MediaDeviceInfo[] | import("expo-audio").RecordingInput[]>;
|
|
12
14
|
readonly start: import("effector").Effect<void, void, Error>;
|
|
13
15
|
readonly stop: import("effector").Effect<void, void, Error>;
|
|
16
|
+
stopAndGetCollectionItem(): Promise<VoiceRecordCollectionItem>;
|
|
17
|
+
resolveStopWithCollectionItem(item: VoiceRecordCollectionItem): void;
|
|
18
|
+
clearStopResolver(): void;
|
|
14
19
|
}
|
|
15
20
|
//# sourceMappingURL=Recorder.model.d.ts.map
|
|
@@ -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;
|
|
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,sBAAsB,2CAAwB;IAC9D,SAAgB,mBAAmB,uDAAoC;IACvE,SAAgB,kBAAkB,8FAAsC;IAExE,SAAgB,oBAAoB,2CAA4D;IAChG,SAAgB,iBAAiB,uDAGd;IACnB,SAAgB,gBAAgB,8FAAuC;IAEvE,SAAgB,KAAK,+CASnB;IAEF,SAAgB,IAAI,+CAElB;IAEK,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IAO9D,6BAA6B,CAAC,IAAI,EAAE,yBAAyB,GAAG,IAAI;IAOpE,iBAAiB,IAAI,IAAI;CAGjC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AudioApi, VoiceRecordNotificationTypes,
|
|
1
|
+
import { AudioApi, VoiceRecordNotificationTypes, VoiceRecordCollectionItem } from '../types';
|
|
2
2
|
import { RecorderModel } from './Recorder.model';
|
|
3
3
|
import { VoiceRecordsCollection } from './VoiceRecordCollection';
|
|
4
4
|
type VoiceRecordModelParams = {
|
|
@@ -25,7 +25,7 @@ export declare class VoiceRecordModel {
|
|
|
25
25
|
readonly reset: import("effector").EventCallable<void>;
|
|
26
26
|
readonly setIsDisabled: import("effector").EventCallable<boolean>;
|
|
27
27
|
readonly $currentKey: import("effector").StoreWritable<string>;
|
|
28
|
-
readonly $currentRecord: import("effector").StoreWritable<
|
|
28
|
+
readonly $currentRecord: import("effector").StoreWritable<VoiceRecordCollectionItem | null>;
|
|
29
29
|
readonly $uri: import("effector").StoreWritable<string>;
|
|
30
30
|
readonly $isDisabled: import("effector").StoreWritable<boolean>;
|
|
31
31
|
readonly deleteCurrentRecording: import("effector").Effect<void | DeleteCurrentRecordingProps, void, Error>;
|
|
@@ -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,EAAE,
|
|
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,EAAE,yBAAyB,EAAE,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;IAEzC,SAAgB,aAAa,2CAAwB;IACrD,SAAgB,MAAM,2CAAwB;IAC9C,SAAgB,gBAAgB,wCAAqB;IACrD,SAAgB,KAAK,yCAAgB;IACrC,SAAgB,aAAa,4CAAyB;IAEtD,SAAgB,WAAW,2CAAkC;IAC7D,SAAgB,cAAc,qEAE7B;IACD,SAAgB,IAAI,2CAA6C;IAEjE,SAAgB,WAAW,4CAAqC;IAEhE,SAAgB,sBAAsB,6EAiBpC;IAEF,SAAgB,mBAAmB,+CAkBjC;gBAEU,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,sBAAsB;IAWjE,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,mBAAmB;YAMb,iBAAiB;IA+B/B,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,sBAAsB;CAsB/B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VoiceRecordCollectionItem } from '../types';
|
|
2
2
|
export declare class VoiceRecordsCollection {
|
|
3
|
-
readonly collection: Map<string,
|
|
4
|
-
add(key: string, item:
|
|
5
|
-
update(key: string, item: Partial<
|
|
3
|
+
readonly collection: Map<string, VoiceRecordCollectionItem>;
|
|
4
|
+
add(key: string, item: VoiceRecordCollectionItem): void;
|
|
5
|
+
update(key: string, item: Partial<VoiceRecordCollectionItem>): void;
|
|
6
6
|
delete(key: string): void;
|
|
7
|
-
get(key: string):
|
|
7
|
+
get(key: string): VoiceRecordCollectionItem | undefined;
|
|
8
8
|
clear(): void;
|
|
9
9
|
}
|
|
10
10
|
//# sourceMappingURL=VoiceRecordCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VoiceRecordCollection.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/VoiceRecordCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"VoiceRecordCollection.d.ts","sourceRoot":"","sources":["../../../../../../src/features/voiceRecord/model/VoiceRecordCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAEpD,qBAAa,sBAAsB;IACjC,SAAgB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAY;IAEvE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB;IAIhD,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,yBAAyB,CAAC;IAK5D,MAAM,CAAC,GAAG,EAAE,MAAM;IAIlB,GAAG,CAAC,GAAG,EAAE,MAAM;IAIf,KAAK;CAGb"}
|
|
@@ -21,7 +21,7 @@ export type AudioApi = {
|
|
|
21
21
|
uploadAudioFile: (data: UploadAudioPayload) => Promise<UploadAudioResponse>;
|
|
22
22
|
getAudioFileTranscript: (audioFileId: string) => Promise<AudioTranscriptResponse>;
|
|
23
23
|
};
|
|
24
|
-
export type
|
|
24
|
+
export type VoiceRecordCollectionItem = {
|
|
25
25
|
solutionId?: string;
|
|
26
26
|
id?: string;
|
|
27
27
|
durationMs?: number;
|
|
@@ -30,7 +30,7 @@ export type VoiceRecordStackItem = {
|
|
|
30
30
|
controller?: AbortController;
|
|
31
31
|
};
|
|
32
32
|
export type VoiceRecordStack = {
|
|
33
|
-
[problemId: string]:
|
|
33
|
+
[problemId: string]: VoiceRecordCollectionItem;
|
|
34
34
|
};
|
|
35
35
|
export type AvailableAudioInputs = Awaited<ReturnType<typeof getAvailableInputs>>;
|
|
36
36
|
export type VoiceRecordDeleteModalParams = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/voiceRecord/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;IAC/C,iBAAiB,EAAE,QAAQ,CAAA;CAC5B,CAAC,CAAA;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AACD,KAAK,mBAAmB,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC3E,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAClF,CAAA;AAED,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/features/voiceRecord/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC;IAC/C,iBAAiB,EAAE,QAAQ,CAAA;CAC5B,CAAC,CAAA;AAEF,KAAK,uBAAuB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AACD,KAAK,mBAAmB,GAAG;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC3E,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;CAClF,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kBAAkB,CAAC,EAAE,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC,CAAA;IACxD,UAAU,CAAC,EAAE,eAAe,CAAA;CAC7B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAAA;CAC/C,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAA;AAEjF,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE,gBAAgB,CAAA;CACxB,CAAA;AACD,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,gBAAgB,CAAA;CACxB,CAAA"}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@ type VoiceRecordDeleteProps = {
|
|
|
9
9
|
|
|
10
10
|
export const VoiceRecordDeleteButton = ({ onPress, isDisabled }: VoiceRecordDeleteProps) => {
|
|
11
11
|
return (
|
|
12
|
-
<TouchableOpacity style={styles.container} onPress={onPress}>
|
|
12
|
+
<TouchableOpacity style={styles.container} onPress={onPress} disabled={isDisabled}>
|
|
13
13
|
<TrashcanIcon size={20} color={isDisabled ? COLORS.NEUTRAL_5 : COLORS.NEUTRAL_9} />
|
|
14
14
|
</TouchableOpacity>
|
|
15
15
|
)
|
|
@@ -18,6 +18,7 @@ export const useVoiceRecorder = (model: VoiceRecordModel) => {
|
|
|
18
18
|
const recorder = useAudioRecorder(RecordingPresets.LOW_QUALITY, (status) => {
|
|
19
19
|
if (status.error) {
|
|
20
20
|
model.notification.error(`Recorder error: ${status.error}`)
|
|
21
|
+
model.recorderModel.clearStopResolver()
|
|
21
22
|
return
|
|
22
23
|
}
|
|
23
24
|
if (status.isFinished && status.url) {
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { createEffect, createEvent, restore } from 'effector'
|
|
2
2
|
import { AudioRecorder, setAudioModeAsync } from 'expo-audio'
|
|
3
3
|
import { VoiceRecorderState } from '../constants'
|
|
4
|
-
import { AvailableAudioInputs } from '../types'
|
|
4
|
+
import { AvailableAudioInputs, VoiceRecordCollectionItem } from '../types'
|
|
5
5
|
|
|
6
6
|
const AUDIO_MODE_CONFIG = {
|
|
7
7
|
playsInSilentMode: true,
|
|
8
8
|
allowsRecording: true,
|
|
9
9
|
} as const
|
|
10
10
|
|
|
11
|
+
type StopResolver = (item: VoiceRecordCollectionItem) => void
|
|
12
|
+
|
|
11
13
|
export class RecorderModel {
|
|
12
14
|
public recorder!: AudioRecorder
|
|
15
|
+
private stopResolver: StopResolver | null = null
|
|
13
16
|
|
|
14
17
|
public readonly reset = createEvent()
|
|
15
18
|
public readonly setAudioFileDurationMs = createEvent<number>()
|
|
@@ -34,7 +37,25 @@ export class RecorderModel {
|
|
|
34
37
|
}
|
|
35
38
|
})
|
|
36
39
|
|
|
37
|
-
public readonly stop = createEffect(
|
|
40
|
+
public readonly stop = createEffect(() => {
|
|
38
41
|
return this.recorder.stop()
|
|
39
42
|
})
|
|
43
|
+
|
|
44
|
+
public stopAndGetCollectionItem(): Promise<VoiceRecordCollectionItem> {
|
|
45
|
+
return new Promise((resolve) => {
|
|
46
|
+
this.stopResolver = resolve
|
|
47
|
+
this.recorder.stop()
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public resolveStopWithCollectionItem(item: VoiceRecordCollectionItem): void {
|
|
52
|
+
if (this.stopResolver) {
|
|
53
|
+
this.stopResolver(item)
|
|
54
|
+
this.stopResolver = null
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public clearStopResolver(): void {
|
|
59
|
+
this.stopResolver = null
|
|
60
|
+
}
|
|
40
61
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { attach,
|
|
1
|
+
import { attach, createEffect, createEvent, createStore, restore, sample } from 'effector'
|
|
2
2
|
import {
|
|
3
3
|
ensureRecordingPermissions,
|
|
4
4
|
generateAudioFormData,
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
getAvailableInputs,
|
|
7
7
|
uploadAudioFileRequestGenerator,
|
|
8
8
|
} from '../helpers'
|
|
9
|
-
import { AudioApi, VoiceRecordNotificationTypes,
|
|
9
|
+
import { AudioApi, VoiceRecordNotificationTypes, VoiceRecordCollectionItem } from '../types'
|
|
10
10
|
import { t } from '../../../shared/translation'
|
|
11
11
|
import { RecorderModel } from './Recorder.model'
|
|
12
12
|
import { VoiceRecordsCollection } from './VoiceRecordCollection'
|
|
@@ -49,7 +49,9 @@ export class VoiceRecordModel {
|
|
|
49
49
|
public readonly setIsDisabled = createEvent<boolean>()
|
|
50
50
|
|
|
51
51
|
public readonly $currentKey = restore(this.setCurrentKey, '')
|
|
52
|
-
public readonly $currentRecord = createStore<
|
|
52
|
+
public readonly $currentRecord = createStore<VoiceRecordCollectionItem | null>(null).reset(
|
|
53
|
+
this.reset,
|
|
54
|
+
)
|
|
53
55
|
public readonly $uri = restore(this.setUri, '').reset(this.reset)
|
|
54
56
|
|
|
55
57
|
public readonly $isDisabled = restore(this.setIsDisabled, false)
|
|
@@ -134,12 +136,15 @@ export class VoiceRecordModel {
|
|
|
134
136
|
this.notification.error(t('voiceRecorder.uploadFailed'))
|
|
135
137
|
})
|
|
136
138
|
|
|
137
|
-
|
|
139
|
+
const collectionItem: VoiceRecordCollectionItem = {
|
|
138
140
|
durationMs,
|
|
139
141
|
audioUploadPromise,
|
|
140
142
|
controller,
|
|
141
143
|
uri,
|
|
142
|
-
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
this.collection.add(currentKey, collectionItem)
|
|
147
|
+
this.recorderModel.resolveStopWithCollectionItem(collectionItem)
|
|
143
148
|
|
|
144
149
|
return audioUploadPromise
|
|
145
150
|
}
|
|
@@ -160,7 +165,7 @@ export class VoiceRecordModel {
|
|
|
160
165
|
sample({
|
|
161
166
|
source: this.$currentKey,
|
|
162
167
|
fn: (currentKey) => this.collection.get(currentKey),
|
|
163
|
-
target: createEffect((recordingItem?:
|
|
168
|
+
target: createEffect((recordingItem?: VoiceRecordCollectionItem) => {
|
|
164
169
|
if (!recordingItem) {
|
|
165
170
|
this.reset()
|
|
166
171
|
return
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { VoiceRecordCollectionItem } from '../types'
|
|
2
2
|
|
|
3
3
|
export class VoiceRecordsCollection {
|
|
4
|
-
public readonly collection: Map<string,
|
|
4
|
+
public readonly collection: Map<string, VoiceRecordCollectionItem> = new Map()
|
|
5
5
|
|
|
6
|
-
public add(key: string, item:
|
|
6
|
+
public add(key: string, item: VoiceRecordCollectionItem) {
|
|
7
7
|
this.collection.set(key, item)
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
public update(key: string, item: Partial<
|
|
10
|
+
public update(key: string, item: Partial<VoiceRecordCollectionItem>) {
|
|
11
11
|
const existingItem = this.collection.get(key) || {}
|
|
12
12
|
this.collection.set(key, { ...existingItem, ...item })
|
|
13
13
|
}
|
|
@@ -25,8 +25,8 @@ export type AudioApi = {
|
|
|
25
25
|
uploadAudioFile: (data: UploadAudioPayload) => Promise<UploadAudioResponse>
|
|
26
26
|
getAudioFileTranscript: (audioFileId: string) => Promise<AudioTranscriptResponse>
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
export type
|
|
28
|
+
|
|
29
|
+
export type VoiceRecordCollectionItem = {
|
|
30
30
|
solutionId?: string
|
|
31
31
|
id?: string //it exists after upload to server
|
|
32
32
|
durationMs?: number
|
|
@@ -36,7 +36,7 @@ export type VoiceRecordStackItem = {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
export type VoiceRecordStack = {
|
|
39
|
-
[problemId: string]:
|
|
39
|
+
[problemId: string]: VoiceRecordCollectionItem
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export type AvailableAudioInputs = Awaited<ReturnType<typeof getAvailableInputs>>
|