mirror of
https://github.com/AlistGo/alist.git
synced 2025-05-30 04:16:07 +08:00
Mega supports duplicate names but alist does not support. In `List()` method, driver will return multiple files with same name. That makes alist to use oldest version file for listing/downloading. So it is necessary to filter old same name files in a folder. After fixes, all CRUD work normally. Refs #8344
This commit is contained in:
@ -56,12 +56,21 @@ func (d *Mega) List(ctx context.Context, dir model.Obj, args model.ListArgs) ([]
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
res := make([]model.Obj, 0)
|
||||
fn := make(map[string]model.Obj)
|
||||
for i := range nodes {
|
||||
n := nodes[i]
|
||||
if n.GetType() == mega.FILE || n.GetType() == mega.FOLDER {
|
||||
res = append(res, &MegaNode{n})
|
||||
if n.GetType() != mega.FILE && n.GetType() != mega.FOLDER {
|
||||
continue
|
||||
}
|
||||
if _, ok := fn[n.GetName()]; !ok {
|
||||
fn[n.GetName()] = &MegaNode{n}
|
||||
} else if sameNameObj := fn[n.GetName()]; (&MegaNode{n}).ModTime().After(sameNameObj.ModTime()) {
|
||||
fn[n.GetName()] = &MegaNode{n}
|
||||
}
|
||||
}
|
||||
res := make([]model.Obj, 0)
|
||||
for _, v := range fn {
|
||||
res = append(res, v)
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user