signal-desktop/ts/util/subscriptionConfiguration.ts
ayumi-signal 26933bf8d7
Initial donation amount picker
Co-authored-by: trevor-signal <131492920+trevor-signal@users.noreply.github.com>
2025-07-15 09:52:56 -07:00

43 lines
1.3 KiB
TypeScript

// Copyright 2025 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { SubscriptionConfigurationResultType } from '../textsecure/WebAPI';
import type { OneTimeDonationHumanAmounts } from '../types/Donations';
import { HOUR } from './durations';
import { isInPast } from './timestamp';
const SUBSCRIPTION_CONFIG_CACHE_TIME = HOUR;
let cachedSubscriptionConfig: SubscriptionConfigurationResultType | undefined;
let cachedSubscriptionConfigExpiresAt: number | undefined;
export async function getCachedSubscriptionConfiguration(): Promise<SubscriptionConfigurationResultType> {
if (
cachedSubscriptionConfigExpiresAt != null &&
isInPast(cachedSubscriptionConfigExpiresAt)
) {
cachedSubscriptionConfig = undefined;
}
if (cachedSubscriptionConfig != null) {
return cachedSubscriptionConfig;
}
const { server } = window.textsecure;
if (!server) {
throw new Error('getSubscriptionConfiguration: server is not available');
}
const response = await server.getSubscriptionConfiguration();
cachedSubscriptionConfig = response;
cachedSubscriptionConfigExpiresAt =
Date.now() + SUBSCRIPTION_CONFIG_CACHE_TIME;
return response;
}
export async function getDonationHumanAmounts(): Promise<OneTimeDonationHumanAmounts> {
const { currencies } = await getCachedSubscriptionConfiguration();
return currencies;
}