@@ -34,17 +34,22 @@ export function RecordDetailView({ dataSource, objects, onEdit }: RecordDetailVi
3434 const [ recordViewers , setRecordViewers ] = useState < PresenceUser [ ] > ( [ ] ) ;
3535 const objectDef = objects . find ( ( o : any ) => o . name === objectName ) ;
3636
37+ // Strip objectName prefix from URL-based recordId (e.g. "contact-123" → "123")
38+ const pureRecordId = recordId && objectName && recordId . startsWith ( `${ objectName } -` )
39+ ? recordId . slice ( objectName . length + 1 )
40+ : recordId ;
41+
3742 const currentUser = user
3843 ? { id : user . id , name : user . name , avatar : user . image }
3944 : FALLBACK_USER ;
4045
4146 // Fetch presence and comments from API
4247 useEffect ( ( ) => {
43- if ( ! dataSource || ! objectName || ! recordId ) return ;
44- const threadId = `${ objectName } :${ recordId } ` ;
48+ if ( ! dataSource || ! objectName || ! pureRecordId ) return ;
49+ const threadId = `${ objectName } :${ pureRecordId } ` ;
4550
4651 // Fetch record viewers
47- dataSource . find ( 'sys_presence' , { $filter : `recordId eq '${ recordId } '` } )
52+ dataSource . find ( 'sys_presence' , { $filter : `recordId eq '${ pureRecordId } '` } )
4853 . then ( ( res : any ) => { if ( res . data ?. length ) setRecordViewers ( res . data ) ; } )
4954 . catch ( ( ) => { } ) ;
5055
@@ -72,7 +77,7 @@ export function RecordDetailView({ dataSource, objects, onEdit }: RecordDetailVi
7277 }
7378 } )
7479 . catch ( ( ) => { } ) ;
75- } , [ dataSource , objectName , recordId , currentUser ] ) ;
80+ } , [ dataSource , objectName , pureRecordId , currentUser ] ) ;
7681
7782 const handleAddComment = useCallback (
7883 async ( text : string ) => {
@@ -87,7 +92,7 @@ export function RecordDetailView({ dataSource, objects, onEdit }: RecordDetailVi
8792 setFeedItems ( prev => [ ...prev , newItem ] ) ;
8893 // Persist to backend
8994 if ( dataSource ) {
90- const threadId = `${ objectName } :${ recordId } ` ;
95+ const threadId = `${ objectName } :${ pureRecordId } ` ;
9196 dataSource . create ( 'sys_comment' , {
9297 id : newItem . id ,
9398 threadId,
@@ -98,7 +103,7 @@ export function RecordDetailView({ dataSource, objects, onEdit }: RecordDetailVi
98103 } ) . catch ( ( ) => { } ) ;
99104 }
100105 } ,
101- [ currentUser , dataSource , objectName , recordId ] ,
106+ [ currentUser , dataSource , objectName , pureRecordId ] ,
102107 ) ;
103108
104109 const handleAddReply = useCallback (
@@ -122,7 +127,7 @@ export function RecordDetailView({ dataSource, objects, onEdit }: RecordDetailVi
122127 ) ;
123128 } ) ;
124129 if ( dataSource ) {
125- const threadId = `${ objectName } :${ recordId } ` ;
130+ const threadId = `${ objectName } :${ pureRecordId } ` ;
126131 dataSource . create ( 'sys_comment' , {
127132 id : newItem . id ,
128133 threadId,
@@ -134,7 +139,7 @@ export function RecordDetailView({ dataSource, objects, onEdit }: RecordDetailVi
134139 } ) . catch ( ( ) => { } ) ;
135140 }
136141 } ,
137- [ currentUser , dataSource , objectName , recordId ] ,
142+ [ currentUser , dataSource , objectName , pureRecordId ] ,
138143 ) ;
139144
140145 const handleToggleReaction = useCallback (
@@ -255,7 +260,7 @@ export function RecordDetailView({ dataSource, objects, onEdit }: RecordDetailVi
255260 const detailSchema : DetailViewSchema = {
256261 type : 'detail-view' ,
257262 objectName : objectDef . name ,
258- resourceId : recordId ,
263+ resourceId : pureRecordId ,
259264 showBack : true ,
260265 onBack : 'history' ,
261266 showEdit : true ,
@@ -290,11 +295,7 @@ export function RecordDetailView({ dataSource, objects, onEdit }: RecordDetailVi
290295 schema = { detailSchema }
291296 dataSource = { dataSource }
292297 onEdit = { ( ) => {
293- // Strip objectName prefix from URL-based recordId (e.g. "contact-123" → "123")
294- const pureId = recordId && objectName && recordId . startsWith ( `${ objectName } -` )
295- ? recordId . slice ( objectName . length + 1 )
296- : recordId ;
297- onEdit ( { _id : pureId , id : pureId } ) ;
298+ onEdit ( { _id : pureRecordId , id : pureRecordId } ) ;
298299 } }
299300 />
300301
0 commit comments