atoms.jsx 874 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { nanoid } from "nanoid";
  2. import randomColor from "randomcolor";
  3. import { atom } from "recoil";
  4. export const getUser = () => {
  5. if (localStorage.user) {
  6. // Add some mandatory info if missing
  7. const localUser = {
  8. name: "Player",
  9. color: randomColor({ luminosity: "dark" }),
  10. uid: nanoid(),
  11. ...JSON.parse(localStorage.user),
  12. };
  13. // Id is given by server
  14. // delete localUser.id;
  15. persistUser(localUser);
  16. return localUser;
  17. }
  18. const newUser = {
  19. name: "Player",
  20. color: randomColor({ luminosity: "dark" }),
  21. uid: nanoid(),
  22. };
  23. persistUser(newUser);
  24. return newUser;
  25. };
  26. export const persistUser = (user) => {
  27. localStorage.setItem("user", JSON.stringify(user));
  28. };
  29. export const userAtom = atom({
  30. key: "user",
  31. default: getUser(),
  32. });
  33. export const usersAtom = atom({
  34. key: "users",
  35. default: [],
  36. });