import Modal from 'flarum/components/Modal'; import Button from 'flarum/components/Button'; import saveSettings from 'flarum/utils/saveSettings'; export default class SettingsModal extends Modal { init() { this.settings = {}; this.loading = false; } form() { return ''; } content() { return (
{this.form()}
{this.submitButton()}
); } submitButton() { return ( ); } setting(key, fallback = '') { this.settings[key] = this.settings[key] || m.prop(app.settings[key] || fallback); return this.settings[key]; } dirty() { const dirty = {}; Object.keys(this.settings).forEach(key => { const value = this.settings[key](); if (value !== app.settings[key]) { dirty[key] = value; } }); return dirty; } changed() { return Object.keys(this.dirty()).length; } onsubmit(e) { e.preventDefault(); this.loading = true; saveSettings(this.dirty()).then( this.hide.bind(this), this.loaded.bind(this) ); } }