fix(drivers): free space underflow if used larger than total space (#1407)

This commit is contained in:
NewbieOrange
2025-10-04 00:41:45 +08:00
committed by GitHub
parent 6fe9af7819
commit 4153245f2c
7 changed files with 13 additions and 24 deletions

View File

@@ -260,10 +260,7 @@ func (d *Pan123) GetDetails(ctx context.Context) (*model.StorageDetails, error)
}
total := userInfo.Data.SpacePermanent + userInfo.Data.SpaceTemp
return &model.StorageDetails{
DiskUsage: model.DiskUsage{
TotalSpace: total,
FreeSpace: total - userInfo.Data.SpaceUsed,
},
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(userInfo.Data.SpaceUsed, total),
}, nil
}

View File

@@ -337,10 +337,7 @@ func (d *AliDrive) GetDetails(ctx context.Context) (*model.StorageDetails, error
used := utils.Json.Get(res, "drive_used_size").ToUint64()
total := utils.Json.Get(res, "drive_total_size").ToUint64()
return &model.StorageDetails{
DiskUsage: model.DiskUsage{
TotalSpace: total,
FreeSpace: total - used,
},
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
}, nil
}

View File

@@ -390,10 +390,7 @@ func (d *BaiduNetdisk) quota(ctx context.Context) (*model.DiskUsage, error) {
if err != nil {
return nil, err
}
return &model.DiskUsage{
TotalSpace: resp.Total,
FreeSpace: resp.Total - resp.Used,
}, nil
return model.NewDiskUsageFromUsedAndTotal(resp.Used, resp.Total), nil
}
// func encodeURIComponent(str string) string {

View File

@@ -349,10 +349,7 @@ func (d *CloudreveV4) GetDetails(ctx context.Context) (*model.StorageDetails, er
return nil, err
}
return &model.StorageDetails{
DiskUsage: model.DiskUsage{
TotalSpace: r.Total,
FreeSpace: r.Total - r.Used,
},
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(r.Used, r.Total),
}, nil
}

View File

@@ -189,10 +189,7 @@ func (d *GoogleDrive) GetDetails(ctx context.Context) (*model.StorageDetails, er
return nil, err
}
return &model.StorageDetails{
DiskUsage: model.DiskUsage{
TotalSpace: total,
FreeSpace: total - used,
},
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
}, nil
}

View File

@@ -412,10 +412,7 @@ func (d *ILanZou) GetDetails(ctx context.Context) (*model.StorageDetails, error)
total := utils.Json.Get(res, "map", "totalSize").ToUint64() * 1024
used := utils.Json.Get(res, "map", "usedSize").ToUint64() * 1024
return &model.StorageDetails{
DiskUsage: model.DiskUsage{
TotalSpace: total,
FreeSpace: total - used,
},
DiskUsage: *model.NewDiskUsageFromUsedAndTotal(used, total),
}, nil
}

View File

@@ -61,6 +61,13 @@ type DiskUsage struct {
FreeSpace uint64 `json:"free_space"`
}
func NewDiskUsageFromUsedAndTotal(used, total uint64) *DiskUsage {
return &DiskUsage{
TotalSpace: max(used, total),
FreeSpace: total - min(used, total),
}
}
type StorageDetails struct {
DiskUsage
}