@@ -19,6 +19,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
1919import { invoke } from "@tauri-apps/api/core" ;
2020import type { CourseGroup , OcrBlockHit , SegmentHit , Session , SessionListItem } from "../types" ;
2121import { fmtMs } from "../utils/fmt" ;
22+ import { isSessionConvertible } from "../utils/sessionEligibility" ;
2223import { emptySelection , rangeSelection , toggleSelection } from "../utils/noteSelection" ;
2324import SessionListRow from "./SessionListRow" ;
2425import type { SessionRenameRequest } from "./SessionListRow" ;
@@ -130,13 +131,6 @@ export default function SessionListPanel({
130131 }
131132 } ;
132133
133- /** 可转化判定:已结束 + 有内容 + 未转(批量转只对该集合生效) */
134- const isEligible = useCallback (
135- ( item : SessionListItem ) =>
136- item . session . status !== "recording" && item . hasContent && ! item . hasNote ,
137- [ ] ,
138- ) ;
139-
140134 /** 筛选谓词(列表与课程分组共用) */
141135 const matchFilters = useCallback (
142136 ( item : SessionListItem ) => {
@@ -243,7 +237,7 @@ export default function SessionListPanel({
243237 for ( const g of groups ?? [ ] ) for ( const i of g . sessions ) byId . set ( i . session . id , i ) ;
244238 const eligibleIds = [ ...selected ] . filter ( ( id ) => {
245239 const item = byId . get ( id ) ;
246- return item ? isEligible ( item ) : false ;
240+ return item ? isSessionConvertible ( item ) : false ;
247241 } ) ;
248242 if ( eligibleIds . length === 0 ) {
249243 showToast ( "选中的会话均不可转换(已转/进行中/无内容)" , "err" ) ;
@@ -298,7 +292,7 @@ export default function SessionListPanel({
298292 item = { item }
299293 isOpen = { openSessionId === item . session . id }
300294 multiSelected = { selected . has ( item . session . id ) }
301- canConvert = { isEligible ( item ) }
295+ canConvert = { isSessionConvertible ( item ) }
302296 renameRequest = { renameReq }
303297 onRenameEnd = { ( ) => setRenameReq ( null ) }
304298 onRenamed = { ( id ) => onSessionRenamed ( id ) }
@@ -596,7 +590,7 @@ export default function SessionListPanel({
596590 onRename = { ( it ) => setRenameReq ( { id : it . session . id , nonce : ++ renameNonceRef . current } ) }
597591 onConvert = { ( it ) => onConvert ( it ) }
598592 onDelete = { ( it ) => onDeleteOne ( it . session . id ) }
599- canConvert = { isEligible ( contextMenu . item ) }
593+ canConvert = { isSessionConvertible ( contextMenu . item ) }
600594 />
601595 ) }
602596 </ div >
0 commit comments