mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-02-15 07:28:59 +00:00
26 lines
629 B
TypeScript
26 lines
629 B
TypeScript
// Copyright 2026 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import { count, truncateAndSize } from './grapheme.std.js';
|
|
import { isBodyTooLong, trimBody } from './longAttachment.std.js';
|
|
|
|
export function truncateString(
|
|
target: string,
|
|
{
|
|
byteLimit,
|
|
graphemeLimit,
|
|
}: { byteLimit?: number; graphemeLimit?: number } = {}
|
|
): string {
|
|
let result = target;
|
|
|
|
if (byteLimit && isBodyTooLong(result, byteLimit)) {
|
|
result = trimBody(result, byteLimit);
|
|
}
|
|
|
|
if (graphemeLimit && count(result) > graphemeLimit) {
|
|
[result] = truncateAndSize(result, graphemeLimit);
|
|
}
|
|
|
|
return result;
|
|
}
|