diff options
Diffstat (limited to 'src/webex/pageEntryPoint.ts')
-rw-r--r-- | src/webex/pageEntryPoint.ts | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/src/webex/pageEntryPoint.ts b/src/webex/pageEntryPoint.ts new file mode 100644 index 000000000..04e3dd8d1 --- /dev/null +++ b/src/webex/pageEntryPoint.ts @@ -0,0 +1,64 @@ +/* + This file is part of GNU Taler + (C) 2020 Taler Systems S.A. + + GNU Taler 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, or (at your option) any later version. + + GNU Taler 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 + GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +/** + * Main entry point for extension pages. + * + * @author Florian Dold <dold@taler.net> + */ + +import ReactDOM from "react-dom"; +import { createPopup } from "./pages/popup"; +import { createWithdrawPage } from "./pages/withdraw"; +import { createWelcomePage } from "./pages/welcome"; + +function main() { + try { + let mainElement; + const m = location.pathname.match(/([^/]+)$/); + if (!m) { + throw Error("can't parse page URL"); + } + const page = m[1]; + switch (page) { + case "popup.html": + mainElement = createPopup(); + break; + case "withdraw.html": + mainElement = createWithdrawPage(); + break; + case "welcome.html": + mainElement = createWelcomePage(); + break; + default: + throw Error(`page '${page}' not implemented`); + } + const container = document.getElementById("container"); + if (!container) { + throw Error("container not found, can't mount page contents"); + } + ReactDOM.render(mainElement, container); + } catch (e) { + console.error("got error", e); + document.body.innerText = `Fatal error: "${e.message}". Please report this bug at https://bugs.gnunet.org/.`; + } +} + +if (document.readyState === "loading") { + document.addEventListener("DOMContentLoaded", main); +} else { + main(); +} |