fix: reset mailbox view on refresh
Docker Release / Check web and api (push) Waiting to run
Docker Release / Resolve release tag (push) Blocked by required conditions
Docker Release / Build and publish all-in-one (push) Blocked by required conditions
Docker Release / Build and publish api (push) Blocked by required conditions
Docker Release / Build and publish web (push) Blocked by required conditions
Docker Release / Build and publish dovecot (push) Blocked by required conditions
Docker Release / Build and publish postfix (push) Blocked by required conditions
Docker Release / Build and publish rspamd (push) Blocked by required conditions
Docker Release / Create GitHub release (push) Blocked by required conditions
Docker Release / Check web and api (push) Waiting to run
Docker Release / Resolve release tag (push) Blocked by required conditions
Docker Release / Build and publish all-in-one (push) Blocked by required conditions
Docker Release / Build and publish api (push) Blocked by required conditions
Docker Release / Build and publish web (push) Blocked by required conditions
Docker Release / Build and publish dovecot (push) Blocked by required conditions
Docker Release / Build and publish postfix (push) Blocked by required conditions
Docker Release / Build and publish rspamd (push) Blocked by required conditions
Docker Release / Create GitHub release (push) Blocked by required conditions
This commit is contained in:
@@ -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)
|
||||||
@@ -70,7 +70,7 @@ const exactTranslations: Record<string, Translation> = {
|
|||||||
"收起侧栏": { "zh-TW": "收合側欄", en: "Collapse sidebar" },
|
"收起侧栏": { "zh-TW": "收合側欄", en: "Collapse sidebar" },
|
||||||
"选择邮箱": { "zh-TW": "選擇信箱", en: "Select mailbox" },
|
"选择邮箱": { "zh-TW": "選擇信箱", en: "Select mailbox" },
|
||||||
"加载邮箱...": { "zh-TW": "載入信箱...", en: "Loading mailboxes..." },
|
"加载邮箱...": { "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: "No mailboxes available" },
|
||||||
"邮箱地址已复制": { "zh-TW": "信箱地址已複製", en: "Mailbox address copied" },
|
"邮箱地址已复制": { "zh-TW": "信箱地址已複製", en: "Mailbox address copied" },
|
||||||
"打开导航": { "zh-TW": "開啟導覽", en: "Open navigation" },
|
"打开导航": { "zh-TW": "開啟導覽", en: "Open navigation" },
|
||||||
|
|||||||
+12
-11
@@ -88,7 +88,6 @@ const filterLabels: Record<MailFilter, string> = {
|
|||||||
|
|
||||||
const emptyAdvancedSearch: AdvancedMailSearch = { from: "", to: "", subject: "", startDate: "", endDate: "", hasAttachments: false, unread: false, starred: false }
|
const emptyAdvancedSearch: AdvancedMailSearch = { from: "", to: "", subject: "", startDate: "", endDate: "", hasAttachments: false, unread: false, starred: false }
|
||||||
const emptyAdvancedSearchDraft: AdvancedMailSearchDraft = { ...emptyAdvancedSearch }
|
const emptyAdvancedSearchDraft: AdvancedMailSearchDraft = { ...emptyAdvancedSearch }
|
||||||
const mailboxSelectionStorageVersion = "2"
|
|
||||||
const mailCompactBreakpoint = 768
|
const mailCompactBreakpoint = 768
|
||||||
const mailDetailBreakpoint = 768
|
const mailDetailBreakpoint = 768
|
||||||
|
|
||||||
@@ -122,10 +121,7 @@ export function MailPage() {
|
|||||||
const [composeDraft, setComposeDraft] = React.useState<ComposeDraft | undefined>()
|
const [composeDraft, setComposeDraft] = React.useState<ComposeDraft | undefined>()
|
||||||
const sidebarCollapsed = false
|
const sidebarCollapsed = false
|
||||||
const [mailFilter, setMailFilter] = React.useState<MailFilter>("all")
|
const [mailFilter, setMailFilter] = React.useState<MailFilter>("all")
|
||||||
const [selectedMailboxId, setSelectedMailboxId] = React.useState(() => {
|
const [selectedMailboxId, setSelectedMailboxId] = React.useState("all")
|
||||||
if (localStorage.getItem("lanqin:selected-mailbox-version") !== mailboxSelectionStorageVersion) return "all"
|
|
||||||
return localStorage.getItem("lanqin:selected-mailbox") || "all"
|
|
||||||
})
|
|
||||||
const [selectedExternalAccountId, setSelectedExternalAccountId] = React.useState("")
|
const [selectedExternalAccountId, setSelectedExternalAccountId] = React.useState("")
|
||||||
const [expandedExternalAccountIds, setExpandedExternalAccountIds] = React.useState<string[]>([])
|
const [expandedExternalAccountIds, setExpandedExternalAccountIds] = React.useState<string[]>([])
|
||||||
const [externalFolder, setExternalFolder] = React.useState("INBOX")
|
const [externalFolder, setExternalFolder] = React.useState("INBOX")
|
||||||
@@ -491,14 +487,19 @@ export function MailPage() {
|
|||||||
}
|
}
|
||||||
if (!selectedMailboxId || (selectedMailboxId !== "all" && !items.some((item) => item.id === selectedMailboxId))) {
|
if (!selectedMailboxId || (selectedMailboxId !== "all" && !items.some((item) => item.id === selectedMailboxId))) {
|
||||||
setSelectedMailboxId("all")
|
setSelectedMailboxId("all")
|
||||||
|
setSelectedExternalAccountId("")
|
||||||
|
setFolder("Inbox")
|
||||||
|
setMailView("folder")
|
||||||
|
setSelectedLabelId("")
|
||||||
|
setSelectedId(null)
|
||||||
|
setMailFilter("all")
|
||||||
}
|
}
|
||||||
}, [mailboxList.isSuccess, mailboxList.data?.items, selectedMailboxId])
|
}, [mailboxList.isSuccess, mailboxList.data?.items, selectedMailboxId])
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (selectedMailboxId) localStorage.setItem("lanqin:selected-mailbox", selectedMailboxId)
|
localStorage.removeItem("lanqin:selected-mailbox")
|
||||||
else localStorage.removeItem("lanqin:selected-mailbox")
|
localStorage.removeItem("lanqin:selected-mailbox-version")
|
||||||
localStorage.setItem("lanqin:selected-mailbox-version", mailboxSelectionStorageVersion)
|
}, [])
|
||||||
}, [selectedMailboxId])
|
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
setSelectedId(null)
|
setSelectedId(null)
|
||||||
@@ -3219,7 +3220,7 @@ function MailboxSwitcher({ collapsed, mailboxes, loading, selectedMailboxId, sel
|
|||||||
const [mailboxQuery, setMailboxQuery] = React.useState("")
|
const [mailboxQuery, setMailboxQuery] = React.useState("")
|
||||||
const isAllSelected = selectedMailboxId === "all"
|
const isAllSelected = selectedMailboxId === "all"
|
||||||
const mailboxUnavailable = loading || mailboxes.length === 0
|
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 selectedUnreadCount = isAllSelected ? unreadCount : (selectedMailbox?.unreadCount ?? unreadCount)
|
||||||
const normalizedQuery = mailboxQuery.trim().toLowerCase()
|
const normalizedQuery = mailboxQuery.trim().toLowerCase()
|
||||||
const showAllMailboxOption = !normalizedQuery || "全部邮箱".includes(normalizedQuery) || "all".includes(normalizedQuery)
|
const showAllMailboxOption = !normalizedQuery || "全部邮箱".includes(normalizedQuery) || "all".includes(normalizedQuery)
|
||||||
@@ -3248,7 +3249,7 @@ function MailboxSwitcher({ collapsed, mailboxes, loading, selectedMailboxId, sel
|
|||||||
align="start"
|
align="start"
|
||||||
className={cn(
|
className={cn(
|
||||||
"max-w-[calc(100vw-32px)] p-1",
|
"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 && (
|
{mailboxes.length > 0 && (
|
||||||
|
|||||||
Reference in New Issue
Block a user