19 lines
746 B
TypeScript
19 lines
746 B
TypeScript
/** همتراز با CustomerPresenceService::ONLINE_THRESHOLD_SECONDS روی سرور */
|
|||
|
|
export const CUSTOMER_ONLINE_THRESHOLD_MS = 2 * 60 * 1000
|
||
|
|
|
||
|
|
export type CustomerPresenceKind = 'online' | 'offline' | 'never'
|
||
|
|
|
||
|
|
export function getCustomerPresenceKind(
|
||
|
|
lastSeenAt: string | Date | null | undefined
|
||
|
|
): CustomerPresenceKind {
|
||
|
|
if (!lastSeenAt) return 'never'
|
||
|
|
const t = lastSeenAt instanceof Date ? lastSeenAt.getTime() : new Date(lastSeenAt).getTime()
|
||
|
|
if (!Number.isFinite(t)) return 'never'
|
||
|
|
if (Date.now() - t < CUSTOMER_ONLINE_THRESHOLD_MS) return 'online'
|
||
|
|
return 'offline'
|
||
|
|
}
|
||
|
|
|
||
|
|
export function isCustomerOnline(lastSeenAt: string | Date | null | undefined): boolean {
|
||
|
|
return getCustomerPresenceKind(lastSeenAt) === 'online'
|
||
|
|
}
|