72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
/**
|
|
* Vault assets: API ↔ UI mapping and initial mock data.
|
|
* Used by useVaultAssets and VaultScreen for /assets/get and /assets/create flows.
|
|
*/
|
|
|
|
import type { VaultAsset, VaultAssetType } from '../types';
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Types
|
|
// -----------------------------------------------------------------------------
|
|
|
|
/** Shape returned by GET /assets/get (backend AssetOut) */
|
|
export interface ApiAsset {
|
|
id: number;
|
|
title: string;
|
|
type?: string;
|
|
author_id?: number;
|
|
private_key_shard?: string;
|
|
content_outer_encrypted?: string;
|
|
created_at?: string;
|
|
updated_at?: string;
|
|
heir_id?: number;
|
|
heir_email?: string;
|
|
}
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Constants
|
|
// -----------------------------------------------------------------------------
|
|
|
|
export const VAULT_ASSET_TYPES: VaultAssetType[] = [
|
|
'game_account',
|
|
'private_key',
|
|
'document',
|
|
'photo',
|
|
'will',
|
|
'custom',
|
|
];
|
|
|
|
export const initialVaultAssets: VaultAsset[] = [];
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// Mapping
|
|
// -----------------------------------------------------------------------------
|
|
|
|
/**
|
|
* Map backend API asset to VaultAsset for UI.
|
|
*/
|
|
export function mapApiAssetToVaultAsset(api: ApiAsset): VaultAsset {
|
|
const type: VaultAssetType =
|
|
api.type && VAULT_ASSET_TYPES.includes(api.type as VaultAssetType)
|
|
? (api.type as VaultAssetType)
|
|
: 'custom';
|
|
return {
|
|
id: String(api.id),
|
|
type,
|
|
label: api.title,
|
|
createdAt: api.created_at ? new Date(api.created_at) : new Date(),
|
|
updatedAt: api.updated_at ? new Date(api.updated_at) : new Date(),
|
|
isEncrypted: true,
|
|
heirEmail: api.heir_email,
|
|
rawData: api,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Map array of API assets to VaultAsset[].
|
|
*/
|
|
export function mapApiAssetsToVaultAssets(apiList: ApiAsset[]): VaultAsset[] {
|
|
return apiList.map(mapApiAssetToVaultAsset);
|
|
}
|
|
|