Predidit / oneAnime

一款简洁清爽无广告的看番软件。 一款带弹幕的 anime1 第三方客户端,界面符合 Material You 规范。
GNU General Public License v3.0
1.01k stars 21 forks source link

Add refresh button on popular page & minor fix #10

Closed songbirdzz closed 5 months ago

songbirdzz commented 5 months ago

Description

为Windows的popular页面增加了刷新的FloatingActionButton,并移除了获取番剧列表后的排序,因为获取到的列表已根据更新时间排序。

Predidit commented 5 months ago

刚刚没有查看更改就直接合并了,直接从api 获得的json是没有被正确排序的,稍后需要另一个pr修正,或者我稍后来修正。

songbirdzz commented 5 months ago

直接从api 获得的json是没有被正确排序的

你的意思是?

之前番剧列表是按照link,也就是下面例子中每个数组的第一项来排序的。这个数据应该只代表了它的ID,而与更新顺序无关。也就是说,如果根据这个key排序,排序后的list只代表了key最高的动漫,明显是不符合任何一种语义的(更新顺序/热度)。

[
    [
        1424,
        "轉生為第七王子,隨心所欲的魔法學習之路",
        "連載中(02)",
        "2024",
        "夏",
        ""
    ],
    [
        1423,
        "Re:Monster",
        "連載中(02)",
        "2024",
        "夏",
        ""
    ],
    [
        1393,
        "月光下的異世界之旅 第二幕 (第二季)",
        "連載中(14)",
        "2024",
        "冬",
        ""
    ],
    [
        1450,
        "從Lv2開始開外掛的前勇者候補過著悠哉異世界生活",
        "連載中(01)",
        "2024",
        "夏",
        ""
    ],
    [
        1422,
        "神明渴求著遊戲。",
        "連載中(02)",
        "2024",
        "夏",
        ""
    ],
    [
        1449,
        "殺手寓言",
        "連載中(01)",
        "2024",
        "夏",
        "幻櫻"
    ],
    [
        1448,
        "吹響吧!上低音號 第三季",
        "連載中(01)",
        "2024",
        "夏",
        ""
    ],
    ...
Predidit commented 5 months ago

后面还有根据依赖于这个排序的代码

https://github.com/Predidit/oneAnime/blob/31327ae776a9b51772f65c2d0e567a850beb7c00/lib/request/list.dart#L38

https://github.com/Predidit/oneAnime/blob/31327ae776a9b51772f65c2d0e567a850beb7c00/lib/request/list.dart#L65

直接更改会导致混乱

Predidit commented 5 months ago

我刚刚提交的 commit 已经暂时回滚了这一更改

songbirdzz commented 5 months ago

那也应该是改这部分代码?有什么实际操作依赖于有序的吗?

Predidit commented 5 months ago

更新 list 的相关方法依赖于这个排序, 例如有新番更新时,列表变动后,经过排序的 list 可以便捷地直接添加新的元素

https://github.com/Predidit/oneAnime/blob/31327ae776a9b51772f65c2d0e567a850beb7c00/lib/request/list.dart#L50-L62

Predidit commented 5 months ago

例如当先新增一个番剧,然后紧接着已存在的番剧更新了一个剧集 那么未排序时,直接新增到 list 里的元素会是重复的元素(更新剧集的番剧),而不是新增的番剧

songbirdzz commented 5 months ago

all right, 不过我觉得这个list在展示的时候还是不太符合直觉:我一直挂着app没关,然后想刷新的时候明明有了新更新的番剧刷新后却不会展示在顶部。 另外我认为请求番剧列表&更新的操作相对来说非常少,并不要求很多优化,完全可以抛弃基于根据link排序的假设。

Predidit commented 5 months ago

突然想到,在手动更新后,使用 toast 在底部展示更新剧集的番剧可能比较合适?

Predidit commented 5 months ago

这样兼顾了列表更新的优化,以及符合直觉的手动刷新体验

songbirdzz commented 5 months ago

我觉得容易一不小心看漏,有时间我改一下相关的代码吧。

PS. 追番好像也和这部分同步?这个感觉也可以解耦一下。