callback > promise

This commit is contained in:
Tom Moor 2018-01-30 22:49:48 -08:00
parent 85a27593e8
commit 48793a4cef
3 changed files with 41 additions and 44 deletions

View File

@ -54,19 +54,16 @@ class DropToImport extends Component {
}
for (const file of files) {
importFile(
{
documents: this.props.documents,
file,
documentId,
collectionId,
},
doc => {
if (redirect) {
this.props.history.push(doc.url);
}
}
);
const doc = await importFile({
documents: this.props.documents,
file,
documentId,
collectionId,
});
if (redirect) {
this.props.history.push(doc.url);
}
}
} catch (err) {
// TODO: show error alert.

View File

@ -40,19 +40,15 @@ class CollectionMenu extends Component {
this.file.click();
};
onFilePicked = (ev: SyntheticEvent) => {
onFilePicked = async (ev: SyntheticEvent) => {
const files = getDataTransferFiles(ev);
const document = await importFile({
file: files[0],
documents: this.props.documents,
collectionId: this.props.collection.id,
});
importFile(
{
file: files[0],
documents: this.props.documents,
collectionId: this.props.collection.id,
},
document => {
this.props.history.push(document.url);
}
);
this.props.history.push(document.url);
};
onEdit = (ev: SyntheticEvent) => {

View File

@ -9,28 +9,32 @@ type Options = {
documentId?: string,
};
const importFile = async (
{ documents, file, documentId, collectionId }: Options,
callback: Document => *
) => {
const reader = new FileReader();
const importFile = async ({
documents,
file,
documentId,
collectionId,
}: Options): Promise<Document> => {
return new Promise(resolve => {
const reader = new FileReader();
reader.onload = async ev => {
const text = ev.target.result;
let data = {
parentDocument: undefined,
collection: { id: collectionId },
text,
reader.onload = async ev => {
const text = ev.target.result;
let data = {
parentDocument: undefined,
collection: { id: collectionId },
text,
};
if (documentId) data.parentDocument = documentId;
let document = new Document(data);
document = await document.save();
documents.add(document);
resolve(document);
};
if (documentId) data.parentDocument = documentId;
let document = new Document(data);
document = await document.save();
documents.add(document);
callback(document);
};
reader.readAsText(file);
reader.readAsText(file);
});
};
export default importFile;