frequi_origin/src/stores/settings.ts

66 lines
1.6 KiB
TypeScript
Raw Normal View History

import { defineStore } from 'pinia';
import { getCurrentTheme, getTheme } from '@/shared/themes';
2022-04-19 18:20:46 +00:00
import axios from 'axios';
import { UiVersion } from '@/types';
2022-12-06 05:59:24 +00:00
import { FtWsMessageTypes } from '@/types/wsMessageTypes';
const STORE_UI_SETTINGS = 'ftUISettings';
export enum OpenTradeVizOptions {
showPill = 'showPill',
asTitle = 'asTitle',
noOpenTrades = 'noOpenTrades',
}
2022-12-06 05:59:24 +00:00
const notificationDefaults = {
[FtWsMessageTypes.entryFill]: true,
[FtWsMessageTypes.exitFill]: true,
[FtWsMessageTypes.entryCancel]: true,
[FtWsMessageTypes.exitCancel]: true,
};
export const useSettingsStore = defineStore('uiSettings', {
// other options...
state: () => {
return {
openTradesInTitle: OpenTradeVizOptions.showPill as string,
timezone: 'UTC',
backgroundSync: true,
currentTheme: getCurrentTheme(),
2022-04-19 18:20:46 +00:00
uiVersion: 'dev',
2022-07-11 14:33:47 +00:00
useHeikinAshiCandles: false,
2022-12-06 05:59:24 +00:00
notifications: notificationDefaults,
2022-12-06 06:10:40 +00:00
profitDistributionBins: 20,
};
},
getters: {
isDarkTheme(state) {
const theme = getTheme(state.currentTheme);
if (theme) {
return theme.dark;
}
return true;
},
chartTheme(): string {
return this.isDarkTheme ? 'dark' : 'light';
},
},
actions: {
2022-04-19 18:20:46 +00:00
async loadUIVersion() {
if (import.meta.env.PROD) {
try {
const result = await axios.get<UiVersion>('/ui_version');
const { version } = result.data;
this.uiVersion = version;
} catch (error) {
//
}
}
},
},
persist: {
key: STORE_UI_SETTINGS,
},
});