This repository has been archived on 2025-08-19. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
coinstorge/website/src/lib/stores/portfolio-data.ts

59 lines
1.6 KiB
TypeScript

import { writable } from 'svelte/store';
export interface PortfolioSummary {
baseCurrencyBalance: number;
totalCoinValue: number;
totalValue: number;
currency: string;
}
export interface PortfolioData extends PortfolioSummary {
coinHoldings: Array<{
symbol: string;
quantity: number;
currentPrice: number;
value: number;
percentageChange: number;
change24h: number;
icon?: string;
portfolioPercent: number;
}>;
}
export const PORTFOLIO_SUMMARY = writable<PortfolioSummary | null>(null);
export const PORTFOLIO_DATA = writable<PortfolioData | null>(null);
export async function fetchPortfolioSummary() {
try {
const response = await fetch('/api/portfolio/summary');
if (response.ok) {
const data = await response.json();
PORTFOLIO_SUMMARY.set(data);
return data;
}
} catch (error) {
console.error('Failed to fetch portfolio summary:', error);
}
return null;
}
export async function fetchPortfolioData() {
try {
const response = await fetch('/api/portfolio/total');
if (response.ok) {
const data = await response.json();
PORTFOLIO_DATA.set(data);
PORTFOLIO_SUMMARY.set({
baseCurrencyBalance: data.baseCurrencyBalance,
totalCoinValue: data.totalCoinValue,
totalValue: data.totalValue,
currency: data.currency
});
return data;
}
} catch (error) {
console.error('Failed to fetch portfolio data:', error);
}
return null;
}