支持板块图标与主题色自定义,并优化列表加载与未保存离开提示。

新增后端图标校验与色槽规范化,前端展示 BoardBadge/骨架屏,发帖与板块管理页增加未保存确认。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-28 17:13:32 +08:00
parent e038d4f9e9
commit 55c256654b
63 changed files with 1966 additions and 714 deletions

36
service/board_icon.go Normal file
View File

@@ -0,0 +1,36 @@
package service
import "strings"
// AllowedBoardIcons 与前端 BOARD_ICON_OPTIONS 的 key 保持一致
var AllowedBoardIcons = map[string]struct{}{
"code-2": {}, "coffee": {}, "help-circle": {}, "message-square": {},
"lightbulb": {}, "book-open": {}, "gamepad-2": {}, "palette": {},
"music": {}, "camera": {}, "heart": {}, "zap": {},
"globe": {}, "users": {}, "briefcase": {}, "graduation-cap": {},
"shopping-bag": {}, "map-pin": {}, "megaphone": {}, "flame": {},
"star": {}, "folder": {}, "wrench": {}, "cpu": {},
}
// NormalizeBoardIcon 校验并规范化板块图标 key非法或空则返回空串
func NormalizeBoardIcon(icon string) string {
icon = strings.TrimSpace(strings.ToLower(icon))
if icon == "" {
return ""
}
if _, ok := AllowedBoardIcons[icon]; !ok {
return ""
}
return icon
}
// NormalizeBoardColorIndex -1 表示自动07 为有效色槽
func NormalizeBoardColorIndex(colorIndex int) int {
if colorIndex < 0 {
return -1
}
if colorIndex > 7 {
return colorIndex % 8
}
return colorIndex
}