From 30e25cf0a81965945ef802d5534260293cca899a Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sun, 7 Jun 2020 11:10:04 +0800 Subject: [PATCH] fix player isn't updated after closet item was removed --- .../ResetPlayerForRemovedClosetItem.php | 16 ++++++++++++++ app/Providers/EventServiceProvider.php | 3 +++ resources/misc/changelogs/en/5.0.0.md | 1 + resources/misc/changelogs/zh_CN/5.0.0.md | 1 + .../ResetPlayerForRemovedClosetItemTest.php | 22 +++++++++++++++++++ 5 files changed, 43 insertions(+) create mode 100644 app/Listeners/ResetPlayerForRemovedClosetItem.php create mode 100644 tests/ListenersTest/ResetPlayerForRemovedClosetItemTest.php diff --git a/app/Listeners/ResetPlayerForRemovedClosetItem.php b/app/Listeners/ResetPlayerForRemovedClosetItem.php new file mode 100644 index 00000000..785f595a --- /dev/null +++ b/app/Listeners/ResetPlayerForRemovedClosetItem.php @@ -0,0 +1,16 @@ +type === 'cape' ? 'tid_cape' : 'tid_skin'; + + $user->players()->where($type, $texture->tid)->update([$type => 0]); + } +} diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 0f525508..90b42f4f 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -38,5 +38,8 @@ class EventServiceProvider extends ServiceProvider Listeners\ResetPlayers::class, Listeners\CleanUpCloset::class, ], + 'closet.removed' => [ + Listeners\ResetPlayerForRemovedClosetItem::class, + ], ]; } diff --git a/resources/misc/changelogs/en/5.0.0.md b/resources/misc/changelogs/en/5.0.0.md index 20c125b2..e2f190d1 100644 --- a/resources/misc/changelogs/en/5.0.0.md +++ b/resources/misc/changelogs/en/5.0.0.md @@ -77,6 +77,7 @@ - Fixed that texture file won't be deleted when deleting texture in reports management. - Fixed that score calculation at upload page isn't consistent with that at back-end. - Fixed that new texture name isn't checked when texture is renamed. +- Fixed that player isn't updated after closet item was removed. ## Removed diff --git a/resources/misc/changelogs/zh_CN/5.0.0.md b/resources/misc/changelogs/zh_CN/5.0.0.md index 644778c6..80b659a0 100644 --- a/resources/misc/changelogs/zh_CN/5.0.0.md +++ b/resources/misc/changelogs/zh_CN/5.0.0.md @@ -77,6 +77,7 @@ - 修复处理举报中删除材质时不删除材质文件的问题 - 修复「材质上传」页面的积分计算与后端不一致的问题 - 修复重命名材质时不对新名称进行检查的问题 +- 修复移除衣柜物品后不更新角色的问题 ## 移除 diff --git a/tests/ListenersTest/ResetPlayerForRemovedClosetItemTest.php b/tests/ListenersTest/ResetPlayerForRemovedClosetItemTest.php new file mode 100644 index 00000000..3856c434 --- /dev/null +++ b/tests/ListenersTest/ResetPlayerForRemovedClosetItemTest.php @@ -0,0 +1,22 @@ +create(); + $player = factory(Player::class)->create(['tid_skin' => $texture->tid]); + + event('closet.removed', [$texture, $player->user]); + $player->refresh(); + $this->assertEquals(0, $player->tid_skin); + } +}