UNPKG

@markvivanco/app-version-checker

Version:

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

302 lines (298 loc) 8.68 kB
'use strict'; // src/providers/storage-provider.interface.ts var BaseStorageProvider = class { async getDismissCount() { return 0; } async incrementDismissCount() { } async initialize() { } async dispose() { } }; // src/adapters/stores/local-storage-provider.ts var LocalStorageProvider = class extends BaseStorageProvider { constructor(prefix = "app_version_check_") { super(); this.prefix = prefix; } getKey(key) { return `${this.prefix}${key}`; } async getLastCheckTime() { try { const value = localStorage.getItem(this.getKey("lastCheckTime")); return value ? parseInt(value, 10) : null; } catch (error) { console.error("Error reading last check time:", error); return null; } } async setLastCheckTime(timestamp) { try { localStorage.setItem(this.getKey("lastCheckTime"), timestamp.toString()); } catch (error) { console.error("Error setting last check time:", error); } } async getRemindLaterTime() { try { const value = localStorage.getItem(this.getKey("remindLaterTime")); return value ? parseInt(value, 10) : null; } catch (error) { console.error("Error reading remind later time:", error); return null; } } async setRemindLaterTime(timestamp) { try { localStorage.setItem(this.getKey("remindLaterTime"), timestamp.toString()); } catch (error) { console.error("Error setting remind later time:", error); } } async clearRemindLaterTime() { try { localStorage.removeItem(this.getKey("remindLaterTime")); } catch (error) { console.error("Error clearing remind later time:", error); } } async getDismissCount() { try { const value = localStorage.getItem(this.getKey("dismissCount")); return value ? parseInt(value, 10) : 0; } catch (error) { console.error("Error reading dismiss count:", error); return 0; } } async incrementDismissCount() { try { const current = await this.getDismissCount(); localStorage.setItem(this.getKey("dismissCount"), (current + 1).toString()); } catch (error) { console.error("Error incrementing dismiss count:", error); } } async getLastShownVersion() { try { return localStorage.getItem(this.getKey("lastShownVersion")); } catch (error) { console.error("Error reading last shown version:", error); return null; } } async setLastShownVersion(version) { try { localStorage.setItem(this.getKey("lastShownVersion"), version); } catch (error) { console.error("Error setting last shown version:", error); } } async getAutoUpdateEnabled() { try { const value = localStorage.getItem(this.getKey("autoUpdateEnabled")); return value === "true"; } catch (error) { console.error("Error reading auto update preference:", error); return false; } } async setAutoUpdateEnabled(enabled) { try { localStorage.setItem(this.getKey("autoUpdateEnabled"), enabled.toString()); } catch (error) { console.error("Error setting auto update preference:", error); } } async getAllPreferences() { const preferences = {}; const keys = [ "lastCheckTime", "remindLaterTime", "dismissCount", "lastShownVersion", "autoUpdateEnabled" ]; for (const key of keys) { try { const value = localStorage.getItem(this.getKey(key)); if (value !== null) { preferences[key] = value; } } catch (error) { console.error(`Error reading ${key}:`, error); } } return preferences; } async clearAll() { const keysToRemove = []; for (let i = 0; i < localStorage.length; i++) { const key = localStorage.key(i); if (key && key.startsWith(this.prefix)) { keysToRemove.push(key); } } for (const key of keysToRemove) { try { localStorage.removeItem(key); } catch (error) { console.error(`Error removing ${key}:`, error); } } } }; // src/adapters/stores/async-storage-provider.ts var AsyncStorageProvider = class extends BaseStorageProvider { constructor(storage, prefix = "app_version_check_") { super(); this.storage = storage; this.prefix = prefix; } getKey(key) { return `${this.prefix}${key}`; } async getLastCheckTime() { try { const value = await this.storage.getItem(this.getKey("lastCheckTime")); return value ? parseInt(value, 10) : null; } catch (error) { console.error("Error reading last check time:", error); return null; } } async setLastCheckTime(timestamp) { try { await this.storage.setItem(this.getKey("lastCheckTime"), timestamp.toString()); } catch (error) { console.error("Error setting last check time:", error); } } async getRemindLaterTime() { try { const value = await this.storage.getItem(this.getKey("remindLaterTime")); return value ? parseInt(value, 10) : null; } catch (error) { console.error("Error reading remind later time:", error); return null; } } async setRemindLaterTime(timestamp) { try { await this.storage.setItem(this.getKey("remindLaterTime"), timestamp.toString()); } catch (error) { console.error("Error setting remind later time:", error); } } async clearRemindLaterTime() { try { await this.storage.removeItem(this.getKey("remindLaterTime")); } catch (error) { console.error("Error clearing remind later time:", error); } } async getDismissCount() { try { const value = await this.storage.getItem(this.getKey("dismissCount")); return value ? parseInt(value, 10) : 0; } catch (error) { console.error("Error reading dismiss count:", error); return 0; } } async incrementDismissCount() { try { const current = await this.getDismissCount(); await this.storage.setItem(this.getKey("dismissCount"), (current + 1).toString()); } catch (error) { console.error("Error incrementing dismiss count:", error); } } async getLastShownVersion() { try { return await this.storage.getItem(this.getKey("lastShownVersion")); } catch (error) { console.error("Error reading last shown version:", error); return null; } } async setLastShownVersion(version) { try { await this.storage.setItem(this.getKey("lastShownVersion"), version); } catch (error) { console.error("Error setting last shown version:", error); } } async getAutoUpdateEnabled() { try { const value = await this.storage.getItem(this.getKey("autoUpdateEnabled")); return value === "true"; } catch (error) { console.error("Error reading auto update preference:", error); return false; } } async setAutoUpdateEnabled(enabled) { try { await this.storage.setItem(this.getKey("autoUpdateEnabled"), enabled.toString()); } catch (error) { console.error("Error setting auto update preference:", error); } } async getAllPreferences() { const preferences = {}; const keys = [ "lastCheckTime", "remindLaterTime", "dismissCount", "lastShownVersion", "autoUpdateEnabled" ]; for (const key of keys) { try { const value = await this.storage.getItem(this.getKey(key)); if (value !== null) { preferences[key] = value; } } catch (error) { console.error(`Error reading ${key}:`, error); } } return preferences; } async clearAll() { if (this.storage.getAllKeys && this.storage.multiRemove) { try { const allKeys = await this.storage.getAllKeys(); const keysToRemove = allKeys.filter((key) => key.startsWith(this.prefix)); if (keysToRemove.length > 0) { await this.storage.multiRemove(keysToRemove); } } catch (error) { console.error("Error clearing all preferences:", error); } } else { const keys = [ "lastCheckTime", "remindLaterTime", "dismissCount", "lastShownVersion", "autoUpdateEnabled" ]; for (const key of keys) { try { await this.storage.removeItem(this.getKey(key)); } catch (error) { console.error(`Error removing ${key}:`, error); } } } } }; exports.AsyncStorageProvider = AsyncStorageProvider; exports.LocalStorageProvider = LocalStorageProvider; //# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map