From df50f8b3efee5f942961f7e57d92a49cffd52bcd Mon Sep 17 00:00:00 2001 From: zxyszx <299979470+zxyszx@users.noreply.github.com> Date: Tue, 4 Aug 2026 12:55:21 +0800 Subject: [PATCH] fix: reset mailbox view on refresh --- .github/release-notes/v1.2.8.md | 18 ++++++++++++++++++ VERSION | 2 +- apps/web/src/lib/language.tsx | 2 +- apps/web/src/pages/mail.tsx | 23 ++++++++++++----------- 4 files changed, 32 insertions(+), 13 deletions(-) create mode 100644 .github/release-notes/v1.2.8.md diff --git a/.github/release-notes/v1.2.8.md b/.github/release-notes/v1.2.8.md new file mode 100644 index 0000000..20899e6 --- /dev/null +++ b/.github/release-notes/v1.2.8.md @@ -0,0 +1,18 @@ +## 本次更新 + +### 修复邮箱选择器默认状态 + +- 没有注册邮箱时,邮箱选择器明确显示“未注册邮箱”。 +- 已有邮箱时,每次打开或刷新邮箱页面默认进入“全部邮箱”的“收件箱”,不再恢复上次选择的单个邮箱。 +- 用户仍可在当前页面正常切换全部邮箱或单个邮箱,切换后统一返回收件箱。 + +### 修复邮箱下拉菜单宽度 + +- 邮箱下拉菜单现在与上方选择框等宽,不再向右多出一截。 +- 搜索框、全部邮箱和邮箱地址均在相同宽度内对齐显示。 + +### 验证 + +- 已通过前端 TypeScript 检查、生产构建和 shadcn/ui 检查。 + +**完整更新日志**:[v1.2.7...v1.2.8](https://github.com/zxyszx/NewSzxcn-Email/compare/v1.2.7...v1.2.8) diff --git a/VERSION b/VERSION index c04c650..db6fb4a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.2.7 +1.2.8 diff --git a/apps/web/src/lib/language.tsx b/apps/web/src/lib/language.tsx index 3031c83..2a957fd 100644 --- a/apps/web/src/lib/language.tsx +++ b/apps/web/src/lib/language.tsx @@ -70,7 +70,7 @@ const exactTranslations: Record = { "收起侧栏": { "zh-TW": "收合側欄", en: "Collapse sidebar" }, "选择邮箱": { "zh-TW": "選擇信箱", en: "Select mailbox" }, "加载邮箱...": { "zh-TW": "載入信箱...", en: "Loading mailboxes..." }, - "未创建邮箱": { "zh-TW": "尚未建立信箱", en: "No mailbox created" }, + "未注册邮箱": { "zh-TW": "未註冊信箱", en: "Unregistered mailbox" }, "没有可用邮箱": { "zh-TW": "沒有可用信箱", en: "No mailboxes available" }, "邮箱地址已复制": { "zh-TW": "信箱地址已複製", en: "Mailbox address copied" }, "打开导航": { "zh-TW": "開啟導覽", en: "Open navigation" }, diff --git a/apps/web/src/pages/mail.tsx b/apps/web/src/pages/mail.tsx index 2a05108..6ef87b8 100644 --- a/apps/web/src/pages/mail.tsx +++ b/apps/web/src/pages/mail.tsx @@ -88,7 +88,6 @@ const filterLabels: Record = { const emptyAdvancedSearch: AdvancedMailSearch = { from: "", to: "", subject: "", startDate: "", endDate: "", hasAttachments: false, unread: false, starred: false } const emptyAdvancedSearchDraft: AdvancedMailSearchDraft = { ...emptyAdvancedSearch } -const mailboxSelectionStorageVersion = "2" const mailCompactBreakpoint = 768 const mailDetailBreakpoint = 768 @@ -122,10 +121,7 @@ export function MailPage() { const [composeDraft, setComposeDraft] = React.useState() const sidebarCollapsed = false const [mailFilter, setMailFilter] = React.useState("all") - const [selectedMailboxId, setSelectedMailboxId] = React.useState(() => { - if (localStorage.getItem("lanqin:selected-mailbox-version") !== mailboxSelectionStorageVersion) return "all" - return localStorage.getItem("lanqin:selected-mailbox") || "all" - }) + const [selectedMailboxId, setSelectedMailboxId] = React.useState("all") const [selectedExternalAccountId, setSelectedExternalAccountId] = React.useState("") const [expandedExternalAccountIds, setExpandedExternalAccountIds] = React.useState([]) const [externalFolder, setExternalFolder] = React.useState("INBOX") @@ -491,14 +487,19 @@ export function MailPage() { } if (!selectedMailboxId || (selectedMailboxId !== "all" && !items.some((item) => item.id === selectedMailboxId))) { setSelectedMailboxId("all") + setSelectedExternalAccountId("") + setFolder("Inbox") + setMailView("folder") + setSelectedLabelId("") + setSelectedId(null) + setMailFilter("all") } }, [mailboxList.isSuccess, mailboxList.data?.items, selectedMailboxId]) React.useEffect(() => { - if (selectedMailboxId) localStorage.setItem("lanqin:selected-mailbox", selectedMailboxId) - else localStorage.removeItem("lanqin:selected-mailbox") - localStorage.setItem("lanqin:selected-mailbox-version", mailboxSelectionStorageVersion) - }, [selectedMailboxId]) + localStorage.removeItem("lanqin:selected-mailbox") + localStorage.removeItem("lanqin:selected-mailbox-version") + }, []) React.useEffect(() => { setSelectedId(null) @@ -3219,7 +3220,7 @@ function MailboxSwitcher({ collapsed, mailboxes, loading, selectedMailboxId, sel const [mailboxQuery, setMailboxQuery] = React.useState("") const isAllSelected = selectedMailboxId === "all" const mailboxUnavailable = loading || mailboxes.length === 0 - const displayAddress = loading ? "加载邮箱..." : mailboxes.length === 0 ? "未创建邮箱" : isAllSelected ? "全部邮箱" : selectedMailbox?.address || "选择邮箱" + const displayAddress = loading ? "加载邮箱..." : mailboxes.length === 0 ? "未注册邮箱" : isAllSelected ? "全部邮箱" : selectedMailbox?.address || "选择邮箱" const selectedUnreadCount = isAllSelected ? unreadCount : (selectedMailbox?.unreadCount ?? unreadCount) const normalizedQuery = mailboxQuery.trim().toLowerCase() const showAllMailboxOption = !normalizedQuery || "全部邮箱".includes(normalizedQuery) || "all".includes(normalizedQuery) @@ -3248,7 +3249,7 @@ function MailboxSwitcher({ collapsed, mailboxes, loading, selectedMailboxId, sel align="start" className={cn( "max-w-[calc(100vw-32px)] p-1", - collapsed ? "w-[204px]" : "w-[calc(var(--radix-dropdown-menu-trigger-width)+2.375rem)] min-w-[calc(var(--radix-dropdown-menu-trigger-width)+2.375rem)]" + collapsed ? "w-[204px]" : "w-[var(--radix-dropdown-menu-trigger-width)] min-w-[var(--radix-dropdown-menu-trigger-width)]" )} > {mailboxes.length > 0 && (