move file loading into seperate component

This commit is contained in:
[poww10s]
2020-09-04 23:39:46 -04:00
parent c0843887ee
commit a4a7fbac2e
2 changed files with 52 additions and 16 deletions
+2
View File
@@ -0,0 +1,2 @@
[0903/220217.182:ERROR:crash_report_database_win.cc(428)] unexpected header
[0904/152354.511:ERROR:crash_report_database_win.cc(428)] unexpected header
+50 -16
View File
@@ -79,34 +79,49 @@ function dumpBufferFromSysexFile(array) {
} }
); );
console.log(dump); console.log(dump);
return dump;
} }
function MIDIComponent () { function LoadSYSEXFile (props) {
// request midi access
navigator.requestMIDIAccess({sysex: true}).then(onMIDISuccess, onMIDIFailure);
const fileInput = React.useRef(); const fileInput = React.useRef();
const [data, updateData] = React.useState(new Uint8ClampedArray());
React.useEffect(() => {
console.log(data);
}, [data]);
// on file load, verify correct file format // on file load, verify correct file format
const getFile = (event) => { const getFile = (event) => {
event.preventDefault(); event.preventDefault();
loadSysex(fileInput); if (loadSysex(fileInput) !== null) {
// enable the submit button let reader = new FileReader();
reader.onload = (e) => {
let l_data = new Uint8ClampedArray(e.target.result);
updateData(dumpBufferFromSysexFile(l_data));
}
reader.readAsArrayBuffer(fileInput.current.files[0]);
}
else {
alert("Please load a SYSEX File");
return null;
}
} }
// on submit button press, convert the file to correct Dump Format, as per microKORG MIDI Implementation Doc // on submit button press, convert the file to correct Dump Format, as per microKORG MIDI Implementation Doc
const handleInput = (event) => { const handleInput = (event) => {
event.preventDefault(); if (!fileLoaded()) {
/*if (sysexFile == null) { event.preventDefault();
alert("Please load a SYSEX File");
return;
}*/
let reader = new FileReader();
reader.onload = (e) => {
let data = new Uint8ClampedArray(e.target.result);
dumpBufferFromSysexFile(data);
} }
reader.readAsArrayBuffer(fileInput.current.files[0]); else {
props.sendFileData(data);
}
}
const fileLoaded = () => {
return (
data.length === 254
);
} }
return( return(
@@ -116,9 +131,28 @@ function MIDIComponent () {
<input type='file' ref={fileInput} onChange={getFile}/> <input type='file' ref={fileInput} onChange={getFile}/>
</label> </label>
<br /> <br />
<button type="submit">Submit</button> <button disabled={!fileLoaded} type="submit">Submit</button>
</form> </form>
); );
}
function MIDIComponent () {
// request midi access
navigator.requestMIDIAccess({sysex: true}).then(onMIDISuccess, onMIDIFailure);
const [loadedFile, loadFile] = React.useState(null);
React.useEffect(() => {
console.log(loadedFile);
}, [loadedFile]);
const getChildFile = (childData) => {
loadFile(childData);
}
return(
<LoadSYSEXFile sendFileData={getChildFile} />
);
} }