use-profiles.ts 730 B

123456789101112131415161718192021222324252627282930313233
  1. import useSWR from "swr";
  2. import {
  3. getProfiles,
  4. patchProfile,
  5. patchProfilesConfig,
  6. } from "@/services/cmds";
  7. export const useProfiles = () => {
  8. const { data: profiles, mutate: mutateProfiles } = useSWR(
  9. "getProfiles",
  10. getProfiles
  11. );
  12. const patchProfiles = async (value: Partial<IProfilesConfig>) => {
  13. await patchProfilesConfig(value);
  14. mutateProfiles();
  15. };
  16. const patchCurrent = async (value: Partial<IProfileItem>) => {
  17. if (profiles?.current) {
  18. await patchProfile(profiles.current, value);
  19. mutateProfiles();
  20. }
  21. };
  22. return {
  23. profiles,
  24. current: profiles?.items?.find((p) => p.uid === profiles.current),
  25. patchProfiles,
  26. patchCurrent,
  27. mutateProfiles,
  28. };
  29. };