Rename project from Gooti to Plebian Signer and add Claude Code config
- Rename all gooti-* files to plebian-signer-* across Chrome and Firefox - Rename GootiMetaHandler to SignerMetaHandler in common library - Update all references to use new naming convention - Add CLAUDE.md with project build/architecture documentation - Add Claude Code release command tailored for this npm/Angular project - Add NWC-IMPLEMENTATION.md design document - Add Claude skills for nostr, typescript, react, svelte, and applesauce libs - Update README and various component templates with new branding 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,17 +19,17 @@ export class StartupService {
|
||||
|
||||
// Step 0:
|
||||
storageConfig.browserSyncNoHandler.setIgnoreProperties(
|
||||
storageConfig.gootiMetaHandler.metaProperties
|
||||
storageConfig.signerMetaHandler.metaProperties
|
||||
);
|
||||
|
||||
// Step 1: Load the gooti's user settings
|
||||
const gootiMetaData = await this.#storage.loadGootiMetaData();
|
||||
if (typeof gootiMetaData?.syncFlow === 'undefined') {
|
||||
// Very first run. The user has not set up Gooti yet.
|
||||
// Step 1: Load the user settings
|
||||
const signerMetaData = await this.#storage.loadSignerMetaData();
|
||||
if (typeof signerMetaData?.syncFlow === 'undefined') {
|
||||
// Very first run. The user has not set up Plebian Signer yet.
|
||||
this.#router.navigateByUrl('/welcome');
|
||||
return;
|
||||
}
|
||||
this.#storage.enableBrowserSyncFlow(gootiMetaData.syncFlow);
|
||||
this.#storage.enableBrowserSyncFlow(signerMetaData.syncFlow);
|
||||
|
||||
// Load the browser session data.
|
||||
const browserSessionData = await this.#storage.loadBrowserSessionData();
|
||||
|
||||
@@ -113,7 +113,7 @@ export const deleteVault = async function (
|
||||
doNotSetIsInitializedToFalse: boolean
|
||||
): Promise<void> {
|
||||
this.assureIsInitialized();
|
||||
const syncFlow = this.getGootiMetaHandler().gootiMetaData?.syncFlow;
|
||||
const syncFlow = this.getSignerMetaHandler().signerMetaData?.syncFlow;
|
||||
if (typeof syncFlow === 'undefined') {
|
||||
throw new Error('Sync flow is not set.');
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import { BrowserSyncFlow, GootiMetaData } from './types';
|
||||
import { BrowserSyncFlow, SignerMetaData } from './types';
|
||||
|
||||
export abstract class GootiMetaHandler {
|
||||
get gootiMetaData(): GootiMetaData | undefined {
|
||||
return this.#gootiMetaData;
|
||||
export abstract class SignerMetaHandler {
|
||||
get signerMetaData(): SignerMetaData | undefined {
|
||||
return this.#signerMetaData;
|
||||
}
|
||||
|
||||
#gootiMetaData?: GootiMetaData;
|
||||
#signerMetaData?: SignerMetaData;
|
||||
|
||||
readonly metaProperties = ['syncFlow', 'vaultSnapshots'];
|
||||
/**
|
||||
@@ -18,25 +18,25 @@ export abstract class GootiMetaHandler {
|
||||
*/
|
||||
abstract loadFullData(): Promise<Partial<Record<string, any>>>;
|
||||
|
||||
setFullData(data: GootiMetaData) {
|
||||
this.#gootiMetaData = data;
|
||||
setFullData(data: SignerMetaData) {
|
||||
this.#signerMetaData = data;
|
||||
}
|
||||
|
||||
abstract saveFullData(data: GootiMetaData): Promise<void>;
|
||||
abstract saveFullData(data: SignerMetaData): Promise<void>;
|
||||
|
||||
/**
|
||||
* Sets the browser sync flow for the user and immediately saves it.
|
||||
*/
|
||||
async setBrowserSyncFlow(flow: BrowserSyncFlow): Promise<void> {
|
||||
if (!this.#gootiMetaData) {
|
||||
this.#gootiMetaData = {
|
||||
if (!this.#signerMetaData) {
|
||||
this.#signerMetaData = {
|
||||
syncFlow: flow,
|
||||
};
|
||||
} else {
|
||||
this.#gootiMetaData.syncFlow = flow;
|
||||
this.#signerMetaData.syncFlow = flow;
|
||||
}
|
||||
|
||||
await this.saveFullData(this.#gootiMetaData);
|
||||
await this.saveFullData(this.#signerMetaData);
|
||||
}
|
||||
|
||||
abstract clearData(keep: string[]): Promise<void>;
|
||||
@@ -6,10 +6,10 @@ import {
|
||||
BrowserSessionData,
|
||||
BrowserSyncData,
|
||||
BrowserSyncFlow,
|
||||
GootiMetaData,
|
||||
SignerMetaData,
|
||||
Relay_DECRYPTED,
|
||||
} from './types';
|
||||
import { GootiMetaHandler } from './gooti-meta-handler';
|
||||
import { SignerMetaHandler } from './signer-meta-handler';
|
||||
import { CryptoHelper } from '@common';
|
||||
import {
|
||||
addIdentity,
|
||||
@@ -24,7 +24,7 @@ export interface StorageServiceConfig {
|
||||
browserSessionHandler: BrowserSessionHandler;
|
||||
browserSyncYesHandler: BrowserSyncHandler;
|
||||
browserSyncNoHandler: BrowserSyncHandler;
|
||||
gootiMetaHandler: GootiMetaHandler;
|
||||
signerMetaHandler: SignerMetaHandler;
|
||||
}
|
||||
|
||||
@Injectable({
|
||||
@@ -37,7 +37,7 @@ export class StorageService {
|
||||
#browserSessionHandler!: BrowserSessionHandler;
|
||||
#browserSyncYesHandler!: BrowserSyncHandler;
|
||||
#browserSyncNoHandler!: BrowserSyncHandler;
|
||||
#gootiMetaHandler!: GootiMetaHandler;
|
||||
#signerMetaHandler!: SignerMetaHandler;
|
||||
|
||||
initialize(config: StorageServiceConfig): void {
|
||||
if (this.isInitialized) {
|
||||
@@ -46,27 +46,27 @@ export class StorageService {
|
||||
this.#browserSessionHandler = config.browserSessionHandler;
|
||||
this.#browserSyncYesHandler = config.browserSyncYesHandler;
|
||||
this.#browserSyncNoHandler = config.browserSyncNoHandler;
|
||||
this.#gootiMetaHandler = config.gootiMetaHandler;
|
||||
this.#signerMetaHandler = config.signerMetaHandler;
|
||||
this.isInitialized = true;
|
||||
}
|
||||
|
||||
async enableBrowserSyncFlow(flow: BrowserSyncFlow): Promise<void> {
|
||||
this.assureIsInitialized();
|
||||
|
||||
this.#gootiMetaHandler.setBrowserSyncFlow(flow);
|
||||
this.#signerMetaHandler.setBrowserSyncFlow(flow);
|
||||
}
|
||||
|
||||
async loadGootiMetaData(): Promise<GootiMetaData | undefined> {
|
||||
async loadSignerMetaData(): Promise<SignerMetaData | undefined> {
|
||||
this.assureIsInitialized();
|
||||
|
||||
const data = await this.#gootiMetaHandler.loadFullData();
|
||||
const data = await this.#signerMetaHandler.loadFullData();
|
||||
if (Object.keys(data).length === 0) {
|
||||
// No data available yet.
|
||||
return undefined;
|
||||
}
|
||||
|
||||
this.#gootiMetaHandler.setFullData(data as GootiMetaData);
|
||||
return data as GootiMetaData;
|
||||
this.#signerMetaHandler.setFullData(data as SignerMetaData);
|
||||
return data as SignerMetaData;
|
||||
}
|
||||
|
||||
async loadBrowserSessionData(): Promise<BrowserSessionData | undefined> {
|
||||
@@ -119,7 +119,7 @@ export class StorageService {
|
||||
this.assureIsInitialized();
|
||||
await this.getBrowserSyncHandler().clearData();
|
||||
await this.getBrowserSessionHandler().clearData();
|
||||
await this.getGootiMetaHandler().clearData([]);
|
||||
await this.getSignerMetaHandler().clearData([]);
|
||||
this.isInitialized = false;
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ export class StorageService {
|
||||
getBrowserSyncHandler(): BrowserSyncHandler {
|
||||
this.assureIsInitialized();
|
||||
|
||||
switch (this.#gootiMetaHandler.gootiMetaData?.syncFlow) {
|
||||
switch (this.#signerMetaHandler.signerMetaData?.syncFlow) {
|
||||
case BrowserSyncFlow.NO_SYNC:
|
||||
return this.#browserSyncNoHandler;
|
||||
|
||||
@@ -211,10 +211,10 @@ export class StorageService {
|
||||
return this.#browserSessionHandler;
|
||||
}
|
||||
|
||||
getGootiMetaHandler(): GootiMetaHandler {
|
||||
getSignerMetaHandler(): SignerMetaHandler {
|
||||
this.assureIsInitialized();
|
||||
|
||||
return this.#gootiMetaHandler;
|
||||
return this.#signerMetaHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -62,7 +62,7 @@ export type BrowserSyncData = BrowserSyncData_PART_Unencrypted &
|
||||
export enum BrowserSyncFlow {
|
||||
NO_SYNC = 0,
|
||||
BROWSER_SYNC = 1,
|
||||
GOOTI_SYNC = 2,
|
||||
SIGNER_SYNC = 2,
|
||||
CUSTOM_SYNC = 3,
|
||||
}
|
||||
|
||||
@@ -79,17 +79,17 @@ export interface BrowserSessionData {
|
||||
relays: Relay_DECRYPTED[];
|
||||
}
|
||||
|
||||
export interface GootiMetaData_VaultSnapshot {
|
||||
export interface SignerMetaData_VaultSnapshot {
|
||||
fileName: string;
|
||||
data: BrowserSyncData;
|
||||
}
|
||||
|
||||
export const GOOTI_META_DATA_KEY = {
|
||||
export const SIGNER_META_DATA_KEY = {
|
||||
vaultSnapshots: 'vaultSnapshots',
|
||||
};
|
||||
|
||||
export interface GootiMetaData {
|
||||
syncFlow?: number; // 0 = no sync, 1 = browser sync, (future: 2 = Gooti sync, 3 = Custom sync (bring your own sync))
|
||||
export interface SignerMetaData {
|
||||
syncFlow?: number; // 0 = no sync, 1 = browser sync, (future: 2 = Signer sync, 3 = Custom sync (bring your own sync))
|
||||
|
||||
vaultSnapshots?: GootiMetaData_VaultSnapshot[];
|
||||
vaultSnapshots?: SignerMetaData_VaultSnapshot[];
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ export * from './lib/services/storage/storage.service';
|
||||
export * from './lib/services/storage/types';
|
||||
export * from './lib/services/storage/browser-sync-handler';
|
||||
export * from './lib/services/storage/browser-session-handler';
|
||||
export * from './lib/services/storage/gooti-meta-handler';
|
||||
export * from './lib/services/storage/signer-meta-handler';
|
||||
export * from './lib/services/logger/logger.service';
|
||||
export * from './lib/services/startup/startup.service';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user