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:
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user