react-native-debug-toolkit
Version:
A simple yet powerful debugging toolkit for React Native with a convenient floating UI for development
80 lines (73 loc) • 2 kB
JavaScript
import { MMKV } from 'react-native-mmkv';
// Create MMKV instance for storing debug logs
const storage = new MMKV({
id: 'debug-toolkit-storage',
encryptionKey: 'debug-toolkit-encryption-key'
});
// Storage keys for different features
const STORAGE_KEYS = {
CONSOLE_LOGS: 'console_logs',
NETWORK_LOGS: 'network_logs',
PERFORMANCE_DATA: 'performance_data',
ZUSTAND_LOGS: 'zustand_logs',
NAVIGATION_LOGS: 'navigation_logs',
};
/**
* Utility class for storing and retrieving logs using MMKV
*/
export class StorageUtils {
/**
* Save data to MMKV storage
* @param {string} key - Storage key
* @param {any} data - Data to store
*/
static saveData(key, data) {
try {
const jsonString = JSON.stringify(data);
storage.set(key, jsonString);
} catch (error) {
console.error(`Error saving data for key ${key}:`, error);
}
}
/**
* Retrieve data from MMKV storage
* @param {string} key - Storage key
* @param {any} defaultValue - Default value if data doesn't exist
* @returns {any} - Retrieved data or default value
*/
static getData(key, defaultValue = null) {
try {
const jsonString = storage.getString(key);
if (!jsonString) return defaultValue;
return JSON.parse(jsonString);
} catch (error) {
console.error(`Error retrieving data for key ${key}:`, error);
return defaultValue;
}
}
/**
* Delete data from MMKV storage
* @param {string} key - Storage key
*/
static deleteData(key) {
try {
storage.delete(key);
} catch (error) {
console.error(`Error deleting data for key ${key}:`, error);
}
}
/**
* Clear all debug toolkit data from storage
*/
static clearAllData() {
try {
Object.values(STORAGE_KEYS).forEach(key => {
storage.delete(key);
});
} catch (error) {
console.error('Error clearing all data:', error);
}
}
}
// Export storage keys for use in features
export { STORAGE_KEYS };