Base model refactor (#810)

* 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

* 👕
This commit is contained in:
Tom Moor
2018-12-04 22:24:30 -08:00
committed by GitHub
parent 67cd250316
commit 8cbcb77486
222 changed files with 2273 additions and 2361 deletions

View File

@@ -11,43 +11,43 @@ import HelpText from 'components/HelpText';
import Collection from 'models/Collection';
import CollectionsStore from 'stores/CollectionsStore';
import UiStore from 'stores/UiStore';
type Props = {
history: Object,
ui: UiStore,
collections: CollectionsStore,
onSubmit: () => void,
};
@observer
class CollectionNew extends React.Component<Props> {
@observable collection: Collection;
@observable name: string = '';
@observable description: string = '';
@observable color: string = '';
@observable isSaving: boolean;
constructor(props: Props) {
super(props);
this.collection = new Collection();
}
handleSubmit = async (ev: SyntheticEvent<*>) => {
ev.preventDefault();
this.isSaving = true;
this.collection.updateData({
name: this.name,
description: this.description,
color: this.color,
});
const success = await this.collection.save();
const collection = new Collection(
{
name: this.name,
description: this.description,
color: this.color,
},
this.props.collections
);
if (success) {
this.props.collections.add(this.collection);
try {
await collection.save();
this.props.onSubmit();
this.props.history.push(this.collection.url);
this.props.history.push(collection.url);
} catch (err) {
this.props.ui.showToast(err.message);
} finally {
this.isSaving = false;
}
this.isSaving = false;
};
handleNameChange = (ev: SyntheticInputEvent<*>) => {
@@ -95,4 +95,4 @@ class CollectionNew extends React.Component<Props> {
}
}
export default inject('collections')(withRouter(CollectionNew));
export default inject('collections', 'ui')(withRouter(CollectionNew));