diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-12-01 15:19:21 -0500 | 
|---|---|---|
| committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-12-01 15:19:21 -0500 | 
| commit | a7e4901f728ac3069d9ae6a185b44971178a10a0 (patch) | |
| tree | 8cfcf107e1cf74e6c44f9ebba8c84749fbfb902c | |
| parent | 403b86675d288a8082125475f87f9b1740e3480a (diff) | |
Move PageExitPrevention to its own file
| -rw-r--r-- | ext/bg/js/page-exit-prevention.js | 60 | ||||
| -rw-r--r-- | ext/bg/js/settings.js | 46 | ||||
| -rw-r--r-- | ext/bg/settings.html | 1 | 
3 files changed, 61 insertions, 46 deletions
| diff --git a/ext/bg/js/page-exit-prevention.js b/ext/bg/js/page-exit-prevention.js new file mode 100644 index 00000000..aee4e3c2 --- /dev/null +++ b/ext/bg/js/page-exit-prevention.js @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2019  Alex Yatskov <alex@foosoft.net> + * Author: Alex Yatskov <alex@foosoft.net> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program.  If not, see <http://www.gnu.org/licenses/>. + */ + + +class PageExitPrevention { +  constructor() { +  } + +  start() { +      PageExitPrevention._addInstance(this); +  } + +  end() { +      PageExitPrevention._removeInstance(this); +  } + +  static _addInstance(instance) { +      const size = PageExitPrevention._instances.size; +      PageExitPrevention._instances.set(instance, true); +      if (size === 0) { +          window.addEventListener('beforeunload', PageExitPrevention._onBeforeUnload); +      } +  } + +  static _removeInstance(instance) { +      if ( +          PageExitPrevention._instances.delete(instance) && +          PageExitPrevention._instances.size === 0 +      ) { +          window.removeEventListener('beforeunload', PageExitPrevention._onBeforeUnload); +      } +  } + +  static _onBeforeUnload(e) { +      if (PageExitPrevention._instances.size === 0) { +          return; +      } + +      e.preventDefault(); +      e.returnValue = ''; +      return ''; +  } +} + +PageExitPrevention._instances = new Map(); diff --git a/ext/bg/js/settings.js b/ext/bg/js/settings.js index abe6f389..9e9604e2 100644 --- a/ext/bg/js/settings.js +++ b/ext/bg/js/settings.js @@ -223,52 +223,6 @@ $(document).ready(() => onReady());  /* - * Page exit prevention - */ - -class PageExitPrevention { -    constructor() { -    } - -    start() { -        PageExitPrevention._addInstance(this); -    } - -    end() { -        PageExitPrevention._removeInstance(this); -    } - -    static _addInstance(instance) { -        const size = PageExitPrevention._instances.size; -        PageExitPrevention._instances.set(instance, true); -        if (size === 0) { -            window.addEventListener('beforeunload', PageExitPrevention._onBeforeUnload); -        } -    } - -    static _removeInstance(instance) { -        if ( -            PageExitPrevention._instances.delete(instance) && -            PageExitPrevention._instances.size === 0 -        ) { -            window.removeEventListener('beforeunload', PageExitPrevention._onBeforeUnload); -        } -    } - -    static _onBeforeUnload(e) { -        if (PageExitPrevention._instances.size === 0) { -            return; -        } - -        e.preventDefault(); -        e.returnValue = ''; -        return ''; -    } -} -PageExitPrevention._instances = new Map(); - - -/*   * Appearance   */ diff --git a/ext/bg/settings.html b/ext/bg/settings.html index 908c618c..9edb48e5 100644 --- a/ext/bg/settings.html +++ b/ext/bg/settings.html @@ -876,6 +876,7 @@          <script src="/bg/js/dictionary.js"></script>          <script src="/bg/js/handlebars.js"></script>          <script src="/bg/js/options.js"></script> +        <script src="/bg/js/page-exit-prevention.js"></script>          <script src="/bg/js/profile-conditions.js"></script>          <script src="/bg/js/templates.js"></script>          <script src="/bg/js/util.js"></script> |