Skip to content
This repository was archived by the owner on Jan 24, 2020. It is now read-only.

Commit e1919aa

Browse files
author
Avaer Kazmer
committed
Add file drop handler
1 parent 9e02582 commit e1919aa

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

index.html

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -875,9 +875,69 @@
875875
antialias: true,
876876
});
877877
renderer.domElement.id = 'canvas';
878+
renderer.domElement.ondrop = dropHandler;
879+
renderer.domElement.ondragover = dragOverHandler;
878880
renderer.sortObjects = false;
879881
document.body.appendChild(renderer.domElement);
880882

883+
function dropHandler(ev) {
884+
ev.preventDefault();
885+
886+
for (var i = 0; i < ev.dataTransfer.items.length; i++) {
887+
if (ev.dataTransfer.items[i].kind === 'file') {
888+
var file = ev.dataTransfer.items[i].getAsFile();
889+
890+
console.log(`file ${i}: ${file.name}`);
891+
892+
const _loadModel = u => {
893+
_addNewApp(u, faviconImg, 'model', -1);
894+
};
895+
const _loadLocal = () => {
896+
console.log('loading', file.name);
897+
const reader = new FileReader();
898+
reader.onload = async e => {
899+
let data = new Uint8Array(reader.result, 0, reader.result.byteLength);
900+
const d = '/lol';
901+
const p = `${d}/${file.name}`;
902+
console.log('writing', p, data.byteLength);
903+
await localforage.write(p, data);
904+
data = null;
905+
data = await localforage.read(p);
906+
console.log('got file', data.map(data => data.length));
907+
const u = URL.createObjectURL(new Blob(data, {
908+
type: 'application/octet-stream',
909+
}));
910+
_loadModel(u);
911+
};
912+
reader.readAsArrayBuffer(file);
913+
};
914+
const _loadRemote = () => {
915+
const u = `https://webaverse.s3.amazonaws.com/lol/${file.name}`;
916+
fetch(u, {
917+
method: 'PUT',
918+
body: file,
919+
mode: 'cors',
920+
})
921+
.then(res => res.arrayBuffer())
922+
.then(() => {
923+
_loadModel(u);
924+
})
925+
.catch(err => {
926+
console.warn(err.stack);
927+
});
928+
};
929+
if (!_isInMultiverse()) {
930+
_loadLocal();
931+
} else {
932+
_loadRemote();
933+
}
934+
}
935+
}
936+
}
937+
function dragOverHandler(ev) {
938+
ev.preventDefault();
939+
}
940+
881941
const layers = [renderer.domElement];
882942

883943
const ambientLight = new THREE.AmbientLight(0x808080);

0 commit comments

Comments
 (0)