fix(Text#fromAttributed): Fix StyleRun assuming that the startIndex and length always exist (#862)

In AttributedText, styleRuns may not always include the `startIndex` or `length` properties
- If `startIndex` is missing, we assume the style applies from the beginning of the text
- If `length` is missing, we assume the style applies to the entire text
This commit is contained in:
jonz94
2025-01-12 04:27:16 +08:00
committed by GitHub
parent 0a3104bafc
commit 732a30c09f

View File

@@ -54,7 +54,6 @@ export default class Text {
static fromAttributed(data: AttributedText) {
const {
content,
styleRuns: style_runs,
commandRuns: command_runs,
attachmentRuns: attachment_runs
} = data;
@@ -66,6 +65,16 @@ export default class Text {
}
];
// In AttributedText, styleRuns may not always include the `startIndex` or `length` properties
// - If `startIndex` is missing, we assume the style applies from the beginning of the text
// - If `length` is missing, we assume the style applies to the entire text
// The following code ensures default values are provided for these properties
const style_runs = data.styleRuns?.map((run) => ({
...run,
startIndex: run.startIndex ?? 0,
length: run.length ?? content.length
}) as StyleRun & ResponseRun);
if (style_runs || command_runs || attachment_runs) {
if (style_runs) {
for (const style_run of style_runs) {
@@ -271,7 +280,7 @@ interface ResponseRun {
length: number;
}
interface StyleRun extends ResponseRun {
interface StyleRun extends Partial<ResponseRun> {
italic?: boolean;
weightLabel?: string;
strikethrough?: string;