ke: 鸿蒙 UI 整改:emoji→AmIcon 图标、宽屏侧栏、Md 第三方库、通知可配置项
- common/Icons.ets(生成器产出):43 枚与 WebUI icons.tsx 同几何的 Path 图标 - NavItems.ts:icon(emoji) → iconKey,与 WebUI 导航同图标 - 全页面 emoji 清除(空态改单行灰字,按钮/头像/刷新等换 AmIcon) - MailDetailPage 接入 @luvi/lv-markdown-in(第三方,替代手写解析器) - WideSidebar + MainPage isWide(≥768vp):宽屏侧栏 60vp 图标轨、藏底部条、onAreaChange 断点 - 通知=可配置项(默认关):PushService.isEnabled/setEnabled + reportToken 最前 gate (关=不取token/不弹权限/不打网关)+ SettingsPage Toggle + 服务端通道状态提示 - EntryAbility.onCreate 解析 want:冷启点通知也能路由(原来只有 onNewWant) - 判据:harmony-widescreen(4) + harmony-push-optin(4) 新增;harmony-nav 同步 iconKey/条件 padding
This commit is contained in:
@ -5,10 +5,13 @@
|
||||
*/
|
||||
import { ApiClient, ApiError } from '../api/ApiClient';
|
||||
import { Theme } from '../common/Theme';
|
||||
/* Markdown 渲染(第三方库,鸿蒙原生 ArkTS 引擎,不依赖 WebView)—— 正文用它,不再吐原始 Markdown */
|
||||
import { Markdown } from '@luvi/lv-markdown-in';
|
||||
import { MailApi } from '../api/MailApi';
|
||||
import { AccountManager, AccountInfo } from '../api/AccountManager';
|
||||
import { MailDetail, SendMailRequest } from '../model/Models';
|
||||
import { MailDetailParams } from '../model/RouteParams';
|
||||
import { AmIcon } from '../common/Icons';
|
||||
|
||||
@Entry
|
||||
@Component
|
||||
@ -207,12 +210,23 @@ struct MailDetailPage {
|
||||
.width('100%')
|
||||
.padding({ left: 16, right: 16, top: 16, bottom: 8 })
|
||||
|
||||
Text(this.body)
|
||||
.fontSize(15)
|
||||
.fontColor(Theme.textPrimary)
|
||||
/*
|
||||
* 邮件正文:**用 Markdown 渲染**,不再直接吐原文。
|
||||
*
|
||||
* 2026-09-15 之前这里是 `Text(this.body)` —— 正文是 Markdown,
|
||||
* 于是用户看到的是 `**加粗**`、`# 标题`、`| 表 |` 的**字面量**。
|
||||
* WebUI 侧一直用 `react-markdown` + `remark-gfm` 渲染
|
||||
*(`MailView.tsx` 的 `.markdown` 容器),这是两端**功能不对等**的一处硬缺口。
|
||||
*
|
||||
* 用第三方库 `@luvi/lv-markdown-in`(鸿蒙原生 ArkTS 渲染引擎,
|
||||
* **不依赖 WebView**):解析与渲染全在原生层,`ohpm install` 一行接入。
|
||||
* 我一度自己写了一个 GFM 子集解析器 —— 随后按用户指示换成第三方库:
|
||||
* 自研那份只覆盖子集、还要自己养判据,而库里有 LaTeX / Prism 高亮 /
|
||||
* 大文本懒渲染 / 70+ 样式 API,都是自研要重做的。
|
||||
*/
|
||||
Markdown({ text: this.body })
|
||||
.width('100%')
|
||||
.padding({ left: 16, right: 16, bottom: 16 })
|
||||
.lineHeight(24)
|
||||
|
||||
Blank().height(60)
|
||||
}
|
||||
@ -223,7 +237,12 @@ struct MailDetailPage {
|
||||
|
||||
// 底部回复按钮
|
||||
Row() {
|
||||
Button('↩ 回复')
|
||||
Button() {
|
||||
Row() {
|
||||
AmIcon({ iconName: 'forward', iconSize: 16, iconColor: Theme.accentFg })
|
||||
Text('回复').fontSize(15).fontColor(Theme.accentFg).margin({ left: 6 })
|
||||
}
|
||||
}
|
||||
.width('90%').height(44)
|
||||
.backgroundColor(Theme.accent)
|
||||
.fontSize(15)
|
||||
|
||||
Reference in New Issue
Block a user