https://github.com/aneldev/dynadux-currencies-section
Currencies section for Dynadux stores
https://github.com/aneldev/dynadux-currencies-section
Last synced: 12 months ago
JSON representation
Currencies section for Dynadux stores
- Host: GitHub
- URL: https://github.com/aneldev/dynadux-currencies-section
- Owner: aneldev
- License: mit
- Created: 2020-04-06T16:34:38.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-12T09:57:23.000Z (over 3 years ago)
- Last Synced: 2025-02-13T13:43:36.396Z (over 1 year ago)
- Language: TypeScript
- Size: 3.93 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 20
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# About
[Dynadux](https://github.com/aneldev/dynadux) Section for Currencies.
# Usage
_In Typescript_
Let's create a function that creates the app store and uses this package.
```
import {createCurrenciesSection} from "dynadux-currencies-section";
interface IState {
// ... other sections or state props
currenciesSection: ICreateCurrenciesSectionState;
}
const createAppStore = (onChange: (state: IState) => void) => {
const store = createStore({onChange});
return {
// ... other parts of the store
currencies: createCurrenciesSection({
sectionName: 'currenciesSection',
store,
defaultCurrency: 'eur',
updateIfOldenThanMinutes: 30,
getCurrencies, // A currencies rates getter
})
};
};
```
Lets use the store.
```
const appStore = createAppStore({onChange: ()=> ... });
// Wait to load the rates
await appStore.currencies.loadRates();
// Switch currency
appStore.currencies.currency = 'usd';
// Convert eur (to current currency usd)
const usdValue = appStore.currencies.convert(12.20, 'eur'); // 11.09
```
# createCurrenciesSection config
```
interface ICreateCurrenciesSectionConfig {
store: ICreateStoreAPI; // Dynadux store
sectionName: string;
defaultCurrency: string;
getCurrencies: () => Promise;
updateIfOldenThanMinutes?: number;
}
interface ICurrencyRates {
[currencyName: string]: number | undefined;
}
```
# createCurrenciesSection State
The State is at the `sectionName` of the config. But in practice, you don't have to access the State since the API has everything that you want.
Maybe, the most notable is the `currency` prop.
```
ICreateCurrenciesSectionState {
loadState: 'empty' | 'loading' | 'loaded';
currency: string;
currencies: DynaCurrencies;
error: string;
lastUpdate: Date | null;
}
```
Also, the `currencies: DynaCurrencies` is the instance of the [DynaCurrencies](https://github.com/aneldev/dyna-currencies) converter, that offers a list of currencies, etc.. Checkout it's repo to see what it offers.
# createCurrenciesSection API
#### currency: string
Get and set the current currency.
#### hasLoadedRates: boolean
Boolean to know if the rates are loaded
#### loadRates: (): Promise
Uses the `getCurrencies` of the config to get the rates.
#### convert: (value: number, sourceCurrency: string, round = false): number | null
Rate converter to current currency.
Returns null if the rates are not loaded, or when the currency is wrong.
#### convertDynaPrice: (price: IDynaPrice): IDynaPrice | null
Convert an IDynaPrice to the current currency.
#### convertToLabel: (value: number, sourceCurrency: string): IDynaLabelCurrency | null
Convert and create an IDynaLabelCurrency
#### getCurrencyRates: async (): Promise
It loads or returns the already loaded currencies.