@@ -7,10 +7,11 @@ import React, { useState, useMemo, useCallback } from 'react';
77import { Link , List , Space } from 'tdesign-react' ;
88import { SearchFilter } from './SearchFilter' ;
99import { formatFileSize } from '../utils/format' ;
10- import type { WinFileInfo } from '../types/api' ;
10+ import type { WinFileInfo , EditionAndLanguage } from '../types/api' ;
1111
1212interface FileListProps {
1313 files : WinFileInfo [ ] ;
14+ editionAndLanguage ?: EditionAndLanguage ;
1415 emptyContent ?: React . ReactNode ;
1516 enableSearch ?: boolean ;
1617 onDownload : ( url : string ) => void ;
@@ -22,6 +23,7 @@ interface FileListProps {
2223 */
2324export const FileList : React . FC < FileListProps > = ( {
2425 files,
26+ editionAndLanguage,
2527 emptyContent,
2628 enableSearch = true ,
2729 onDownload,
@@ -41,6 +43,26 @@ export const FileList: React.FC<FileListProps> = ({
4143 setFilteredFiles ( newFilteredFiles ) ;
4244 } , [ ] ) ;
4345
46+ const languageLabelMap = useMemo ( ( ) => {
47+ const map = new Map < string , string > ( ) ;
48+ ( editionAndLanguage ?. Language || [ ] ) . forEach ( ( item ) => {
49+ const display = item . label_cn || item . label ;
50+ map . set ( item . value . toLowerCase ( ) , display ) ;
51+ map . set ( item . label . toLowerCase ( ) , display ) ;
52+ } ) ;
53+ return map ;
54+ } , [ editionAndLanguage ?. Language ] ) ;
55+
56+ const editionLabelMap = useMemo ( ( ) => {
57+ const map = new Map < string , string > ( ) ;
58+ ( editionAndLanguage ?. Edition || [ ] ) . forEach ( ( item ) => {
59+ const display = item . label_cn || item . label ;
60+ map . set ( item . value . toLowerCase ( ) , display ) ;
61+ map . set ( item . label . toLowerCase ( ) , display ) ;
62+ } ) ;
63+ return map ;
64+ } , [ editionAndLanguage ?. Edition ] ) ;
65+
4466 const renderRows = useMemo ( ( ) => {
4567 return filteredFiles . map ( ( info , index ) => (
4668 < List . ListItem className = "file-list-row" key = { `${ info . FileName } -${ index } ` } >
@@ -49,8 +71,8 @@ export const FileList: React.FC<FileListProps> = ({
4971 { `Windows ${ info . SystemCode } ${ info . VerCode } (${ info . BuildVer } )` }
5072 </ div >
5173 < div className = "file-list-meta" >
52- < span > { info . Language } </ span >
53- < span > { info . Edition } </ span >
74+ < span > { languageLabelMap . get ( ( info . LanguageCode || info . Language ) . toLowerCase ( ) ) || info . Language } </ span >
75+ < span > { editionLabelMap . get ( info . Edition . toLowerCase ( ) ) || info . Edition } </ span >
5476 < span > { info . Architecture } </ span >
5577 < span > { formatFileSize ( info . Size ) } </ span >
5678 < span > SHA: { info . Sha256 || info . Sha1 || '-' } </ span >
@@ -66,7 +88,7 @@ export const FileList: React.FC<FileListProps> = ({
6688 </ Space >
6789 </ List . ListItem >
6890 ) ) ;
69- } , [ filteredFiles , onCopy , onDownload ] ) ;
91+ } , [ editionLabelMap , filteredFiles , languageLabelMap , onCopy , onDownload ] ) ;
7092
7193 if ( files . length === 0 ) {
7294 return < div className = "file-empty" > { emptyContent } </ div > ;
0 commit comments