From 31ebd8bd35ec5feebfbfacaac3611f1ba4e93b0e Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Wed, 1 Apr 2020 10:07:34 +0800 Subject: [PATCH] fix i18n of missing uploader --- app/Http/Controllers/SkinlibController.php | 5 +++-- .../assets/src/views/skinlib/Show/index.tsx | 19 ++++++++++--------- .../assets/tests/views/skinlib/Show.test.tsx | 6 ++++-- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/SkinlibController.php b/app/Http/Controllers/SkinlibController.php index 1662183f..c599c990 100644 --- a/app/Http/Controllers/SkinlibController.php +++ b/app/Http/Controllers/SkinlibController.php @@ -95,7 +95,7 @@ class SkinlibController extends Controller } $badges = []; - $uploader = User::find($texture->uploader); + $uploader = $texture->owner; if ($uploader) { if ($uploader->isAdmin()) { $badges[] = ['text' => 'STAFF', 'color' => 'primary']; @@ -125,7 +125,8 @@ class SkinlibController extends Controller 'currentUid' => $user ? $user->uid : 0, 'admin' => $user && $user->isAdmin(), 'inCloset' => $user && $user->closet()->where('tid', $texture->tid)->count() > 0, - 'nickname' => ($up = User::find($texture->uploader)) ? $up->nickname : null, + 'uploaderExists' => (bool) $uploader, + 'nickname' => optional($uploader)->nickname ?? trans('general.unexistent-user'), 'report' => intval(option('reporter_score_modification', 0)), 'badges' => $badges, ]); diff --git a/resources/assets/src/views/skinlib/Show/index.tsx b/resources/assets/src/views/skinlib/Show/index.tsx index 2d995535..5e77ad4e 100644 --- a/resources/assets/src/views/skinlib/Show/index.tsx +++ b/resources/assets/src/views/skinlib/Show/index.tsx @@ -26,7 +26,8 @@ const Show: React.FC = () => { const [texture, setTexture] = useState({} as Texture) const [showModalApply, setShowModalApply] = useState(false) const [liked, setLiked] = useState(false) - const nickname = useBlessingExtra('nickname') + const nickname = useBlessingExtra('nickname') + const isUploaderExists = useBlessingExtra('uploaderExists') const currentUid = useBlessingExtra('currentUid', 0) const isAdmin = useBlessingExtra('admin') const badges = useBlessingExtra('badges', []) @@ -77,7 +78,7 @@ const Show: React.FC = () => { ) if (code === 0) { toast.success(message) - setTexture(texture => ({ ...texture, name })) + setTexture((texture) => ({ ...texture, name })) } else { toast.error(message) } @@ -111,7 +112,7 @@ const Show: React.FC = () => { ) if (code === 0) { toast.success(message) - setTexture(texture => ({ ...texture, type })) + setTexture((texture) => ({ ...texture, type })) } else { toast.error(message) } @@ -120,7 +121,7 @@ const Show: React.FC = () => { const handleAddItemClick = async () => { const ok = await addClosetItem(texture) if (ok) { - setTexture(texture => ({ ...texture, likes: texture.likes + 1 })) + setTexture((texture) => ({ ...texture, likes: texture.likes + 1 })) setLiked(true) } } @@ -128,7 +129,7 @@ const Show: React.FC = () => { const handleRemoveItemClick = async () => { const ok = await removeClosetItem(texture.tid) if (ok) { - setTexture(texture => ({ ...texture, likes: texture.likes - 1 })) + setTexture((texture) => ({ ...texture, likes: texture.likes - 1 })) setLiked(false) } } @@ -196,7 +197,7 @@ const Show: React.FC = () => { ) if (code === 0) { toast.success(message) - setTexture(texture => ({ ...texture, public: !texture.public })) + setTexture((texture) => ({ ...texture, public: !texture.public })) } else { toast.error(message) } @@ -366,7 +367,7 @@ const Show: React.FC = () => {
{t('skinlib.show.uploader')}
- {nickname !== null ? ( + {isUploaderExists ? ( <>
- {badges.map(badge => ( + {badges.map((badge) => ( {
) : ( - t('general.unexistent-user') + nickname )}
diff --git a/resources/assets/tests/views/skinlib/Show.test.tsx b/resources/assets/tests/views/skinlib/Show.test.tsx index 1b28bbea..3a56dc5a 100644 --- a/resources/assets/tests/views/skinlib/Show.test.tsx +++ b/resources/assets/tests/views/skinlib/Show.test.tsx @@ -40,6 +40,7 @@ beforeEach(() => { download: true, currentUid: 0, admin: false, + uploaderExists: true, nickname: 'author', inCloset: false, report: 0, @@ -88,12 +89,13 @@ test('authenticated but not uploader', async () => { }) test('uploader is not existed', async () => { - window.blessing.extra.nickname = null + window.blessing.extra.nickname = 'not existed' + window.blessing.extra.uploaderExists = false fetch.get.mockResolvedValue({ data: fixtureSkin }) const { queryByText } = render() await waitFor(() => expect(fetch.get).toBeCalledTimes(1)) - expect(queryByText(t('general.unexistent-user'))).toBeInTheDocument() + expect(queryByText('not existed')).toBeInTheDocument() }) test('badges', async () => {