localStorageMethods.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { getCurrentRound } from "./apiMethods";
  2. const localStorageGameId = "terrassumptions:gameId";
  3. const localStoragePlayerName = "terrassumptions:playerName";
  4. const localStoragePlayerId = "terrassumptions:playerId";
  5. const localStorageTimer = "terrassumptions:timer";
  6. const localStoragePanoLat = "terrassumptions:pano:lat";
  7. const localStoragePanoLng = "terrassumptions:pano:lng";
  8. const localStoragePanoHeading = "terrassumptions:pano:heading";
  9. const localStoragePanoPitch = "terrassumptions:pano:pitch";
  10. export const hasSavedGameInfo = async () => {
  11. const gameId = localStorage.getItem(localStorageGameId);
  12. if (gameId === null) {
  13. return false;
  14. }
  15. const playerName = localStorage.getItem(localStoragePlayerName);
  16. if (playerName === null) {
  17. return false;
  18. }
  19. const playerId = localStorage.getItem(localStoragePlayerId);
  20. if (playerId === null) {
  21. return false;
  22. }
  23. try {
  24. await getCurrentRound(gameId, playerId);
  25. return true;
  26. } catch (_) {
  27. return false;
  28. }
  29. }
  30. export const saveGameInfoToLocalStorage = (gameId, playerName, playerId) => {
  31. localStorage.setItem(localStorageGameId, gameId);
  32. localStorage.setItem(localStoragePlayerName, playerName);
  33. localStorage.setItem(localStoragePlayerId, playerId);
  34. }
  35. export const saveTimerToLocalStorage = (timer) => {
  36. localStorage.setItem(localStorageTimer, timer.toString());
  37. }
  38. export const savePanoPositionToLocalStorage = (lat, lng) => {
  39. localStorage.setItem(localStoragePanoLat, lat.toString());
  40. localStorage.setItem(localStoragePanoLng, lng.toString());
  41. }
  42. export const savePanoPovToLocalStorage = (heading, pitch) => {
  43. localStorage.setItem(localStoragePanoHeading, heading.toString());
  44. localStorage.setItem(localStoragePanoPitch, pitch.toString());
  45. }
  46. export const clearGameInfoFromLocalStorage = () => {
  47. localStorage.removeItem(localStorageGameId);
  48. localStorage.removeItem(localStoragePlayerName);
  49. localStorage.removeItem(localStoragePlayerId);
  50. }
  51. export const clearRoundInfoFromLocalStorage = () => {
  52. localStorage.removeItem(localStorageTimer);
  53. localStorage.removeItem(localStoragePanoLat);
  54. localStorage.removeItem(localStoragePanoLng);
  55. localStorage.removeItem(localStoragePanoHeading);
  56. localStorage.removeItem(localStoragePanoPitch);
  57. }
  58. const parseFloatFromStorage = key => {
  59. const val = localStorage.getItem(key);
  60. return val === null ? null : Number.parseFloat(val);
  61. }
  62. export const getInfoFromLocalStorage = () => {
  63. const timer = localStorage.getItem(localStorageTimer);
  64. const position = {
  65. lat: parseFloatFromStorage(localStoragePanoLat),
  66. lng: parseFloatFromStorage(localStoragePanoLng),
  67. };
  68. const pov = {
  69. heading: parseFloatFromStorage(localStoragePanoHeading),
  70. pitch: parseFloatFromStorage(localStoragePanoPitch),
  71. };
  72. return {
  73. gameId: localStorage.getItem(localStorageGameId),
  74. playerName: localStorage.getItem(localStoragePlayerName),
  75. playerId: localStorage.getItem(localStoragePlayerId),
  76. timer: timer !== null ? Number.parseInt(timer) : null,
  77. position: position.lat !== null && position.lng !== null ? position : null,
  78. pov: pov.heading !== null && pov.pitch !== null ? pov : null,
  79. }
  80. };