mirror of
https://github.com/immich-app/immich.git
synced 2026-07-07 21:17:09 -07:00
5e9bda7fab
chore: tailwind cannonical classes
65 lines
1.9 KiB
Svelte
65 lines
1.9 KiB
Svelte
<script lang="ts">
|
|
import { authManager } from '$lib/managers/auth-manager.svelte';
|
|
import { locale } from '$lib/stores/preferences.store';
|
|
import { userInteraction } from '$lib/stores/user.svelte';
|
|
import { requestServerInfo } from '$lib/utils/auth';
|
|
import { getByteUnitString } from '$lib/utils/byte-units';
|
|
import { LoadingSpinner, Meter } from '@immich/ui';
|
|
import { onMount } from 'svelte';
|
|
import { t } from 'svelte-i18n';
|
|
|
|
let hasQuota = $derived(authManager.user.quotaSizeInBytes !== null);
|
|
let availableBytes = $derived(
|
|
(hasQuota && authManager.authenticated
|
|
? authManager.user.quotaSizeInBytes
|
|
: userInteraction.serverInfo?.diskSizeRaw) || 0,
|
|
);
|
|
let usedBytes = $derived(
|
|
(hasQuota && authManager.authenticated
|
|
? authManager.user.quotaUsageInBytes
|
|
: userInteraction.serverInfo?.diskUseRaw) || 0,
|
|
);
|
|
|
|
const thresholds = [
|
|
{ from: 0.8, className: 'bg-warning' },
|
|
{ from: 0.95, className: 'bg-danger' },
|
|
];
|
|
|
|
onMount(async () => {
|
|
if (userInteraction.serverInfo && authManager.authenticated) {
|
|
return;
|
|
}
|
|
await requestServerInfo();
|
|
});
|
|
</script>
|
|
|
|
<div
|
|
class="ms-4 min-w-52 rounded-lg bg-light-100 p-4 text-sm"
|
|
title={$t('storage_usage', {
|
|
values: {
|
|
used: getByteUnitString(usedBytes, $locale, 3),
|
|
available: getByteUnitString(availableBytes, $locale, 3),
|
|
},
|
|
})}
|
|
>
|
|
{#if userInteraction.serverInfo}
|
|
<Meter
|
|
size="tiny"
|
|
class="bg-light-200"
|
|
containerClass="gap-2 leading-6"
|
|
label={$t('storage')}
|
|
valueLabel={$t('storage_usage', {
|
|
values: {
|
|
used: getByteUnitString(usedBytes, $locale),
|
|
available: getByteUnitString(availableBytes, $locale),
|
|
},
|
|
})}
|
|
value={usedBytes / availableBytes}
|
|
{thresholds}
|
|
/>
|
|
{:else}
|
|
<p class="mb-4 font-medium text-immich-dark-gray dark:text-white">{$t('storage')}</p>
|
|
<LoadingSpinner />
|
|
{/if}
|
|
</div>
|