From d4e482abb755fd78fc69dfe8e17494aef63adaae Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sun, 28 Jun 2020 22:43:41 +0800 Subject: [PATCH] tweak URL of user avatar --- app/Http/View/Composers/UserMenuComposer.php | 2 +- app/Http/View/Composers/UserPanelComposer.php | 2 +- resources/assets/src/scripts/meta.ts | 2 +- resources/assets/src/scripts/sw.ts | 4 ++-- .../assets/src/views/user/Closet/setAsAvatar.ts | 4 +++- .../assets/src/views/user/profile/resetAvatar.ts | 2 +- resources/assets/tests/views/user/Closet.test.tsx | 5 ++++- .../tests/views/user/profile/resetAvatar.test.ts | 2 +- .../ControllersTest/UserControllerTest.php | 2 +- .../ComposersTest/UserMenuComposerTest.php | 14 ++++---------- .../ComposersTest/UserPanelComposerTest.php | 2 +- 11 files changed, 20 insertions(+), 21 deletions(-) diff --git a/app/Http/View/Composers/UserMenuComposer.php b/app/Http/View/Composers/UserMenuComposer.php index ef04f735..5c27d86a 100644 --- a/app/Http/View/Composers/UserMenuComposer.php +++ b/app/Http/View/Composers/UserMenuComposer.php @@ -23,7 +23,7 @@ class UserMenuComposer public function compose(View $view) { $user = auth()->user(); - $avatarUrl = route('avatar.user', ['uid' => $user->uid, 'size' => 36]); + $avatarUrl = route('avatar.texture', ['tid' => $user->avatar, 'size' => 36]); $avatar = $this->filter->apply('user_avatar', $avatarUrl, [$user]); $cli = $this->request->is('admin', 'admin/*'); diff --git a/app/Http/View/Composers/UserPanelComposer.php b/app/Http/View/Composers/UserPanelComposer.php index db0140fc..089ee283 100644 --- a/app/Http/View/Composers/UserPanelComposer.php +++ b/app/Http/View/Composers/UserPanelComposer.php @@ -25,7 +25,7 @@ class UserPanelComposer { /** @var User */ $user = auth()->user(); - $avatarUrl = route('avatar.user', ['uid' => $user->uid, 'size' => 45]); + $avatarUrl = route('avatar.texture', ['tid' => $user->avatar, 'size' => 45]); $avatar = $this->filter->apply('user_avatar', $avatarUrl, [$user]); $badges = []; diff --git a/resources/assets/src/scripts/meta.ts b/resources/assets/src/scripts/meta.ts index 18336f95..91688a96 100644 --- a/resources/assets/src/scripts/meta.ts +++ b/resources/assets/src/scripts/meta.ts @@ -4,6 +4,6 @@ window.blessing = JSON.parse(blessingElement.textContent!) window.addEventListener('load', () => { - navigator.serviceWorker.register('/sw.js?v5') + navigator.serviceWorker.register('/sw.js?v6') }) } diff --git a/resources/assets/src/scripts/sw.ts b/resources/assets/src/scripts/sw.ts index 7d54c85d..4131cc69 100644 --- a/resources/assets/src/scripts/sw.ts +++ b/resources/assets/src/scripts/sw.ts @@ -38,8 +38,8 @@ registerRoute( ) registerRoute( - /\/avatar\/user\/\d+/, - new StaleWhileRevalidate({ + /\/avatar\/\d+/, + new CacheFirst({ cacheName: 'avatar-v2', fetchOptions: { credentials: 'omit', diff --git a/resources/assets/src/views/user/Closet/setAsAvatar.ts b/resources/assets/src/views/user/Closet/setAsAvatar.ts index f8f08e09..c75ec617 100644 --- a/resources/assets/src/views/user/Closet/setAsAvatar.ts +++ b/resources/assets/src/views/user/Closet/setAsAvatar.ts @@ -21,7 +21,9 @@ export default async function setAsAvatar(tid: number) { toast.success(message) document .querySelectorAll('[alt="User Image"]') - .forEach((el) => (el.src += `?${new Date().getTime()}`)) + .forEach((el) => { + el.src = `${blessing.base_url}/avatar/${tid}` + }) } else { toast.error(message) } diff --git a/resources/assets/src/views/user/profile/resetAvatar.ts b/resources/assets/src/views/user/profile/resetAvatar.ts index 2d7d02b5..669e3e20 100644 --- a/resources/assets/src/views/user/profile/resetAvatar.ts +++ b/resources/assets/src/views/user/profile/resetAvatar.ts @@ -16,6 +16,6 @@ export default async function resetAvatar() { document .querySelectorAll('[alt="User Image"]') .forEach((el) => { - el.src += `?${new Date().getTime()}` + el.src = `${blessing.base_url}/avatar/0` }) } diff --git a/resources/assets/tests/views/user/Closet.test.tsx b/resources/assets/tests/views/user/Closet.test.tsx index f393b4f3..ee07efb7 100644 --- a/resources/assets/tests/views/user/Closet.test.tsx +++ b/resources/assets/tests/views/user/Closet.test.tsx @@ -319,7 +319,10 @@ describe('set avatar', () => { ) expect(queryByText('success')).toBeInTheDocument() expect(getByRole('status')).toHaveClass('alert-success') - expect(document.querySelector('[alt="User Image"]')).toHaveAttribute('src') + expect(document.querySelector('[alt="User Image"]')).toHaveAttribute( + 'src', + `/avatar/${fixtureSkin.tid}`, + ) }) it('failed', async () => { diff --git a/resources/assets/tests/views/user/profile/resetAvatar.test.ts b/resources/assets/tests/views/user/profile/resetAvatar.test.ts index 5bf03c87..1ef9eaf6 100644 --- a/resources/assets/tests/views/user/profile/resetAvatar.test.ts +++ b/resources/assets/tests/views/user/profile/resetAvatar.test.ts @@ -16,5 +16,5 @@ test('reset avatar', async () => { await resetAvatar() expect(post).toBeCalledWith('/user/profile/avatar', { tid: 0 }) expect(toast.success).toBeCalledWith('ok') - expect(document.querySelector('img')!.src).toMatch(/\d+$/) + expect(document.querySelector('img')!.src).toBe('/avatar/0') }) diff --git a/tests/HttpTest/ControllersTest/UserControllerTest.php b/tests/HttpTest/ControllersTest/UserControllerTest.php index 437238bc..16dc77db 100644 --- a/tests/HttpTest/ControllersTest/UserControllerTest.php +++ b/tests/HttpTest/ControllersTest/UserControllerTest.php @@ -40,7 +40,7 @@ class UserControllerTest extends TestCase ->assertSee($announcement, false); $filter->assertApplied('grid:user.index'); $filter->assertApplied('user_avatar', function ($url, $user) use ($uid) { - $this->assertTrue(Str::contains($url, '/avatar/user/'.$uid)); + $this->assertTrue(Str::contains($url, '/avatar/'.$user->avatar)); $this->assertEquals($uid, $user->uid); return true; diff --git a/tests/HttpTest/ViewTest/ComposersTest/UserMenuComposerTest.php b/tests/HttpTest/ViewTest/ComposersTest/UserMenuComposerTest.php index a3d686c5..0e32237b 100644 --- a/tests/HttpTest/ViewTest/ComposersTest/UserMenuComposerTest.php +++ b/tests/HttpTest/ViewTest/ComposersTest/UserMenuComposerTest.php @@ -8,15 +8,9 @@ class UserMenuComposerTest extends TestCase { public function testAvatar() { - $user = factory(User::class)->create(); - $this->actingAs($user) - ->get('/') - ->assertSee(url('/avatar/user/'.$user->uid.'?size=36')); - $this->actingAs($user) - ->get('/skinlib') - ->assertSee(url('/avatar/user/'.$user->uid.'?size=36')); - $this->actingAs($user) - ->get('/user') - ->assertSee(url('/avatar/user/'.$user->uid.'?size=36')); + $user = factory(User::class)->create(['avatar' => 5]); + $this->actingAs($user)->get('/')->assertSee(url('/avatar/5?size=36')); + $this->get('/skinlib')->assertSee(url('/avatar/5?size=36')); + $this->get('/user')->assertSee(url('/avatar/5?size=36')); } } diff --git a/tests/HttpTest/ViewTest/ComposersTest/UserPanelComposerTest.php b/tests/HttpTest/ViewTest/ComposersTest/UserPanelComposerTest.php index 59b6552f..c7c47210 100644 --- a/tests/HttpTest/ViewTest/ComposersTest/UserPanelComposerTest.php +++ b/tests/HttpTest/ViewTest/ComposersTest/UserPanelComposerTest.php @@ -12,7 +12,7 @@ class UserPanelComposerTest extends TestCase $user = factory(User::class)->create(); $this->actingAs($user); - $this->get('/user')->assertSee(url('/avatar/user/'.$user->uid.'?size=45')); + $this->get('/user')->assertSee(url('/avatar/0?size=45')); } public function testBadges()