Skip to content

Commit 45a478b

Browse files
Copilothotlong
andcommitted
Fix lint errors: remove ref access during render and improve type safety
Co-authored-by: hotlong <50353452+hotlong@users.noreply.github.com>
1 parent 3b3dba7 commit 45a478b

File tree

2 files changed

+17
-21
lines changed

2 files changed

+17
-21
lines changed

examples/object-view-demo/src/App.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ const createMockDataSource = (): ObjectQLDataSource => {
2626

2727
return {
2828
// Find all records
29-
find: async (objectName: string, params?: any) => {
29+
find: async (objectName: string, params?: Record<string, unknown>) => {
3030
console.log('find:', objectName, params);
3131
await new Promise((resolve) => setTimeout(resolve, 300)); // Simulate network delay
3232
return {
@@ -43,7 +43,7 @@ const createMockDataSource = (): ObjectQLDataSource => {
4343
},
4444

4545
// Create a new record
46-
create: async (objectName: string, record: any) => {
46+
create: async (objectName: string, record: Record<string, unknown>) => {
4747
console.log('create:', objectName, record);
4848
await new Promise((resolve) => setTimeout(resolve, 300));
4949
const newRecord = {
@@ -56,7 +56,7 @@ const createMockDataSource = (): ObjectQLDataSource => {
5656
},
5757

5858
// Update an existing record
59-
update: async (objectName: string, id: string | number, record: any) => {
59+
update: async (objectName: string, id: string | number, record: Record<string, unknown>) => {
6060
console.log('update:', objectName, id, record);
6161
await new Promise((resolve) => setTimeout(resolve, 300));
6262
const index = data.findIndex((item) => item._id === id);
@@ -80,7 +80,7 @@ const createMockDataSource = (): ObjectQLDataSource => {
8080
},
8181

8282
// Bulk operations
83-
bulk: async (objectName: string, operation: string, records: any[]) => {
83+
bulk: async (objectName: string, operation: string, records: Record<string, unknown>[]) => {
8484
console.log('bulk:', objectName, operation, records);
8585
await new Promise((resolve) => setTimeout(resolve, 400));
8686
if (operation === 'delete') {

packages/plugin-object/src/ObjectView.tsx

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* Provides list view with integrated search, filters, and create/edit operations.
1414
*/
1515

16-
import React, { useEffect, useState, useCallback, useRef } from 'react';
16+
import React, { useEffect, useState, useCallback } from 'react';
1717
import type { ObjectViewSchema, ObjectTableSchema, ObjectFormSchema } from '@object-ui/types';
1818
import type { ObjectQLDataSource } from '@object-ui/data-objectql';
1919
import { ObjectTable } from './ObjectTable';
@@ -29,7 +29,6 @@ import {
2929
DrawerHeader,
3030
DrawerTitle,
3131
DrawerDescription,
32-
DrawerClose,
3332
Button,
3433
Input,
3534
} from '@object-ui/components';
@@ -78,14 +77,13 @@ export const ObjectView: React.FC<ObjectViewProps> = ({
7877
dataSource,
7978
className,
8079
}) => {
81-
const [objectSchema, setObjectSchema] = useState<any>(null);
80+
const [objectSchema, setObjectSchema] = useState<Record<string, unknown> | null>(null);
8281
const [isFormOpen, setIsFormOpen] = useState(false);
8382
const [formMode, setFormMode] = useState<FormMode>('create');
84-
const [selectedRecord, setSelectedRecord] = useState<any>(null);
83+
const [selectedRecord, setSelectedRecord] = useState<Record<string, unknown> | null>(null);
8584
const [searchQuery, setSearchQuery] = useState('');
8685
const [showFilters, setShowFilters] = useState(false);
8786
const [refreshKey, setRefreshKey] = useState(0);
88-
const tableKey = useRef(0);
8987

9088
// Fetch object schema from ObjectQL
9189
useEffect(() => {
@@ -126,10 +124,10 @@ export const ObjectView: React.FC<ObjectViewProps> = ({
126124
}, [layout, schema]);
127125

128126
// Handle edit action
129-
const handleEdit = useCallback((record: any) => {
127+
const handleEdit = useCallback((record: Record<string, unknown>) => {
130128
if (layout === 'page' && schema.onNavigate) {
131129
const recordId = record._id || record.id;
132-
schema.onNavigate(recordId, 'edit');
130+
schema.onNavigate(recordId as string | number, 'edit');
133131
} else {
134132
setFormMode('edit');
135133
setSelectedRecord(record);
@@ -138,10 +136,10 @@ export const ObjectView: React.FC<ObjectViewProps> = ({
138136
}, [layout, schema]);
139137

140138
// Handle view action
141-
const handleView = useCallback((record: any) => {
139+
const handleView = useCallback((record: Record<string, unknown>) => {
142140
if (layout === 'page' && schema.onNavigate) {
143141
const recordId = record._id || record.id;
144-
schema.onNavigate(recordId, 'view');
142+
schema.onNavigate(recordId as string | number, 'view');
145143
} else {
146144
setFormMode('view');
147145
setSelectedRecord(record);
@@ -150,22 +148,22 @@ export const ObjectView: React.FC<ObjectViewProps> = ({
150148
}, [layout, schema]);
151149

152150
// Handle row click
153-
const handleRowClick = useCallback((record: any) => {
151+
const handleRowClick = useCallback((record: Record<string, unknown>) => {
154152
if (operations.read !== false) {
155153
handleView(record);
156154
}
157155
}, [operations.read, handleView]);
158156

159157
// Handle delete action
160-
const handleDelete = useCallback((_record: any) => {
158+
const handleDelete = useCallback((_record: Record<string, unknown>) => {
161159
// Trigger table refresh after delete
162-
tableKey.current += 1;
160+
setRefreshKey(prev => prev + 1);
163161
}, []);
164162

165163
// Handle bulk delete action
166-
const handleBulkDelete = useCallback((_records: any[]) => {
164+
const handleBulkDelete = useCallback((_records: Record<string, unknown>[]) => {
167165
// Trigger table refresh after bulk delete
168-
tableKey.current += 1;
166+
setRefreshKey(prev => prev + 1);
169167
}, []);
170168

171169
// Handle form submission
@@ -175,7 +173,6 @@ export const ObjectView: React.FC<ObjectViewProps> = ({
175173
setSelectedRecord(null);
176174

177175
// Trigger table refresh
178-
tableKey.current += 1;
179176
setRefreshKey(prev => prev + 1);
180177
}, []);
181178

@@ -187,7 +184,6 @@ export const ObjectView: React.FC<ObjectViewProps> = ({
187184

188185
// Handle refresh
189186
const handleRefresh = useCallback(() => {
190-
tableKey.current += 1;
191187
setRefreshKey(prev => prev + 1);
192188
}, []);
193189

@@ -397,7 +393,7 @@ export const ObjectView: React.FC<ObjectViewProps> = ({
397393

398394
{/* Table */}
399395
<ObjectTable
400-
key={`${tableKey.current}-${refreshKey}`}
396+
key={refreshKey}
401397
schema={tableSchema}
402398
dataSource={dataSource}
403399
onRowClick={handleRowClick}

0 commit comments

Comments
 (0)