This commit is contained in:
freedakgmail
2025-11-30 09:16:43 +08:00
parent b436ae0680
commit fd9c064749
227 changed files with 1251 additions and 912 deletions
+26 -4
View File
@@ -27,6 +27,7 @@ export default function MemberProfilePage() {
const [isEditing, setIsEditing] = useState(false)
const [avatarBlobUrl, setAvatarBlobUrl] = useState<string | undefined>(undefined)
const [isUploadingAvatar, setIsUploadingAvatar] = useState(false)
const [lastSaveTime, setLastSaveTime] = useState(Date.now())
// 未登录时重定向到登录页
useEffect(() => {
@@ -94,9 +95,10 @@ export default function MemberProfilePage() {
)
}
const handleSave = (updatedMember: FamilyMember) => {
updateMember(updatedMember.id, updatedMember)
const handleSave = async (updatedMember: FamilyMember) => {
await updateMember(updatedMember.id, updatedMember)
setIsEditing(false)
setLastSaveTime(Date.now())
}
const handleDelete = async () => {
@@ -173,6 +175,7 @@ export default function MemberProfilePage() {
// 显示新头像
setAvatarBlobUrl(url)
setLastSaveTime(Date.now())
} catch (error) {
console.error('上传头像失败:', error)
alert('上传头像失败: ' + (error instanceof Error ? error.message : '未知错误'))
@@ -250,6 +253,18 @@ export default function MemberProfilePage() {
<div className="min-h-screen flex flex-col bg-background">
<SiteHeader />
<main className="container mx-auto py-8 px-4 md:px-6">
{/* 返回按钮 */}
<div className="mb-6">
<Button
variant="ghost"
onClick={() => router.push(`/members${typeof window !== 'undefined' ? window.location.search : ''}`)}
className="gap-2 pl-0 hover:bg-transparent hover:text-primary text-2xl font-bold"
>
<ArrowLeft className="h-6 w-6" />
</Button>
</div>
{/* 始祖特殊提示框 */}
{member.isFounder && (
<div className="mb-6 p-6 bg-gradient-to-br from-amber-50 via-orange-50 to-amber-50 border-2 border-amber-400 rounded-xl shadow-md">
@@ -639,7 +654,10 @@ export default function MemberProfilePage() {
<div className={`bg-card p-6 rounded-lg ${founderBorderClass} shadow-sm`}>
<PhotoGallery
photoIds={member.photoIds}
onChange={(photoIds) => updateMember(member.id, { photoIds })}
onChange={async (photoIds) => {
await updateMember(member.id, { photoIds })
setLastSaveTime(Date.now())
}}
readonly={false}
/>
</div>
@@ -656,7 +674,10 @@ export default function MemberProfilePage() {
<div className={`bg-card p-6 rounded-lg ${founderBorderClass} shadow-sm`}>
<StoryManager
stories={member.stories}
onChange={(stories) => updateMember(member.id, { stories })}
onChange={async (stories) => {
await updateMember(member.id, { stories })
setLastSaveTime(Date.now())
}}
readonly={false}
/>
</div>
@@ -674,6 +695,7 @@ export default function MemberProfilePage() {
<MemberVersionHistory
memberId={member.id}
treeId={currentTree?.id || ''}
lastUpdated={lastSaveTime}
/>
</section>
</div>