import React, { createContext, ReactNode, useContext } from 'react'; import { useMyIonMetric } from '.'; import { APP_USE_TIME } from '../../constants'; const AppUseTimeContext = createContext(undefined); export const AppUseTimeProvider: React.FC<{ children: ReactNode }> = ({ children }) => { const { myIonStoreRead, myIonStoreWrite } = useMyIonMetric(); function Helloworld() { console.log('helloworld'); } async function myIonMetricGetAppUseTime() { let result = JSON.parse(await myIonStoreRead(APP_USE_TIME, { time_spent_s: 0 })); return result; } async function myIonMetricResetAppUseTime() { await myIonStoreWrite(APP_USE_TIME, JSON.stringify({ time_spent_s: 0 })); } async function myIonMetricIncAppUseTime(time_spent_s: number) { let result = await myIonMetricGetAppUseTime(); await myIonStoreWrite(APP_USE_TIME, JSON.stringify({ time_spent_s: result.time_spent_s + time_spent_s })); } async function myIonMetricSetAppUseTime(time_spent_s: number) { await myIonStoreWrite(APP_USE_TIME, JSON.stringify({ time_spent_s: time_spent_s })); } async function myIonMetricGetAppUseTimeIgnore() { let result = JSON.parse(await myIonStoreRead(APP_USE_TIME + '_ignore', { time_spent_s: 0 })); return result; } async function myIonMetricSetAppUseTimeIgnore(time_spent_s: number) { await myIonStoreWrite(APP_USE_TIME + '_ignore', JSON.stringify({ time_spent_s: time_spent_s })); } return ( {/* */} {children} ); }; export const useAppUseTime = (): AppUseTimeContextProps => { const context = useContext(AppUseTimeContext); if (!context) { throw new Error('useAppUseTime must be used within a AppUseTimeProvider'); } return context; }; interface AppUseTimeContextProps { Helloworld: () => void; myIonMetricGetAppUseTime: () => Promise<{ time_spent_s: number }>; myIonMetricIncAppUseTime: (time_spent_s: number) => Promise; myIonMetricResetAppUseTime: () => Promise; // myIonMetricSetAppUseTime: (time_spent_s: number) => Promise; myIonMetricGetAppUseTimeIgnore: () => Promise<{ time_spent_s: number }>; myIonMetricSetAppUseTimeIgnore: (time_spent_s: number) => Promise; }