diff --git a/apps/app-frontend/src/components/ui/skin-site/SkinSiteDownloadsView.vue b/apps/app-frontend/src/components/ui/skin-site/SkinSiteDownloadsView.vue index 3e65ff9..e8538b9 100644 --- a/apps/app-frontend/src/components/ui/skin-site/SkinSiteDownloadsView.vue +++ b/apps/app-frontend/src/components/ui/skin-site/SkinSiteDownloadsView.vue @@ -3,6 +3,7 @@ import { DownloadIcon, SpinnerIcon } from '@modrinth/assets' import { defineMessages, injectNotificationManager, useVIntl } from '@modrinth/ui' import { computed, onMounted, ref } from 'vue' +import { skinSiteStatus, skinSiteUser } from '@/composables/skin-site-session' import { skinSitePublicDownloadCategories, type SkinSitePublicDownloadCategory, @@ -32,6 +33,10 @@ const messages = defineMessages({ statusLegacy: { id: 'app.skin-site.downloads.status.legacy', defaultMessage: 'Legacy' }, statusOutdated: { id: 'app.skin-site.downloads.status.outdated', defaultMessage: 'Outdated' }, statusRemoval: { id: 'app.skin-site.downloads.status.removal', defaultMessage: 'Removal' }, + signedOut: { + id: 'app.skin-site.downloads.signed-out', + defaultMessage: 'Sign in to browse downloads.', + }, }) const emit = defineEmits<{ (e: 'back'): void }>() @@ -42,6 +47,8 @@ const selectedCategory = ref(null) const loading = ref(true) const failed = ref(false) +const signedIn = computed(() => skinSiteStatus.value === 'signed-in' && !!skinSiteUser.value) + const filtered = computed(() => selectedCategory.value ? items.value.filter((item) => item.category.includes(selectedCategory.value!)) @@ -76,6 +83,10 @@ function download(item: SkinSitePublicDownloadItem) { async function load() { loading.value = true failed.value = false + if (!signedIn.value) { + loading.value = false + return + } try { const [listResult, categoryResult] = await Promise.all([ skinSitePublicDownloadList(), @@ -138,7 +149,10 @@ onMounted(load) -
+

+ {{ formatMessage(messages.signedOut) }} +

+
{{ formatMessage(messages.loading) }}
diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json index a67a497..ca70e77 100644 --- a/apps/app-frontend/src/locales/en-US/index.json +++ b/apps/app-frontend/src/locales/en-US/index.json @@ -26,6 +26,7 @@ }, "app.skin-site.downloads.title": { "message": "Downloads" }, "app.skin-site.downloads.uploader": { "message": "by {name}" }, + "app.skin-site.downloads.signed-out": { "message": "Sign in to browse downloads." }, "app.skin-site.home.announcements.empty": { "message": "No announcements right now." }, diff --git a/apps/app-frontend/src/locales/zh-CN/index.json b/apps/app-frontend/src/locales/zh-CN/index.json index ad993ff..6192326 100644 --- a/apps/app-frontend/src/locales/zh-CN/index.json +++ b/apps/app-frontend/src/locales/zh-CN/index.json @@ -26,6 +26,7 @@ }, "app.skin-site.downloads.title": { "message": "资源下载" }, "app.skin-site.downloads.uploader": { "message": "上传者:{name}" }, + "app.skin-site.downloads.signed-out": { "message": "登录后浏览资源下载。" }, "app.skin-site.home.announcements.empty": { "message": "暂无公告。" }, "app.skin-site.home.announcements.failed": { "message": "加载公告失败。" }, "app.skin-site.home.announcements.loading": { "message": "正在加载…" },