homebridge-roborock-control
Version:
A Homebridge plugin to control Roborock vacuum cleaners.
45 lines • 1.7 kB
JavaScript
/* 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