import { createEffect, createMemo, createResource, createSignal, } from "solid-js"; import EventEmitter from "../tools/event-emitter.js"; import User from "../data/user.js"; import Modal from "./modal.jsx"; import ValidatedTextInput from "../modules/validated-text-input.jsx"; import ModalHandler from "./modal-handler.js"; import UserService from "../services/user-service.js"; const [user, setUser] = createSignal(new User()); const eventEmitter = new EventEmitter(); const USER_UPDATED_EVENT = "user-updated"; function UserSettingsModal(props) { const [isAdmin, setAdmin] = createSignal(false); const [error, setError] = createSignal(""); const [userInfo] = createResource(() => UserService.getUserInfo()); let canEditAdmin = createMemo( () => userInfo.loading || user().getId() !== userInfo().user_id ); createEffect(() => setAdmin(user().isAdmin())); async function handleSaveSettings() { try { await UserService.updateUser(user().getId(), { isAdmin: isAdmin() }); } catch (error) { setError(error.message); return; } UserSettingsModal.Handler.hide(); eventEmitter.dispatchEvent(USER_UPDATED_EVENT, user()); } return ( ); } UserSettingsModal.Handler = new ModalHandler(); UserSettingsModal.setUser = setUser; UserSettingsModal.onUserUpdated = (callback) => eventEmitter.on(USER_UPDATED_EVENT, callback); export default UserSettingsModal;