Exercise 4: Session Storage for OTP Timer
Problem Statement
Create functions `setOtpExpiry(ts)` and `isOtpExpired()`. Expired if Date.now() > ts.
Sample Output:
setOtpExpiry(Date.now() + 60000) isOtpExpired() => false (if < 1 minute) isOtpExpired() => true (if > 1 minute)
Solution
const OTP_KEY = 'otp_expiry';
const setOtpExpiry = (ts) => sessionStorage.setItem(OTP_KEY, String(ts));
const isOtpExpired = () => {
const ts = Number(sessionStorage.getItem(OTP_KEY));
return !Number.isFinite(ts) || Date.now() > ts;
};Explanation
Overall Goal:
- OTP expiry time track karna.
- Check karna ki OTP abhi valid hai ya expire ho gaya.
Line 1: Constant key
const OTP_KEY = 'otp_expiry';- Storage key constant.
Line 2: Save expiry
const setOtpExpiry = (ts) => sessionStorage.setItem(OTP_KEY, String(ts));ts→ timestamp (milliseconds since epoch).String(ts)→ number ko string me convert (storage requirement).sessionStorage→ tab close hone tak data rahega (localStorage se kam persistent).
Line 3-5: Check expiry
const isOtpExpired = () => {const ts = Number(sessionStorage.getItem(OTP_KEY));- Stored string ko number me convert.
- Agar invalid →
NaNhoga. return !Number.isFinite(ts) || Date.now() > ts;!Number.isFinite(ts)→ agar timestamp invalid hai (NaN) → expired.Date.now() > ts→ agar current time expiry se zyada hai → expired.||→ dono me se koi ek true ho to expired.
Example:
setOtpExpiry(Date.now() + 60000)→ 1 minute expiry.isOtpExpired()→ 30 seconds baad →false(valid).isOtpExpired()→ 2 minutes baad →true(expired).
Real world:
- OTP verification: 5-minute expiry check.
- Password reset: token expiry validation.
- Session management: login session timeout.