Files
lettersoup-online/002_source/ionic_mobile/src/contexts/MyIonMetric/AppUseTime.tsx
2025-04-26 10:08:01 +08:00

79 lines
2.5 KiB
TypeScript

import React, { createContext, ReactNode, useContext } from 'react';
import { useMyIonMetric } from '.';
import { APP_USE_TIME } from '../../constants';
const AppUseTimeContext = createContext<AppUseTimeContextProps | undefined>(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 (
<AppUseTimeContext.Provider
value={{
//
Helloworld,
myIonMetricGetAppUseTime,
myIonMetricResetAppUseTime,
myIonMetricIncAppUseTime,
//
myIonMetricSetAppUseTime,
myIonMetricGetAppUseTimeIgnore,
myIonMetricSetAppUseTimeIgnore,
}}
>
{/* */}
{children}
</AppUseTimeContext.Provider>
);
};
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<void>;
myIonMetricResetAppUseTime: () => Promise<void>;
//
myIonMetricSetAppUseTime: (time_spent_s: number) => Promise<void>;
myIonMetricGetAppUseTimeIgnore: () => Promise<{ time_spent_s: number }>;
myIonMetricSetAppUseTimeIgnore: (time_spent_s: number) => Promise<void>;
}