tweak URL of user avatar

This commit is contained in:
Pig Fang 2020-06-28 22:43:41 +08:00
parent b8dab4b57a
commit d4e482abb7
No known key found for this signature in database
GPG Key ID: A8198F548DADA9E2
11 changed files with 20 additions and 21 deletions

View File

@ -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/*');

View File

@ -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 = [];

View File

@ -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')
})
}

View File

@ -38,8 +38,8 @@ registerRoute(
)
registerRoute(
/\/avatar\/user\/\d+/,
new StaleWhileRevalidate({
/\/avatar\/\d+/,
new CacheFirst({
cacheName: 'avatar-v2',
fetchOptions: {
credentials: 'omit',

View File

@ -21,7 +21,9 @@ export default async function setAsAvatar(tid: number) {
toast.success(message)
document
.querySelectorAll<HTMLImageElement>('[alt="User Image"]')
.forEach((el) => (el.src += `?${new Date().getTime()}`))
.forEach((el) => {
el.src = `${blessing.base_url}/avatar/${tid}`
})
} else {
toast.error(message)
}

View File

@ -16,6 +16,6 @@ export default async function resetAvatar() {
document
.querySelectorAll<HTMLImageElement>('[alt="User Image"]')
.forEach((el) => {
el.src += `?${new Date().getTime()}`
el.src = `${blessing.base_url}/avatar/0`
})
}

View File

@ -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 () => {

View File

@ -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')
})

View File

@ -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;

View File

@ -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'));
}
}

View File

@ -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()