UNPKG

@markvivanco/app-version-checker

Version:

React App version checking and update prompts for React, React Native, and web applications

107 lines (105 loc) 3.51 kB
/** * Storage provider interface for version check preferences * Implement this interface to store timestamps and preferences in any storage system */ /** * Interface for storing version check timestamps and preferences * Can be implemented using localStorage, AsyncStorage, database, etc. */ interface IStorageProvider { /** * Get the timestamp of the last version check */ getLastCheckTime(): Promise<number | null>; /** * Set the timestamp of the last version check */ setLastCheckTime(timestamp: number): Promise<void>; /** * Get the "remind me later" timestamp * Returns when the reminder period expires */ getRemindLaterTime(): Promise<number | null>; /** * Set the "remind me later" timestamp */ setRemindLaterTime(timestamp: number): Promise<void>; /** * Clear the "remind me later" timestamp */ clearRemindLaterTime(): Promise<void>; /** * Optional: Get the number of times update was dismissed */ getDismissCount?(): Promise<number>; /** * Optional: Increment the dismiss count */ incrementDismissCount?(): Promise<void>; /** * Optional: Get the last shown version * Useful to avoid showing the same update multiple times */ getLastShownVersion?(): Promise<string | null>; /** * Optional: Set the last shown version */ setLastShownVersion?(version: string): Promise<void>; /** * Optional: Get user preference for auto-updates */ getAutoUpdateEnabled?(): Promise<boolean>; /** * Optional: Set user preference for auto-updates */ setAutoUpdateEnabled?(enabled: boolean): Promise<void>; /** * Optional: Get all stored preferences as an object */ getAllPreferences?(): Promise<Record<string, any>>; /** * Optional: Clear all stored data */ clearAll?(): Promise<void>; /** * Optional: Initialize the storage provider */ initialize?(): Promise<void>; /** * Optional: Dispose of resources */ dispose?(): Promise<void>; } /** * Abstract base class for storage providers * Provides default implementations for optional methods */ declare abstract class BaseStorageProvider implements IStorageProvider { abstract getLastCheckTime(): Promise<number | null>; abstract setLastCheckTime(timestamp: number): Promise<void>; abstract getRemindLaterTime(): Promise<number | null>; abstract setRemindLaterTime(timestamp: number): Promise<void>; abstract clearRemindLaterTime(): Promise<void>; getDismissCount(): Promise<number>; incrementDismissCount(): Promise<void>; initialize(): Promise<void>; dispose(): Promise<void>; } /** * In-memory storage provider for testing */ declare class InMemoryStorageProvider extends BaseStorageProvider { private storage; getLastCheckTime(): Promise<number | null>; setLastCheckTime(timestamp: number): Promise<void>; getRemindLaterTime(): Promise<number | null>; setRemindLaterTime(timestamp: number): Promise<void>; clearRemindLaterTime(): Promise<void>; getDismissCount(): Promise<number>; incrementDismissCount(): Promise<void>; getLastShownVersion(): Promise<string | null>; setLastShownVersion(version: string): Promise<void>; clearAll(): Promise<void>; getAllPreferences(): Promise<Record<string, any>>; } export { BaseStorageProvider as B, type IStorageProvider as I, InMemoryStorageProvider as a };