el.xwx.moe/store/account.ts

47 lines
1.6 KiB
TypeScript
Raw Normal View History

2023-05-18 13:02:17 -05:00
// Copyright (C) 2022-present Daniel31x13 <daniel31x13@gmail.com>
// This program 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, version 3.
// This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
import { create } from "zustand";
import { User } from "@prisma/client";
2023-05-20 14:25:00 -05:00
import { AccountSettings } from "@/types/global";
2023-05-18 13:02:17 -05:00
type AccountStore = {
account: User;
2023-05-22 07:20:48 -05:00
setAccount: (email: string, id: number) => void;
2023-05-21 04:54:42 -05:00
updateAccount: (user: AccountSettings) => Promise<boolean>;
2023-05-18 13:02:17 -05:00
};
const useAccountStore = create<AccountStore>()((set) => ({
account: {} as User,
2023-05-22 07:20:48 -05:00
setAccount: async (email, id) => {
2023-05-18 13:02:17 -05:00
const response = await fetch(`/api/routes/users?email=${email}`);
const data = await response.json();
console.log(data);
2023-05-22 07:20:48 -05:00
if (response.ok) set({ account: { ...data.response } });
2023-05-20 14:25:00 -05:00
},
updateAccount: async (user) => {
const response = await fetch("/api/routes/users", {
method: "PUT",
body: JSON.stringify(user),
headers: {
"Content-Type": "application/json",
},
});
const data = await response.json();
console.log(data);
2023-05-18 13:02:17 -05:00
if (response.ok) set({ account: data.response });
2023-05-21 04:54:42 -05:00
return response.ok;
2023-05-18 13:02:17 -05:00
},
}));
export default useAccountStore;