callback > promise
This commit is contained in:
parent
85a27593e8
commit
48793a4cef
|
@ -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.
|
||||
|
|
|
@ -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) => {
|
||||
|
|
|
@ -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;
|
||||
|
|
Reference in New Issue