Signed-off-by: OpenClaw Bot <ai-agent@topdoglabs.com>
This commit is contained in:
parent
82658707a2
commit
7c1b9d578c
@ -47,19 +47,29 @@ export default function SettingsPage() {
|
||||
if (isMounted) router.replace("/login")
|
||||
return
|
||||
}
|
||||
const data = await res.json()
|
||||
const data = await res.json().catch(() => null)
|
||||
const user = data?.user
|
||||
if (
|
||||
!user
|
||||
|| typeof user.id !== "string"
|
||||
|| typeof user.name !== "string"
|
||||
|| typeof user.email !== "string"
|
||||
) {
|
||||
if (isMounted) router.replace("/login")
|
||||
return
|
||||
}
|
||||
if (!isMounted) return
|
||||
|
||||
setName(data.user.name || "")
|
||||
setEmail(data.user.email || "")
|
||||
setProfileAvatarUrl(data.user.avatarUrl || "")
|
||||
setCurrentUserId(data.user.id || "")
|
||||
setInitialEmail(data.user.email || "")
|
||||
setName(user.name || "")
|
||||
setEmail(user.email || "")
|
||||
setProfileAvatarUrl(typeof user.avatarUrl === "string" ? user.avatarUrl : "")
|
||||
setCurrentUserId(user.id || "")
|
||||
setInitialEmail(user.email || "")
|
||||
setCurrentUser({
|
||||
id: data.user.id,
|
||||
name: data.user.name,
|
||||
email: data.user.email,
|
||||
avatarUrl: data.user.avatarUrl,
|
||||
id: user.id,
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
avatarUrl: typeof user.avatarUrl === "string" ? user.avatarUrl : undefined,
|
||||
})
|
||||
setAuthReady(true)
|
||||
} catch {
|
||||
@ -111,23 +121,35 @@ export default function SettingsPage() {
|
||||
body: JSON.stringify(payload),
|
||||
})
|
||||
|
||||
const data = await res.json()
|
||||
const data = await res.json().catch(() => null)
|
||||
if (!res.ok) {
|
||||
setProfileError(data.error || "Failed to update profile")
|
||||
setProfileError(
|
||||
data && typeof data.error === "string" ? data.error : "Failed to update profile"
|
||||
)
|
||||
return
|
||||
}
|
||||
const user = data?.user
|
||||
if (
|
||||
!user
|
||||
|| typeof user.id !== "string"
|
||||
|| typeof user.name !== "string"
|
||||
|| typeof user.email !== "string"
|
||||
) {
|
||||
setProfileError("Profile update returned invalid data")
|
||||
return
|
||||
}
|
||||
|
||||
setCurrentUser({
|
||||
id: data.user.id,
|
||||
name: data.user.name,
|
||||
email: data.user.email,
|
||||
avatarUrl: data.user.avatarUrl,
|
||||
id: user.id,
|
||||
name: user.name,
|
||||
email: user.email,
|
||||
avatarUrl: typeof user.avatarUrl === "string" ? user.avatarUrl : undefined,
|
||||
})
|
||||
setName(data.user.name)
|
||||
setEmail(data.user.email)
|
||||
setProfileAvatarUrl(data.user.avatarUrl || "")
|
||||
setCurrentUserId(data.user.id)
|
||||
setInitialEmail(data.user.email)
|
||||
setName(user.name)
|
||||
setEmail(user.email)
|
||||
setProfileAvatarUrl(typeof user.avatarUrl === "string" ? user.avatarUrl : "")
|
||||
setCurrentUserId(user.id)
|
||||
setInitialEmail(user.email)
|
||||
setProfileCurrentPassword("")
|
||||
setProfileSuccess("Profile updated")
|
||||
} catch {
|
||||
@ -161,7 +183,7 @@ export default function SettingsPage() {
|
||||
[avatarSeed, name, email]
|
||||
)
|
||||
const avatarPresets = useMemo(
|
||||
() => buildAvatarPresets(avatarSeed, name || email || "User", 8),
|
||||
() => Array.from(new Set(buildAvatarPresets(avatarSeed, name || email || "User", 8))),
|
||||
[avatarSeed, name, email]
|
||||
)
|
||||
const profilePreviewAvatarUrl = profileAvatarUrl || generatedAvatarUrl
|
||||
@ -194,9 +216,11 @@ export default function SettingsPage() {
|
||||
}),
|
||||
})
|
||||
|
||||
const data = await res.json()
|
||||
const data = await res.json().catch(() => null)
|
||||
if (!res.ok) {
|
||||
setPasswordError(data.error || "Failed to update password")
|
||||
setPasswordError(
|
||||
data && typeof data.error === "string" ? data.error : "Failed to update password"
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
@ -295,7 +319,7 @@ export default function SettingsPage() {
|
||||
<div className="flex flex-wrap gap-2">
|
||||
{avatarPresets.map((presetUrl, index) => (
|
||||
<button
|
||||
key={presetUrl}
|
||||
key={`${avatarSeed}-preset-${index}`}
|
||||
type="button"
|
||||
onClick={() => setProfileAvatarUrl(presetUrl)}
|
||||
className={`rounded-full p-0.5 border ${profileAvatarUrl === presetUrl ? "border-blue-400" : "border-slate-700 hover:border-slate-500"}`}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user