refactor: purchase store (#25734)

This commit is contained in:
Jason Rasmussen
2026-02-12 13:32:17 -05:00
committed by GitHub
parent 6c0c4b3dda
commit 5bf4e9595c
9 changed files with 39 additions and 49 deletions

View File

@@ -1,5 +1,5 @@
<script lang="ts">
import { purchaseStore } from '$lib/stores/purchase.store';
import { authManager } from '$lib/managers/auth-manager.svelte';
import { handleError } from '$lib/utils/handle-error';
import { activateProduct, getActivationKey } from '$lib/utils/license-utils';
import { Button, Heading, LoadingSpinner } from '@immich/ui';
@@ -26,7 +26,7 @@
await activateProduct(productKey, activationKey);
onActivate();
purchaseStore.setPurchaseStatus(true);
authManager.isPurchased = true;
} catch (error) {
handleError(error, $t('purchase_failed_activation'));
} finally {

View File

@@ -2,9 +2,9 @@
import { goto } from '$app/navigation';
import { OpenQueryParam } from '$lib/constants';
import Portal from '$lib/elements/Portal.svelte';
import { authManager } from '$lib/managers/auth-manager.svelte';
import PurchaseModal from '$lib/modals/PurchaseModal.svelte';
import { Route } from '$lib/route';
import { purchaseStore } from '$lib/stores/purchase.store';
import { preferences } from '$lib/stores/user.store';
import { getAccountAge } from '$lib/utils/auth';
import { handleError } from '$lib/utils/handle-error';
@@ -22,8 +22,6 @@
let showBuyButton = $state(getButtonVisibility());
const { isPurchased } = purchaseStore;
const openPurchaseModal = async () => {
await modalManager.show(PurchaseModal);
showMessage = false;
@@ -72,7 +70,7 @@
</script>
<div class="license-status ps-4 text-sm">
{#if $isPurchased && $preferences.purchase.showSupportBadge}
{#if authManager.isPurchased && $preferences.purchase.showSupportBadge}
<button
onclick={() => goto(Route.userSettings({ isOpen: OpenQueryParam.PURCHASE_SETTINGS }))}
class="w-full mt-2"
@@ -80,7 +78,7 @@
>
<SupporterBadge size="small" effect="always" />
</button>
{:else if !$isPurchased && showBuyButton && getAccountAge() > 14}
{:else if !authManager.isPurchased && showBuyButton && getAccountAge() > 14}
<button
type="button"
onclick={openPurchaseModal}

View File

@@ -4,8 +4,8 @@
import PurchaseContent from '$lib/components/shared-components/purchasing/purchase-content.svelte';
import SettingSwitch from '$lib/components/shared-components/settings/setting-switch.svelte';
import { dateFormats } from '$lib/constants';
import { authManager } from '$lib/managers/auth-manager.svelte';
import { locale } from '$lib/stores/preferences.store';
import { purchaseStore } from '$lib/stores/purchase.store';
import { preferences, user } from '$lib/stores/user.store';
import { handleError } from '$lib/utils/handle-error';
import { setSupportBadgeVisibility } from '$lib/utils/purchase-utils';
@@ -22,7 +22,6 @@
import { mdiKey } from '@mdi/js';
import { onMount } from 'svelte';
import { t } from 'svelte-i18n';
const { isPurchased } = purchaseStore;
let isServerProduct = $state(false);
let serverPurchaseInfo: LicenseResponseDto | null = $state(null);
@@ -53,7 +52,7 @@
};
onMount(async () => {
if (!$isPurchased) {
if (!authManager.isPurchased) {
return;
}
@@ -73,7 +72,7 @@
}
await deleteIndividualProductKey();
purchaseStore.setPurchaseStatus(false);
authManager.isPurchased = false;
} catch (error) {
handleError(error, $t('errors.failed_to_remove_product_key'));
}
@@ -92,21 +91,21 @@
}
await deleteServerProductKey();
purchaseStore.setPurchaseStatus(false);
authManager.isPurchased = false;
} catch (error) {
handleError(error, $t('errors.failed_to_remove_product_key'));
}
};
const onProductActivated = async () => {
purchaseStore.setPurchaseStatus(true);
authManager.isPurchased = true;
await checkPurchaseInfo();
};
</script>
<section class="my-4">
<div class="sm:ms-8" in:fade={{ duration: 500 }}>
{#if $isPurchased}
{#if authManager.isPurchased}
<!-- BADGE TOGGLE -->
<div class="mb-4">
<SettingSwitch