78 lines
2.4 KiB
C
78 lines
2.4 KiB
C
/*
|
|
* profile.h — per-user profile directory management for sovereign_browser
|
|
*
|
|
* Each Nostr identity (identified by its 64-char hex pubkey) gets its own
|
|
* profile directory under ~/.sovereign_browser/profiles/<pubkey_hex>/
|
|
* containing a per-user browser.db and identity.json.
|
|
*
|
|
* Global settings (agent server, theme, shortcuts, inspector geometry)
|
|
* live in ~/.sovereign_browser/global.db and are shared across all users.
|
|
*/
|
|
|
|
#ifndef PROFILE_H
|
|
#define PROFILE_H
|
|
|
|
#include <stddef.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*
|
|
* Get the profile directory path for a given hex pubkey.
|
|
* pubkey_hex — 64-char hex pubkey (no leading "0x")
|
|
* out — output buffer
|
|
* out_sz — size of output buffer
|
|
* Writes "~/.sovereign_browser/profiles/<pubkey_hex>/" to out.
|
|
*/
|
|
void profile_get_dir(const char *pubkey_hex, char *out, size_t out_sz);
|
|
|
|
/*
|
|
* Create the profile directory for the given hex pubkey if it doesn't
|
|
* already exist (mkdir -p style — creates parent dirs as needed).
|
|
* pubkey_hex — 64-char hex pubkey
|
|
* Returns 0 on success, -1 on error.
|
|
*/
|
|
int profile_ensure_dir(const char *pubkey_hex);
|
|
|
|
/*
|
|
* Get the per-user browser.db path for a given hex pubkey.
|
|
* Writes "~/.sovereign_browser/profiles/<pubkey_hex>/browser.db" to out.
|
|
*/
|
|
void profile_get_db_path(const char *pubkey_hex, char *out, size_t out_sz);
|
|
|
|
/*
|
|
* Get the per-user identity.json path for a given hex pubkey.
|
|
* Writes "~/.sovereign_browser/profiles/<pubkey_hex>/identity.json" to out.
|
|
*/
|
|
void profile_get_identity_path(const char *pubkey_hex, char *out, size_t out_sz);
|
|
|
|
/*
|
|
* Get the global identity.json path (stores the last-used pubkey_hex so
|
|
* the login dialog can default to the right profile).
|
|
* Writes "~/.sovereign_browser/identity.json" to out.
|
|
*/
|
|
void profile_get_global_identity_path(char *out, size_t out_sz);
|
|
|
|
/*
|
|
* Save the last-used pubkey_hex to the global identity.json.
|
|
* pubkey_hex — 64-char hex pubkey, or NULL/empty to clear
|
|
* Returns 0 on success, -1 on error.
|
|
*/
|
|
int profile_save_last_pubkey(const char *pubkey_hex);
|
|
|
|
/*
|
|
* Read the last-used pubkey_hex from the global identity.json.
|
|
* out — output buffer (must be at least 65 bytes)
|
|
* out_sz — size of output buffer
|
|
* Returns 0 on success (out filled with hex pubkey), -1 if not found or
|
|
* error (out is left unchanged).
|
|
*/
|
|
int profile_load_last_pubkey(char *out, size_t out_sz);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* PROFILE_H */
|