* Big upgrades * WIP: Stash * Stash, 30 flow errors left * Downgrade mobx * WIP * When I understand the difference between class and instance methods * 💚 * Fixes: File import Model saving edge cases pinning and starring docs Collection editing Upgrade mobx devtools * Notification settings saving works * Disabled settings * Document mailer * Working notifications * Colletion created notification Ensure not notified for own actions * Tidy up * Document updated event only for document creation Add indexes Notification setting on user creation * Commentary * Fixed: Notification setting on signup * Fix document move / duplicate stale data Add BaseModel.refresh method * Fixes: Title in sidebar not updated after editing document * 💚 * Improve / restore error handling Better handle offline errors * 👕
44 lines
929 B
JavaScript
44 lines
929 B
JavaScript
// @flow
|
|
import Document from '../models/Document';
|
|
import DocumentsStore from '../stores/DocumentsStore';
|
|
|
|
type Options = {
|
|
file: File,
|
|
documents: DocumentsStore,
|
|
collectionId: string,
|
|
documentId?: string,
|
|
};
|
|
|
|
const importFile = async ({
|
|
documents,
|
|
file,
|
|
documentId,
|
|
collectionId,
|
|
}: Options): Promise<Document> => {
|
|
return new Promise((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
|
|
reader.onload = async ev => {
|
|
const text = ev.target.result;
|
|
let data = {
|
|
parentDocument: undefined,
|
|
collection: { id: collectionId },
|
|
text,
|
|
};
|
|
|
|
if (documentId) data.parentDocument = documentId;
|
|
|
|
const document = new Document(data, documents);
|
|
try {
|
|
await document.save({ publish: true });
|
|
resolve(document);
|
|
} catch (err) {
|
|
reject(err);
|
|
}
|
|
};
|
|
reader.readAsText(file);
|
|
});
|
|
};
|
|
|
|
export default importFile;
|