utilities.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { GlobalState } from '../globalState';
  2. export class Utilities {
  3. public static FastEval(code: string) {
  4. var head = document.getElementsByTagName('head')[0];
  5. var script = document.createElement('script');
  6. script.setAttribute('type', 'text/javascript');
  7. script.innerHTML = `try {${code};}
  8. catch(e) {
  9. handleException(e);
  10. }`;
  11. head.appendChild(script);
  12. }
  13. public static ParseQuery() {
  14. let queryString = location.search;
  15. var query: any = {};
  16. var pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');
  17. for (var i = 0; i < pairs.length; i++) {
  18. var pair = pairs[i].split('=');
  19. query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
  20. }
  21. return query;
  22. }
  23. public static ReadStringFromStore(key: string, defaultValue: string): string {
  24. if (localStorage.getItem(key) === null) {
  25. return defaultValue;
  26. }
  27. return localStorage.getItem(key)!;
  28. }
  29. public static ReadBoolFromStore(key: string, defaultValue: boolean): boolean {
  30. if (localStorage.getItem(key) === null) {
  31. return defaultValue;
  32. }
  33. return localStorage.getItem(key) === "true";
  34. }
  35. public static StoreStringToStore(key: string, value: string): void {
  36. localStorage.setItem(key, value);
  37. }
  38. public static StoreBoolToStore(key: string, value: boolean): void {
  39. localStorage.setItem(key, value ? "true" : "false");
  40. }
  41. public static CheckSafeMode(message: string) {
  42. if (Utilities.ReadBoolFromStore("safe-mode", false)) {
  43. return window.confirm(message);
  44. }
  45. return true;
  46. };
  47. public static SwitchLanguage(language: string, globalState: GlobalState) {
  48. if (Utilities.CheckSafeMode("Are you sure you want to switch the language?")) {
  49. Utilities.StoreStringToStore("language", language);
  50. globalState.language = language;
  51. globalState.currentCode = "";
  52. globalState.onLanguageChangedObservable.notifyObservers();
  53. }
  54. }
  55. }