Initial commit: Memind H5 portal with MindSpace, Plaza, and agent jobs.

Track application source and tests; exclude local env, user workspaces, and runtime data via .gitignore.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
John
2026-06-15 15:04:43 -07:00
commit 2e14873f2d
272 changed files with 64133 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
import { useCallback, useEffect, useState } from 'react';
import {
AVATAR_CHANGED_EVENT,
clearUserAvatar,
loadUserAvatar,
notifyAvatarChanged,
processAvatarFile,
saveUserAvatar,
} from '../utils/userAvatar';
export function useUserAvatar() {
const [avatarUrl, setAvatarUrl] = useState<string | null>(() => loadUserAvatar());
useEffect(() => {
const sync = () => setAvatarUrl(loadUserAvatar());
window.addEventListener(AVATAR_CHANGED_EVENT, sync);
window.addEventListener('storage', sync);
return () => {
window.removeEventListener(AVATAR_CHANGED_EVENT, sync);
window.removeEventListener('storage', sync);
};
}, []);
const updateAvatar = useCallback(async (file: File) => {
const dataUrl = await processAvatarFile(file);
saveUserAvatar(dataUrl);
setAvatarUrl(dataUrl);
notifyAvatarChanged();
}, []);
const resetAvatar = useCallback(() => {
clearUserAvatar();
setAvatarUrl(null);
notifyAvatarChanged();
}, []);
return { avatarUrl, updateAvatar, resetAvatar };
}