新增后端图标校验与色槽规范化,前端展示 BoardBadge/骨架屏,发帖与板块管理页增加未保存确认。 Co-authored-by: Cursor <cursoragent@cursor.com>
37 lines
1.0 KiB
Go
37 lines
1.0 KiB
Go
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 表示自动;0–7 为有效色槽
|
||
func NormalizeBoardColorIndex(colorIndex int) int {
|
||
if colorIndex < 0 {
|
||
return -1
|
||
}
|
||
if colorIndex > 7 {
|
||
return colorIndex % 8
|
||
}
|
||
return colorIndex
|
||
}
|