aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/client/views/nodes/AudioBox.tsx13
-rw-r--r--src/server/ApiManagers/UploadManager.ts3
-rw-r--r--src/server/DashUploadUtils.ts17
-rw-r--r--src/server/SharedMediaTypes.ts2
4 files changed, 19 insertions, 16 deletions
diff --git a/src/client/views/nodes/AudioBox.tsx b/src/client/views/nodes/AudioBox.tsx
index 62a479b2a..5ed8fba19 100644
--- a/src/client/views/nodes/AudioBox.tsx
+++ b/src/client/views/nodes/AudioBox.tsx
@@ -44,6 +44,7 @@ export class AudioBox extends DocExtendableComponent<FieldViewProps, AudioDocume
_ele: HTMLAudioElement | null = null;
_recorder: any;
_recordStart = 0;
+ _stream: MediaStream | undefined;
@observable private static _scrubTime = 0;
@observable private _audioState: "unrecorded" | "recording" | "recorded" = "unrecorded";
@@ -131,7 +132,7 @@ export class AudioBox extends DocExtendableComponent<FieldViewProps, AudioDocume
navigator.mediaDevices.getUserMedia({
audio: true
}).then(function (stream) {
- gumStream = stream;
+ self._stream = stream;
self._recorder = new MediaRecorder(stream);
self.dataDoc[self.props.fieldKey + "-recordingStart"] = new DateField(new Date());
AudioBox.ActiveRecordings.push(self.props.Document);
@@ -143,7 +144,7 @@ export class AudioBox extends DocExtendableComponent<FieldViewProps, AudioDocume
body: formData
});
const files = await res.json();
- const url = Utils.prepend(files[0].path);
+ const url = Utils.prepend(files[0].result.accessPaths.agnostic.client);
// upload to server with known URL
self.props.Document[self.props.fieldKey] = new AudioField(url);
};
@@ -153,8 +154,8 @@ export class AudioBox extends DocExtendableComponent<FieldViewProps, AudioDocume
self._recorder.start();
setTimeout(() => {
self.stopRecording();
- gumStream.getAudioTracks()[0].stop();
- }, 60 * 60 * 1000); // stop after an hour?
+ self._stream?.getAudioTracks()[0].stop();
+ }, 60 * 1000); // stop after a minute
});
}
@@ -169,6 +170,7 @@ export class AudioBox extends DocExtendableComponent<FieldViewProps, AudioDocume
this._recorder.stop();
this.dataDoc.duration = (new Date().getTime() - this._recordStart) / 1000;
this._audioState = "recorded";
+ this._stream?.getAudioTracks()[0].stop();
const ind = AudioBox.ActiveRecordings.indexOf(this.props.Document);
ind !== -1 && (AudioBox.ActiveRecordings.splice(ind, 1));
});
@@ -185,7 +187,7 @@ export class AudioBox extends DocExtendableComponent<FieldViewProps, AudioDocume
e.stopPropagation();
}
onStop = (e: any) => {
- this.pause();
+ this.stopRecording();
this._ele!.currentTime = 0;
e.stopPropagation();
}
@@ -210,6 +212,7 @@ export class AudioBox extends DocExtendableComponent<FieldViewProps, AudioDocume
</audio>;
}
+ // line 226 is stop button but it doesn't do anything
render() {
const interactive = this.active() ? "-interactive" : "";
return <div className={`audiobox-container`} onContextMenu={this.specificContextMenu}
diff --git a/src/server/ApiManagers/UploadManager.ts b/src/server/ApiManagers/UploadManager.ts
index 095567be1..4b66938a6 100644
--- a/src/server/ApiManagers/UploadManager.ts
+++ b/src/server/ApiManagers/UploadManager.ts
@@ -72,6 +72,7 @@ export default class UploadManager extends ApiManager {
method: Method.POST,
subscription: "/uploadRemoteImage",
secureHandler: async ({ req, res }) => {
+
const { sources } = req.body;
if (Array.isArray(sources)) {
const results = await Promise.all(sources.map(source => DashUploadUtils.UploadImage(source)));
@@ -85,6 +86,7 @@ export default class UploadManager extends ApiManager {
method: Method.POST,
subscription: "/uploadDoc",
secureHandler: ({ req, res }) => {
+
const form = new formidable.IncomingForm();
form.keepExtensions = true;
// let path = req.body.path;
@@ -189,6 +191,7 @@ export default class UploadManager extends ApiManager {
method: Method.POST,
subscription: "/inspectImage",
secureHandler: async ({ req, res }) => {
+
const { source } = req.body;
if (typeof source === "string") {
return res.send(await DashUploadUtils.InspectImage(source));
diff --git a/src/server/DashUploadUtils.ts b/src/server/DashUploadUtils.ts
index 7cbfc4408..fb4e87c08 100644
--- a/src/server/DashUploadUtils.ts
+++ b/src/server/DashUploadUtils.ts
@@ -78,7 +78,8 @@ export namespace DashUploadUtils {
}
case "audio":
if (audioFormats.includes(format)) {
- return UploadAudio(file);
+ console.log("1");
+ return MoveParsedFile(file, Directory.audio);
}
}
@@ -86,16 +87,9 @@ export namespace DashUploadUtils {
return { source: file, result: new Error(`Could not upload unsupported file (${name}) with upload type (${type}).`) };
}
- async function uploadAudio(file: File) {
+ async function UploadAudio(file: File) {
const { path: sourcePath } = file;
- const dataBuffer = readFileSync(sourcePath);
- await new Promise<void>((resolve, reject) => {
- const name = path.basename(sourcePath);
- const audioFilename = `${name.substring(0, name.length - 4)}.mp3`;
- const writeStream = createWriteStream(serverPathToFile(Directory.audio, audioFilename));
- writeStream.write(result.text, error => error ? reject(error) : resolve());
- });
return MoveParsedFile(file, Directory.audio);
}
@@ -109,6 +103,7 @@ export namespace DashUploadUtils {
const writeStream = createWriteStream(serverPathToFile(Directory.text, textFilename));
writeStream.write(result.text, error => error ? reject(error) : resolve());
});
+ console.log(MoveParsedFile(file, Directory.pdfs));
return MoveParsedFile(file, Directory.pdfs);
}
@@ -212,8 +207,10 @@ export namespace DashUploadUtils {
accessPaths: {
agnostic: getAccessPaths(destination, name)
}
+
}
- });
+ }
+ );
});
});
}
diff --git a/src/server/SharedMediaTypes.ts b/src/server/SharedMediaTypes.ts
index 55c0d14e8..3d3683912 100644
--- a/src/server/SharedMediaTypes.ts
+++ b/src/server/SharedMediaTypes.ts
@@ -10,7 +10,7 @@ export namespace AcceptibleMedia {
export const imageFormats = [...pngs, ...jpgs, ...gifs, ...webps, ...tiffs];
export const videoFormats = [".mov", ".mp4"];
export const applicationFormats = [".pdf"];
- export const audioFormats = [".wav", ".mp3", ".flac", ".au", ".aiff", ".m4a"];
+ export const audioFormats = [".wav", ".mp3", ".flac", ".au", ".aiff", ".m4a", ".webm;codecs=opus"];
}
export namespace Upload {