import { RegisterInfo } from "../models/registerInfo";
|
|
class OtpService {
|
|
setOtpTimeToStorage(name: string, info) {
|
localStorage.setItem(name,JSON.stringify(info));
|
}
|
|
getOtpTime(name: string) {
|
return localStorage.getItem(name);
|
}
|
|
removeOtpTimeToStorage(name: string) {
|
localStorage.removeItem(name);
|
}
|
|
parseOtpTime(name): OtpTime | null {
|
const otpTime = this.getOtpTime(name);
|
return otpTime ? JSON.parse(otpTime) : null;
|
}
|
|
diffOtpTime(storageName: string, otpCounterSec: number) {
|
const parseOtpTime = this.parseOtpTime(storageName);
|
|
if (parseOtpTime) {
|
const diffSecs = this.calcDiffSecs(parseOtpTime.time);
|
|
if (diffSecs < otpCounterSec) {
|
return diffSecs;
|
} else {
|
this.removeOtpTimeToStorage(storageName);
|
return false;
|
}
|
}
|
|
return false;
|
}
|
|
private calcDiffSecs(parseOtpTime) {
|
const currentTime = new Date().getTime();
|
const storageTime = new Date(parseOtpTime).getTime();
|
return Math.floor((currentTime - storageTime) / 1000);
|
}
|
|
}
|
|
export default new OtpService();
|
|
|
export interface OtpTime extends RegisterInfo {
|
time: string;
|
}
|
|
export enum OtpStorageName {
|
EMAIL = 'emailOtpTime',
|
PHONE = 'phoneOtpTime'
|
}
|