import { writable } from "svelte/store"; // Cache expiration time in milliseconds (5 minutes) const CACHE_EXPIRATION_TIME = 5 * 60 * 1000; export const clientSideCache = writable({}); // Function to set cache data for a specific key export const setCache = (key, data, name) => { const timestamp = Date.now(); clientSideCache.update((cache) => { return { ...cache, [key]: { ...cache[key], [name]: { data, timestamp }, }, }; }); }; // Function to get cache data for a specific key export const getCache = (key, name) => { let cacheData; clientSideCache.subscribe((cache) => { const entry = cache[key]?.[name]; if (entry) { const { data, timestamp } = entry; // Check if the cache has expired if (Date.now() - timestamp < CACHE_EXPIRATION_TIME) { cacheData = data; } else { // Cache has expired, so return undefined to fetch new data cacheData = undefined; } } }); return cacheData; }; // Function to clear the entire cache export const clearCache = () => { clientSideCache.set({}); }; export const showCookieConsent = writable(false); export const shouldUpdatePriceChart = writable(false); export const coolMode = writable(false); export const timeFrame =writable("Max"); export const closedPWA = writable(false); export const executiveClicked = writable(false); export const secFilingsClicked = writable(false); export const newAvatar = writable(""); export const displayCompanyName = writable(""); export const currentPrice = writable(0); export const currentPortfolioPrice = writable(0); export const realtimePrice = writable(0); export const wsBidPrice = writable(null); export const wsAskPrice = writable(null); export const priceIncrease = writable(false); export const isCrosshairMoveActive = writable(true); export const screenWidth = writable(0); export const globalForm = writable(>[]); export const trendingList = writable(>[]); //export const userRegion = writable(""); export const loginData = writable({}); export const replyCommentClicked = writable({}); export const editCommentClicked = writable({}); export const priceChartData = writable({}); export const fundamentalAnalysisComponent = writable(false); export const priceAnalysisComponent = writable(false); export const revenueSegmentationComponent = writable(false); export const trendAnalysisComponent = writable(false); export const shareStatisticsComponent = writable(false); export const shareholderComponent = writable(false); export const retailVolumeComponent = writable(false); export const darkPoolComponent = writable(false); export const enterpriseComponent = writable(false); export const varComponent = writable(false); export const sentimentComponent = writable(false); export const analystEstimateComponent = writable(false); export const marketMakerComponent = writable(false); export const optionComponent = writable(false); export const clinicalTrialComponent = writable(false); export const failToDeliverComponent = writable(false); export const borrowedShareComponent = writable(false); export const impliedVolatilityComponent = writable(false); export const optionsNetFlowComponent = writable(false); export const governmentContractComponent = writable(false); export const analystInsightComponent = writable(false); export const swapComponent = writable(false); export const taRatingComponent = writable(false); export const dcfComponent = writable(false); export const correlationComponent = writable(false); export const corporateLobbyingComponent = writable(false); export const fomcImpactComponent = writable(false); export const scoreComponent = writable(false); export const goBackToPostId = writable(""); export const strategyId = writable(""); export const articleId = writable(""); export const traded = writable(false); export const previousPage = writable(""); export const oauthState = writable(""); export const oauthVerifier = writable(""); export const oauthProvider = writable(""); export const newPriceAlertData = writable(>{}); export const cachedPosts = writable(>{}); export const currentPagePosition = writable(0); export const postVote = writable(>{}); export const similarTickerClicked = writable(false); export const isScrollingUp = writable(true); export const isWeekend = writable(false); export const isBeforeMarketOpen = writable(false); export const isAfterMarketClose = writable(false); export const isOpen = writable(false); export const commentIdDeleted = writable(""); export const postIdDeleted = writable(""); export const commentAdded = writable(""); export const commentUpdated = writable(""); export const scrollToComment = writable(""); export const searchBarData = writable([]); export const stockTicker = writable(""); export const etfTicker = writable(""); export const cryptoTicker = writable(""); export const assetType = writable(""); export const hedgeFundsCIK = writable(""); export const linkTitle = writable(""); export const numberOfUnreadNotification = writable(0); export const openPriceAlert = writable(false); export const sidebarOpen = writable(false); export const sidebarExpanded = writable(true); export const sidebarOpenField = writable(false); export const tagList = writable([ { name: "Meme", color: "#105488", }, { name: "News", color: "#c78900", }, { name: "Discussion", color: "#800080", }, { name: "Gain", color: "#19c41d", }, { name: "Loss", color: "#FF0000", }, { name: "Chart", color: "#FF4500", }, { name: "DD", color: "#365B8C", }, { name: "YOLO", color: "#56B6DF", }, ]);