Something went wrong. Try again.
The agentic engineering control plane for the posthuman future
Something went wrong. Try again.
1.4 kB · 55 lines
C++
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include "SessionStore.h"
#include <QDir>#include <QFile>#include <QFileInfo>#include <QJsonDocument>#include <QJsonObject>#include <QSaveFile>
SessionStore::SessionStore(QObject* parent) : QObject(parent) {}
QString SessionStore::sessionPath() { // XDG Base Directory spec: configuration lives under $XDG_CONFIG_HOME, // defaulting to ~/.config. QString configDirectory = QString::fromLocal8Bit(qgetenv("XDG_CONFIG_HOME")); if (configDirectory.isEmpty()) { configDirectory = QDir::home().filePath(QStringLiteral(".config")); } return QDir(configDirectory).filePath( QStringLiteral("xenomorphic/session.json"));}
QVariantMap SessionStore::load() { QFile file(sessionPath()); if (!file.open(QIODevice::ReadOnly)) { return {}; }
const QJsonDocument document = QJsonDocument::fromJson(file.readAll()); if (!document.isObject()) { return {}; }
return document.object().toVariantMap();}
bool SessionStore::save(const QVariantMap& root) { const QString path = sessionPath(); if (!QDir().mkpath(QFileInfo(path).absolutePath())) { return false; }
QSaveFile file(path); if (!file.open(QIODevice::WriteOnly)) { return false; }
const QByteArray data = QJsonDocument::fromVariant(root).toJson(QJsonDocument::Indented); if (file.write(data) != data.size()) { return false; } return file.commit();}