All files / app/(tabs)/forum constants.ts

100% Statements 6/6
100% Branches 0/0
100% Functions 0/0
100% Lines 6/6

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81                          5x     5x     5x                               5x               5x                       5x                                                  
/**
 * 论坛模块常量配置
 * 统一管理颜色、尺寸、限制等常量
 */
 
import {
  FUNCTIONAL_COLORS,
  TAG_COLORS,
  ForumColors as UnifiedForumColors,
} from '@/src/constants/colors';
import type { PostCategory } from '@/src/lib/supabase';
 
// ===== 主题颜色 (使用统一颜色系统) =====
export const ForumColors = UnifiedForumColors;
 
// ===== 莫兰迪色系(用于标签,使用统一颜色系统) =====
export const MORANDI_COLORS = TAG_COLORS;
 
// ===== 媒体限制 =====
export const MEDIA_LIMITS = {
  /** 单文件最大尺寸(字节) */
  MAX_FILE_SIZE: 10 * 1024 * 1024, // 10MB
  /** 最多上传文件数 */
  MAX_FILES_COUNT: 9,
  /** 支持的图片类型 */
  IMAGE_TYPES: ['image/jpeg', 'image/jpg', 'image/png', 'image/gif', 'image/webp'] as const,
  /** 支持的视频类型 */
  VIDEO_TYPES: ['video/mp4', 'video/quicktime', 'video/x-msvideo'] as const,
} as const;
 
// ===== 帖子分类配置 (使用统一颜色系统) =====
export const POST_CATEGORIES: readonly {
  key: PostCategory;
  label: string;
  color?: string;
}[] = [
  { key: 'help', label: '求助', color: FUNCTIONAL_COLORS.help },
  { key: 'share', label: '分享', color: FUNCTIONAL_COLORS.share },
  { key: 'science', label: '科普', color: FUNCTIONAL_COLORS.science },
  { key: 'warning', label: '避雷', color: FUNCTIONAL_COLORS.warning },
] as const;
 
// ===== UI 配置 =====
export const UI_CONFIG = {
  /** 媒体预览缩略图尺寸 */
  THUMBNAIL_SIZE: 90,
  /** 列表中显示的最多标签数 */
  MAX_TAGS_DISPLAY: 4,
  /** 列表中显示的最多媒体预览数 */
  MAX_MEDIA_PREVIEW: 3,
  /** 评论区最大高度比例 */
  COMMENT_MAX_HEIGHT_RATIO: 0.3,
} as const;
 
// ===== 提示文案 =====
export const MESSAGES = {
  SUCCESS: {
    POST_CREATED: '发布成功',
    POST_UPDATED: '更新成功',
    POST_DELETED: '删除成功',
    COMMENT_CREATED: '评论成功',
    COMMENT_UPDATED: '更新成功',
    COMMENT_DELETED: '删除成功',
  },
  ERROR: {
    POST_FAILED: '发布失败',
    UPDATE_FAILED: '更新失败',
    DELETE_FAILED: '删除失败',
    LOAD_FAILED: '加载失败',
    OPERATION_FAILED: '操作失败',
    NO_CONTENT: '请输入内容或选择媒体',
    FILE_TOO_LARGE: '文件大小超过限制',
    TOO_MANY_FILES: `最多可上传 ${MEDIA_LIMITS.MAX_FILES_COUNT} 个文件`,
    FILE_TYPE_INVALID: `仅支持图片/视频,单文件≤${MEDIA_LIMITS.MAX_FILE_SIZE / (1024 * 1024)}MB`,
  },
  CONFIRM: {
    DELETE_POST: '确定删除该帖子吗?',
    DELETE_COMMENT: '确定删除该评论吗?',
  },
} as const;