UNPKG

homebridge-roborock-control

Version:

A Homebridge plugin to control Roborock vacuum cleaners.

45 lines 1.7 kB
/* eslint-disable indent */ /* eslint-disable @typescript-eslint/no-explicit-any */ import * as fs from 'fs'; import { join } from 'path'; import { pyroborock } from '../roborock/roborock-api.js'; import { PLUGIN_NAME } from '../settings.js'; import { Log } from './log.js'; // Write LoginData.user_data to persistent storage for future sessions. export async function writeUserData(api, pyLoginData) { const userJson = await pyroborock.json.dumps(await pyLoginData.user_data.as_dict()); const dirPath = join(api.user.storagePath(), PLUGIN_NAME); const filePath = join(dirPath, await pyLoginData.email); Log.debug('Writing userData to ', filePath); try { fs.mkdirSync(dirPath, { recursive: true }); fs.writeFileSync(filePath, userJson); } catch (ex) { Log.debug(`Failed to write userData to ${filePath}:`, ex); } } // Helper function to convert a JSON string to UserData object. export async function toPyUserData(userJson) { try { return await pyroborock.UserData.from_dict(await pyroborock.json.loads(userJson)); } catch (ex) { Log.debug('Invalid UserData JSON:', ex); } return null; } // Read LoginData.user_data from persistent storage and deserialize it. export async function readUserData(api, email) { const filePath = join(api.user.storagePath(), PLUGIN_NAME, email); Log.debug('Reading userData from ', filePath); try { const userJson = fs.readFileSync(filePath).toString(); return await toPyUserData(userJson); } catch (ex) { Log.debug(`Failed to read userData from ${filePath}:`, ex); } return null; } //# sourceMappingURL=user-cache.js.map