[PR #27116] Fix frontend type error #31679

Closed
opened 2026-02-21 20:49:55 -05:00 by yindo · 0 comments
Owner

Original Pull Request: https://github.com/langgenius/dify/pull/27116

State: closed
Merged: Yes


Important

  1. Make sure you have read our contribution guidelines
  2. Ensure there is an associated issue and you have been assigned to it
  3. Use the correct syntax to link this PR: Fixes #<issue number>.

Summary

fix #27115


PR Title

fix(web): improve type safety for refs, optional params, and workflow data

PR Description

Summary

This PR addresses several TypeScript type safety issues across the frontend codebase, including proper ref typing, optional parameter handling, missing required fields, and type range corrections.

Changes Made

1. Ref Type Definitions (4 files)

  • Files: plugin-page/context.tsx, use-uploader.ts, list.tsx
  • Updated React.RefObject<T> to RefObject<T | null> for proper null handling
  • Imported RefObject type explicitly from React
  • Created emptyContainerRef constant for default context value to avoid ref identity issues

2. Optional Parameter Safety (1 file)

  • File: update-plugin/from-market-place.tsx
  • Changed pluginId prop from required string to optional string | undefined
  • Added null check before calling mutateAsync to prevent runtime errors

3. Missing Required Fields (2 files)

  • Files: use-pipeline-run.ts, use-workflow-run.ts
  • Added three missing boolean fields to workflow running data:
    • inputs_truncated: false
    • process_data_truncated: false
    • outputs_truncated: false

4. Type Range Expansion (1 file)

  • File: workflow-app/index.tsx
  • Expanded userInputs value type from string to string | number | boolean to match actual data structure

Why These Changes

  1. Type Safety: Ensures strict TypeScript compliance and prevents potential runtime errors
  2. Null Safety: Properly handles nullable refs and optional parameters
  3. Data Integrity: Ensures all required fields are present in workflow running data
  4. Consistency: Aligns type definitions with actual runtime behavior

Screenshots

Before After
... ...

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods
**Original Pull Request:** https://github.com/langgenius/dify/pull/27116 **State:** closed **Merged:** Yes --- > [!IMPORTANT] > > 1. Make sure you have read our [contribution guidelines](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) > 1. Ensure there is an associated issue and you have been assigned to it > 1. Use the correct syntax to link this PR: `Fixes #<issue number>`. ## Summary fix #27115 --- ## PR Title ``` fix(web): improve type safety for refs, optional params, and workflow data ``` ## PR Description ### Summary This PR addresses several TypeScript type safety issues across the frontend codebase, including proper ref typing, optional parameter handling, missing required fields, and type range corrections. ### Changes Made #### 1. **Ref Type Definitions** (4 files) - **Files**: `plugin-page/context.tsx`, `use-uploader.ts`, `list.tsx` - Updated `React.RefObject<T>` to `RefObject<T | null>` for proper null handling - Imported `RefObject` type explicitly from React - Created `emptyContainerRef` constant for default context value to avoid ref identity issues #### 2. **Optional Parameter Safety** (1 file) - **File**: `update-plugin/from-market-place.tsx` - Changed `pluginId` prop from required `string` to optional `string | undefined` - Added null check before calling `mutateAsync` to prevent runtime errors #### 3. **Missing Required Fields** (2 files) - **Files**: `use-pipeline-run.ts`, `use-workflow-run.ts` - Added three missing boolean fields to workflow running data: - `inputs_truncated: false` - `process_data_truncated: false` - `outputs_truncated: false` #### 4. **Type Range Expansion** (1 file) - **File**: `workflow-app/index.tsx` - Expanded `userInputs` value type from `string` to `string | number | boolean` to match actual data structure ### Why These Changes 1. **Type Safety**: Ensures strict TypeScript compliance and prevents potential runtime errors 2. **Null Safety**: Properly handles nullable refs and optional parameters 3. **Data Integrity**: Ensures all required fields are present in workflow running data 4. **Consistency**: Aligns type definitions with actual runtime behavior <!-- Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. --> ## Screenshots | Before | After | |--------|-------| | ... | ... | ## Checklist - [ ] This change requires a documentation update, included: [Dify Document](https://github.com/langgenius/dify-docs) - [x] I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!) - [x] I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change. - [x] I've updated the documentation accordingly. - [x] I ran `dev/reformat`(backend) and `cd web && npx lint-staged`(frontend) to appease the lint gods
yindo added the pull-request label 2026-02-21 20:49:55 -05:00
yindo closed this issue 2026-02-21 20:49:55 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#31679