@@ -60,6 +60,7 @@ function AddStorage_page() {
6060 const [ submitting , setSubmitting ] = useState ( false ) //提交中状态
6161
6262 const [ storageParams , setStorageParams ] = useState < ParametersType > ( ) //编辑模式下,覆盖默认参数
63+ const [ originalPasswordValues , setOriginalPasswordValues ] = useState < ParametersType > ( { } ) //保存原始密码值(混淆后的)
6364
6465 //let parameters: ParametersType = {};
6566
@@ -71,8 +72,23 @@ function AddStorage_page() {
7172
7273 const editMode = async ( ) => {
7374 const name = getURLSearchParam ( 'name' )
74- setStorageTypeName ( searchStorageInfo ( getURLSearchParam ( 'type' ) ) . label )
75- setStorageParams ( await getStorageParams ( name ) )
75+ const type = getURLSearchParam ( 'type' )
76+ const currentStorageInfo = searchStorageInfo ( type )
77+ setStorageTypeName ( currentStorageInfo . label )
78+ const params = await getStorageParams ( name )
79+ setStorageParams ( params )
80+
81+ // 保存原始密码值(混淆后的),用于后续比较(仅rclone存储需要)
82+ if ( params && currentStorageInfo ?. defaultParams ?. parameters && currentStorageInfo . framework === 'rclone' ) {
83+ const passwordFields : ParametersType = { }
84+ for ( const param of currentStorageInfo . defaultParams . parameters ) {
85+ if ( param . isPassword && params [ param . name ] !== undefined ) {
86+ passwordFields [ param . name ] = params [ param . name ]
87+ }
88+ }
89+ setOriginalPasswordValues ( passwordFields )
90+ }
91+
7692 setStorageName ( name )
7793 setStep ( 'setParams' )
7894 }
@@ -232,14 +248,15 @@ function AddStorage_page() {
232248 </ FormItem >
233249 }
234250 data = { [
235- ...storageInfo . defaultParams
236- . parameters /* ,...storageInfo.defaultParams.exParameters?.openlist?.additional||[] */ ,
251+ ...( storageInfo ?. defaultParams ?. parameters || [ ] ) /* ,...storageInfo.defaultParams.exParameters?.openlist?.additional||[] */ ,
237252 ] }
238253 showAdvanced = { showAdvanced }
239254 overwriteValues = { storageParams || { } }
240255 setFormHook = { hook => {
241256 setFormHook ( hook )
242257 } }
258+ isEditMode = { isEditMode }
259+ framework = { storageInfo ?. framework }
243260 />
244261 < br />
245262
@@ -321,10 +338,21 @@ function AddStorage_page() {
321338 return
322339 }
323340
324- const parameters : ParametersType =
341+ let parameters : ParametersType =
325342 storageInfo . framework === 'rclone'
326343 ? formHook . getFieldsValue ( formHook . getTouchedFields ( ) )
327344 : formHook . getFieldsValue ( )
345+
346+ // 编辑模式下,过滤掉未修改的密码字段,避免用混淆值覆盖原密码
347+ if ( isEditMode && storageInfo . framework === 'rclone' ) {
348+ for ( const fieldName of Object . keys ( originalPasswordValues ) ) {
349+ // 如果密码值与原始混淆值相同,说明用户没有修改,删除该字段
350+ if ( parameters [ fieldName ] === originalPasswordValues [ fieldName ] ) {
351+ delete parameters [ fieldName ]
352+ }
353+ }
354+ }
355+
328356 console . log ( parameters )
329357
330358 //return
0 commit comments