@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
JavaScript
'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