mirror of
https://github.com/AlistGo/alist.git
synced 2025-06-04 08:54:38 +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 {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
res := make([]model.Obj, 0)
|
fn := make(map[string]model.Obj)
|
||||||
for i := range nodes {
|
for i := range nodes {
|
||||||
n := nodes[i]
|
n := nodes[i]
|
||||||
if n.GetType() == mega.FILE || n.GetType() == mega.FOLDER {
|
if n.GetType() != mega.FILE && n.GetType() != mega.FOLDER {
|
||||||
res = append(res, &MegaNode{n})
|
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
|
return res, nil
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user