@@ -93,6 +93,12 @@ func (d *CloudreveV4) List(ctx context.Context, dir model.Obj, args model.ListAr
9393 params ["next_page_token" ] = r .Pagination .NextToken
9494 }
9595
96+ if d .HideUploading {
97+ f = utils .SliceFilter (f , func (src File ) bool {
98+ return src .Metadata == nil || src .Metadata [MetadataUploadSessionID ] == nil
99+ })
100+ }
101+
96102 return utils .SliceConvert (f , func (src File ) (model.Obj , error ) {
97103 if d .EnableFolderSize && src .Type == 1 {
98104 var ds FolderSummaryResp
@@ -105,7 +111,7 @@ func (d *CloudreveV4) List(ctx context.Context, dir model.Obj, args model.ListAr
105111 }
106112 }
107113 var thumb model.Thumbnail
108- if d .EnableThumb && src .Type == 0 {
114+ if d .EnableThumb && src .Type == 0 && ( src . Metadata == nil || src . Metadata [ MetadataThumbDisabled ] == "" ) {
109115 var t FileThumbResp
110116 err := d .request (http .MethodGet , "/file/thumb" , func (req * resty.Request ) {
111117 req .SetQueryParam ("uri" , src .Path )
@@ -192,13 +198,43 @@ func (d *CloudreveV4) Copy(ctx context.Context, srcObj, dstDir model.Obj) error
192198}
193199
194200func (d * CloudreveV4 ) Remove (ctx context.Context , obj model.Obj ) error {
195- return d .request (http .MethodDelete , "/file" , func (req * resty.Request ) {
201+ var r FileDeleteResp
202+ err := d .request (http .MethodDelete , "/file" , func (req * resty.Request ) {
196203 req .SetBody (base.Json {
197204 "uris" : []string {obj .GetPath ()},
198205 "unlink" : false ,
199206 "skip_soft_delete" : true ,
200207 })
208+ req .SetResult (& r )
201209 }, nil )
210+ if err != nil {
211+ return err
212+ }
213+ if r .Code == 0 {
214+ return nil
215+ }
216+ if r .Code == 40073 && r .Msg == "Lock conflict" && len (r .Data ) > 0 {
217+ tokens := make ([]string , 0 , len (r .Data ))
218+ for _ , item := range r .Data {
219+ tokens = append (tokens , item .Token )
220+ }
221+ err = d .request (http .MethodDelete , "/file/lock" , func (req * resty.Request ) {
222+ req .SetBody (base.Json {
223+ "tokens" : tokens ,
224+ })
225+ }, nil )
226+ if err != nil {
227+ return err
228+ }
229+ return d .request (http .MethodDelete , "/file" , func (req * resty.Request ) {
230+ req .SetBody (base.Json {
231+ "uris" : []string {obj .GetPath ()},
232+ "unlink" : false ,
233+ "skip_soft_delete" : true ,
234+ })
235+ }, nil )
236+ }
237+ return errors .New (r .Msg )
202238}
203239
204240func (d * CloudreveV4 ) Put (ctx context.Context , dstDir model.Obj , file model.FileStreamer , up driver.UpdateProgress ) error {
0 commit comments