// Copyright 2020 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import type { ReadonlyDeep } from 'type-fest'; // State export type ExpirationStateType = ReadonlyDeep<{ buildExpiration: number; }>; // Actions const HYDRATE_EXPIRATION_STATUS = 'expiration/HYDRATE_EXPIRATION_STATUS'; type HyrdateExpirationStatusActionType = ReadonlyDeep<{ type: 'expiration/HYDRATE_EXPIRATION_STATUS'; payload: { buildExpiration: number }; }>; export type ExpirationActionType = ReadonlyDeep; // Action Creators function hydrateExpirationStatus( buildExpiration: number ): ExpirationActionType { return { type: HYDRATE_EXPIRATION_STATUS, payload: { buildExpiration }, }; } export const actions = { hydrateExpirationStatus, }; // Reducer export function getEmptyState(): ExpirationStateType { return { buildExpiration: 0, }; } export function reducer( state: Readonly = getEmptyState(), action: Readonly ): ExpirationStateType { if (action.type === HYDRATE_EXPIRATION_STATUS) { return { buildExpiration: action.payload.buildExpiration, }; } return state; }