@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
TypeScript
/**
* 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 };