Zzaphkiel / Seraphine

英雄联盟战绩查询工具
GNU General Public License v3.0
2.55k stars 126 forks source link

修复艾欧尼亚对局信息不包含编号导致从对局信息跳转历史战绩时查询失败的问题 #373

Closed jqyisbest closed 6 months ago

jqyisbest commented 6 months ago

修复艾欧尼亚对局信息不包含编号导致从对局信息跳转历史战绩时查询失败的问题

Zzaphkiel commented 6 months ago

感谢 PR!

看了下代码,感觉这样确实是能修复对局信息页面得不到召唤师 tagLine 的问题,但是会有一些其他的问题:

  1. 我们的代码本意是将信息的获取app/lol/tools.py)以及界面的绘制app/view/game_info_interface.py)解耦,有关召唤师信息的获取以及处理应该被封装在 tools.py 的函数中;
  2. 在对局信息界面,用户并不是一定会点击右侧召唤师名进行战绩查询;此外,为了客户端的稳定性(怕它闪退)以及性能考虑,我们尽可能避免了 LCU API 调用。

个人感觉可以这样修复:当用户点击右侧召唤师名时,如果目前没有其 tagLine 信息,则先通过其 puuid 得到 tagLine,再调用之前的逻辑,跳转到搜索界面使用 f"{召唤师名}#{tagLine}" 进行搜索。

不知你觉得如何?

jqyisbest commented 6 months ago

1、解耦是应当坚持的,我没时间去查阅官方接口文档再去找出获取对局信息的函数,图省事把逻辑写在了渲染函数里。 2、目前左侧召唤师名跳生涯界面是正常的,右侧召唤师名跳查询界面时可能不含编号,逻辑有判断是否包含tagLine,若包含tagLine,不会调用LCU API

目前就是这样修复的,不过没把处理逻辑写在获取对局信息的函数里,若方便请告知获取对局信息相关的函数名或自行修补相关函数。

对局接口数据缺失本应由官方修补,但若艾欧尼亚对局信息中缺少tagLine不影响其它业务,就腾讯的尿性短时间内恐很难得到处理,建议在Seraphine中予以修补

Zzaphkiel commented 6 months ago

判断是否包含 tagLine 的逻辑放在点击右侧名字时的槽函数中,而不是界面绘制的函数中比较好,这样既与界面的绘制解耦,也不会让不点击召唤师名的用户付出更多的时间代价 🥰

jqyisbest commented 6 months ago

有道理