Show "unplayed" dot on incoming audio messages

This commit is contained in:
Evan Hahn 2021-08-12 13:15:55 -05:00 committed by GitHub
parent 9fd191ae00
commit b0750e5f4e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 812 additions and 175 deletions

View file

@ -0,0 +1,50 @@
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { assert } from 'chai';
import { ReadStatus, maxReadStatus } from '../../messages/MessageReadStatus';
describe('message read status utilities', () => {
describe('maxReadStatus', () => {
it('returns the status if passed the same status twice', () => {
assert.strictEqual(
maxReadStatus(ReadStatus.Unread, ReadStatus.Unread),
ReadStatus.Unread
);
});
it('sorts Unread < Read', () => {
assert.strictEqual(
maxReadStatus(ReadStatus.Unread, ReadStatus.Read),
ReadStatus.Read
);
assert.strictEqual(
maxReadStatus(ReadStatus.Read, ReadStatus.Unread),
ReadStatus.Read
);
});
it('sorts Read < Viewed', () => {
assert.strictEqual(
maxReadStatus(ReadStatus.Read, ReadStatus.Viewed),
ReadStatus.Viewed
);
assert.strictEqual(
maxReadStatus(ReadStatus.Viewed, ReadStatus.Read),
ReadStatus.Viewed
);
});
it('sorts Unread < Viewed', () => {
assert.strictEqual(
maxReadStatus(ReadStatus.Unread, ReadStatus.Viewed),
ReadStatus.Viewed
);
assert.strictEqual(
maxReadStatus(ReadStatus.Viewed, ReadStatus.Unread),
ReadStatus.Viewed
);
});
});
});

View file

@ -0,0 +1,55 @@
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
// We want to cast to `any` because we're passing an unexpected field.
/* eslint-disable @typescript-eslint/no-explicit-any */
import { assert } from 'chai';
import { ReadStatus } from '../../messages/MessageReadStatus';
import { migrateLegacyReadStatus } from '../../messages/migrateLegacyReadStatus';
describe('migrateLegacyReadStatus', () => {
it("doesn't migrate messages that already have the modern read state", () => {
assert.isUndefined(
migrateLegacyReadStatus({ readStatus: ReadStatus.Read })
);
assert.isUndefined(
migrateLegacyReadStatus({ readStatus: ReadStatus.Unread })
);
});
it('converts legacy read values to "read"', () => {
assert.strictEqual(migrateLegacyReadStatus({}), ReadStatus.Read);
assert.strictEqual(
migrateLegacyReadStatus({ unread: 0 } as any),
ReadStatus.Read
);
assert.strictEqual(
migrateLegacyReadStatus({ unread: false } as any),
ReadStatus.Read
);
});
it('converts legacy unread values to "unread"', () => {
assert.strictEqual(
migrateLegacyReadStatus({ unread: 1 } as any),
ReadStatus.Unread
);
assert.strictEqual(
migrateLegacyReadStatus({ unread: true } as any),
ReadStatus.Unread
);
});
it('converts unexpected truthy values to "unread"', () => {
assert.strictEqual(
migrateLegacyReadStatus({ unread: 99 } as any),
ReadStatus.Unread
);
assert.strictEqual(
migrateLegacyReadStatus({ unread: 'wow!' } as any),
ReadStatus.Unread
);
});
});