Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Button to reset configuration #141

Closed
wants to merge 10 commits into from
6 changes: 6 additions & 0 deletions src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@
<span class="menu-item-text">Demo</span>
</div>
</li>
<li>
<div tabindex="0" role="button" class="reset-config unbutton menu-item">
<svg viewBox="0 0 24 24" class="icon"><path d="M21.548 8.015l-2.011-3.478a.946.946 0 0 0-1.188-.428l-2.271.913a7.874 7.874 0 0 0-1.355-.787l-.346-2.411a.954.954 0 0 0-.95-.824H9.394a.95.95 0 0 0-.948.817L8.1 4.235a8.128 8.128 0 0 0-1.352.787l-2.279-.915c-.438-.169-.961.021-1.179.419L1.275 8.011a.962.962 0 0 0 .233 1.24l1.926 1.505c-.03.291-.044.544-.044.786s.014.495.044.786l-1.927 1.505a.968.968 0 0 0-.234 1.235l2.011 3.479c.219.4.693.611 1.188.427l2.272-.913a7.81 7.81 0 0 0 1.355.787l.346 2.41a.95.95 0 0 0 .948.825h3.159a.456.456 0 0 0 .406-.247.462.462 0 0 0-.03-.474 5.914 5.914 0 0 1-.824-5.101.462.462 0 0 0-.08-.415.47.47 0 0 0-.384-.174c-.05.003-.099.009-.223.025-2.279 0-4.134-1.855-4.134-4.135s1.854-4.135 4.134-4.135 4.134 1.854 4.126 4.21c-.006.049-.014.097-.015.147a.457.457 0 0 0 .588.465 5.734 5.734 0 0 1 2.767-.149c.122.021.255-.034.358-.109a.517.517 0 0 0 .183-.344 1.86 1.86 0 0 0 .007-.107c0-.285-.021-.554-.045-.786l1.927-1.504a.968.968 0 0 0 .235-1.235z"/><path d="M22.398 13.833a.459.459 0 0 0-.458.459v1.118c-.691-1.217-2.072-2.494-4.125-2.494-2.78 0-5.042 2.261-5.042 5.042S15.035 23 17.815 23a.46.46 0 0 0 0-.917 4.13 4.13 0 0 1-4.125-4.125 4.13 4.13 0 0 1 4.125-4.125c2.161 0 3.35 1.785 3.643 2.75h-1.81a.459.459 0 0 0 0 .917h2.75a.459.459 0 0 0 .458-.458v-2.75a.459.459 0 0 0-.458-.459z"/></svg>
<span class="menu-item-text">Reset configuration</span>
</div>
</li>
<li>
<a href="https://github.com/jakearchibald/svgomg" class="menu-item">
<svg viewBox="0 0 512 512" class="icon"><path d="M7 266.8c22.6-5.7 53.3-13.4 107-14.8-1.4-3-2.8-6-4-9.2-21-.2-85.4 2.8-107.5 8.2H2c-.6 0-1.3-.4-1.5-1.2-.2-1 .4-1.8 1.3-2 21.8-5.4 84.8-8.4 107-8.3-5-14.8-7.2-31.7-7.2-50.6 0-33.6 10.5-46.2 24.5-64-10.6-38.3 4-64.4 4-64.4s22.5-4.7 65 25.8c23.2-9.8 84.7-10.7 113.8-2.2 18-11.8 50.6-28.5 63.8-23.8 3.6 5.7 11.3 22.5 4.7 59.3 4.5 8 27.7 25.3 27.8 74-.2 18-2 33-5.6 45.8 55.6-.4 88.2 4 110.8 8.3.8.2 1.4 1 1.3 2-.2.7-1 1.3-1.6 1.3h-.5c-22.4-4-55.2-8.7-111-8.2-1 3.3-2 6.4-3.3 9.3 19 .7 71.2 2.8 113.8 15.8 1 .3 1.4 1.2 1 2 0 .8-.7 1.2-1.4 1.2h-.5c-43-13.2-96.5-15-114.2-15.6-15.4 34-47 46.6-98.3 51.8 16.6 10.5 21.3 23.6 21.3 59 0 35.5-.5 40.2-.3 48.4 0 13.4 19.7 19.8 19 24-.7 4.4-16.4 3.7-23.7 1-20.8-7-18.7-24.4-18.7-24.4l-.6-47.4s1.4-25.5-8-25.5V420c0 16.8 11.8 22 11.8 28 0 10.8-21.6-1-28.2-7.6-10-10-9-31.7-8.7-48.8.2-16.4-.2-52.5-.2-52.5l-6.8.3s3 78.7-3.6 93c-8.3 18.4-33.5 24.8-33.5 16.4 0-5.7 6.3-4 9.8-16.5 3-10.8 2-91 2-91s-8.2 4.8-8.2 19.8l-.2 57.8c0 14.8-20.8 23-31 23-5 0-11.3 0-11.3-2.8 0-6.8 19.2-10.8 19.2-25l-.3-43.8s-9.7 1.7-23.4 1.7c-34.6 0-45.6-22.2-50.8-34.6-6.8-16-15.6-23.7-25-29.7-5.7-3.7-7-8-.4-9.4 30.7-5.7 38.5 34.8 59 41.3 14.6 4.6 33.4 2.6 42.7-3.5 1.4-12.3 10.3-23 17.7-28.6-52-5-83-23-99-52-54.4 1.2-85.3 9-108 14.6L3 271.2h-.4c-.8 0-1.5-.5-1.6-1.2-.3-1 .3-1.8 1.2-2l4.8-1.2z"/></svg>
Expand Down
48 changes: 45 additions & 3 deletions src/js/page/main-controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export default class MainController {
this._mainMenuUi.on('svgDataLoad', e => this._onInputChange(e));
this._dropUi.on('svgDataLoad', e => this._onInputChange(e));
this._mainMenuUi.on('error', ({error}) => this._handleError(error));
this._mainMenuUi.on('reset-config', () => this._resetConfig());
this._viewTogglerUi.on('change', e => this._onViewSelectionChange(e));
window.addEventListener('keydown', e => this._onGlobalKeyDown(e));

Expand Down Expand Up @@ -222,17 +223,58 @@ export default class MainController {

async _loadSettings() {
const settings = await storage.get('settings');
if (settings) this._settingsUi.setSettings(settings);
if (settings) {
this._saveSettings(settings);
} else {
if (await storage.get('default-settings')) return;
const defaultSettings = this._settingsUi.getSettings();
this._saveSettings(defaultSettings, 'default-settings');
}
}

_saveSettings(settings) {
async _resetConfig() {
const originalSettings = await storage.get('settings');
storage.delete('settings');

const defaultSettings = await storage.get('default-settings');
if (defaultSettings) {
this._saveSettings(defaultSettings);

const toast = this._toastsUi.show("Configuration reset", {
buttons: ['undo', 'dismiss']
});

const answer = await toast.answer;

if (answer == 'undo') this._saveSettings(originalSettings);
} else {
const toast = this._toastsUi.show("Default configuration not found, reload to reset the configuration", {
buttons: ['undo', 'reload', 'dismiss']
});

const answer = await toast.answer;

if (answer == 'undo') {
this._saveSettings(originalSettings);
} else if (answer == 'reload') {
this._reloading = true;
location.reload();
}
}
}

_saveSettings(settings, storageKey='settings') {
const copy = Object.assign({}, settings);
// doesn't make sense to retain the "show original" option
delete copy.original;
storage.set('settings', copy);
storage.set(storageKey, copy);

this._settingsUi.setSettings(settings);
this._compressSvg(settings);
}

async _compressSvg(settings, iterationCallback = function(){}) {
if (this._inputItem === null) return;
const thisJobId = this._latestCompressJobId = Math.random();

await svgo.abortCurrent();
Expand Down
6 changes: 6 additions & 0 deletions src/js/page/ui/main-menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export default class MainMenu extends EventEmitter {
this._loadFileInput = document.querySelector('.load-file-input');
this._pasteInput = document.querySelector('.paste-input');
this._loadDemoBtn = document.querySelector('.load-demo');
this._resetConfig = document.querySelector('.reset-config');
this._loadFileBtn = document.querySelector('.load-file');
this._pasteLabel = document.querySelector('.menu-input');
this._overlay = this.container.querySelector('.overlay');
Expand All @@ -31,6 +32,7 @@ export default class MainMenu extends EventEmitter {

this._loadFileBtn.addEventListener('click', e => this._onLoadFileClick(e));
this._loadDemoBtn.addEventListener('click', e => this._onLoadDemoClick(e));
this._resetConfig.addEventListener('click', e => this._onResetConfig(e));
this._loadFileInput.addEventListener('change', e => this._onFileInputChange(e));
this._pasteInput.addEventListener('input', e => this._onTextInputChange(e));
});
Expand Down Expand Up @@ -91,6 +93,10 @@ export default class MainMenu extends EventEmitter {
this.showFilePicker();
}

_onResetConfig(event) {
this.emit('reset-config');
}

async _onFileInputChange(event) {
const file = this._loadFileInput.files[0];

Expand Down