Files
cinny/src/app/utils/lastActive.test.ts
T
jaredandClaude Opus 5 dea1f7afc0 feat(profile): 'Active now' / 'Last active …' line from presence (#150)
One line under the handle in the user profile popover, from the presence the
SDK already receives (currently_active + last_active_ago): 'Active now',
'Active just now', 'Last active 12 min ago / 3 hours ago / yesterday / 5 days
ago / over a month ago'. Nothing is shown without presence data or for an
offline user with no timestamp (Hide Online Status users), so nothing new is
exposed; re-renders on the existing presence events, no polling. Wording
unit-tested; verified headless ('Active now' for an online member).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
2026-09-19 23:16:40 -04:00

54 lines
1.5 KiB
TypeScript

import { test } from 'node:test';
import assert from 'node:assert/strict';
import { describeLastActive } from './lastActive';
const now = 1_800_000_000_000;
test('wording buckets', () => {
assert.equal(describeLastActive(undefined), null);
assert.equal(describeLastActive({ presence: 'offline', active: false }), null);
assert.equal(describeLastActive({ presence: 'offline', active: false, lastActiveTs: 0 }), null);
assert.equal(
describeLastActive({ presence: 'online', active: true, lastActiveTs: now }, now),
'Active now',
);
assert.equal(
describeLastActive({ presence: 'online', active: false, lastActiveTs: now - 20_000 }, now),
'Active just now',
);
assert.equal(
describeLastActive(
{ presence: 'unavailable', active: false, lastActiveTs: now - 12 * 60_000 },
now,
),
'Last active 12 min ago',
);
assert.equal(
describeLastActive(
{ presence: 'offline', active: false, lastActiveTs: now - 3 * 3_600_000 },
now,
),
'Last active 3 hours ago',
);
assert.equal(
describeLastActive(
{ presence: 'offline', active: false, lastActiveTs: now - 26 * 3_600_000 },
now,
),
'Last active yesterday',
);
assert.equal(
describeLastActive(
{ presence: 'offline', active: false, lastActiveTs: now - 5 * 86_400_000 },
now,
),
'Last active 5 days ago',
);
assert.equal(
describeLastActive(
{ presence: 'offline', active: false, lastActiveTs: now - 40 * 86_400_000 },
now,
),
'Last active over a month ago',
);
});