refactor(embed): remove array support in favor of rest params (#7498)

This commit is contained in:
Almeida
2022-02-20 12:38:13 +00:00
committed by GitHub
parent ffecf08495
commit b3fa2ece40
3 changed files with 5 additions and 36 deletions

View File

@@ -311,10 +311,10 @@ describe('Embed', () => {
describe('Embed Fields', () => { describe('Embed Fields', () => {
test('GIVEN an embed with a pre-defined field THEN returns valid toJSON data', () => { test('GIVEN an embed with a pre-defined field THEN returns valid toJSON data', () => {
const embed = new Embed({ const embed = new Embed({
fields: [{ name: 'foo', value: 'bar', inline: undefined }], fields: [{ name: 'foo', value: 'bar' }],
}); });
expect(embed.toJSON()).toStrictEqual({ expect(embed.toJSON()).toStrictEqual({
fields: [{ name: 'foo', value: 'bar', inline: undefined }], fields: [{ name: 'foo', value: 'bar' }],
}); });
}); });
@@ -323,7 +323,7 @@ describe('Embed', () => {
embed.addField({ name: 'foo', value: 'bar' }); embed.addField({ name: 'foo', value: 'bar' });
expect(embed.toJSON()).toStrictEqual({ expect(embed.toJSON()).toStrictEqual({
fields: [{ name: 'foo', value: 'bar', inline: undefined }], fields: [{ name: 'foo', value: 'bar' }],
}); });
}); });
@@ -332,7 +332,7 @@ describe('Embed', () => {
embed.addFields({ name: 'foo', value: 'bar' }); embed.addFields({ name: 'foo', value: 'bar' });
expect(embed.toJSON()).toStrictEqual({ expect(embed.toJSON()).toStrictEqual({
fields: [{ name: 'foo', value: 'bar', inline: undefined }], fields: [{ name: 'foo', value: 'bar' }],
}); });
}); });
@@ -341,7 +341,7 @@ describe('Embed', () => {
embed.addFields({ name: 'foo', value: 'bar' }, { name: 'foo', value: 'baz' }); embed.addFields({ name: 'foo', value: 'bar' }, { name: 'foo', value: 'baz' });
expect(embed.spliceFields(0, 1).toJSON()).toStrictEqual({ expect(embed.spliceFields(0, 1).toJSON()).toStrictEqual({
fields: [{ name: 'foo', value: 'baz', inline: undefined }], fields: [{ name: 'foo', value: 'baz' }],
}); });
}); });

View File

@@ -4,9 +4,6 @@ import {
colorPredicate, colorPredicate,
descriptionPredicate, descriptionPredicate,
embedFieldsArrayPredicate, embedFieldsArrayPredicate,
fieldInlinePredicate,
fieldNamePredicate,
fieldValuePredicate,
footerTextPredicate, footerTextPredicate,
timestampPredicate, timestampPredicate,
titlePredicate, titlePredicate,
@@ -94,19 +91,4 @@ export class Embed extends UnsafeEmbed {
// Data assertions // Data assertions
return super.setURL(urlPredicate.parse(url)!); return super.setURL(urlPredicate.parse(url)!);
} }
/**
* Normalizes field input and resolves strings
*
* @param fields Fields to normalize
*/
public static override normalizeFields(...fields: APIEmbedField[]): APIEmbedField[] {
return fields.flat(Infinity).map((field) => {
fieldNamePredicate.parse(field.name);
fieldValuePredicate.parse(field.value);
fieldInlinePredicate.parse(field.inline);
return { name: field.name, value: field.value, inline: field.inline ?? undefined };
});
}
} }

View File

@@ -190,7 +190,6 @@ export class UnsafeEmbed implements Equatable<APIEmbed | UnsafeEmbed> {
* @param fields The fields to add * @param fields The fields to add
*/ */
public addFields(...fields: APIEmbedField[]): this { public addFields(...fields: APIEmbedField[]): this {
fields = UnsafeEmbed.normalizeFields(...fields);
if (this.data.fields) this.data.fields.push(...fields); if (this.data.fields) this.data.fields.push(...fields);
else this.data.fields = fields; else this.data.fields = fields;
return this; return this;
@@ -204,7 +203,6 @@ export class UnsafeEmbed implements Equatable<APIEmbed | UnsafeEmbed> {
* @param fields The replacing field objects * @param fields The replacing field objects
*/ */
public spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this { public spliceFields(index: number, deleteCount: number, ...fields: APIEmbedField[]): this {
fields = UnsafeEmbed.normalizeFields(...fields);
if (this.data.fields) this.data.fields.splice(index, deleteCount, ...fields); if (this.data.fields) this.data.fields.splice(index, deleteCount, ...fields);
else this.data.fields = fields; else this.data.fields = fields;
return this; return this;
@@ -337,15 +335,4 @@ export class UnsafeEmbed implements Equatable<APIEmbed | UnsafeEmbed> {
const { image, thumbnail, ...otherData } = data; const { image, thumbnail, ...otherData } = data;
return isEqual(otherData, thisData) && image?.url === thisImage?.url && thumbnail?.url === thisThumbnail?.url; return isEqual(otherData, thisData) && image?.url === thisImage?.url && thumbnail?.url === thisThumbnail?.url;
} }
/**
* Normalizes field input and resolves strings
*
* @param fields Fields to normalize
*/
public static normalizeFields(...fields: APIEmbedField[]): APIEmbedField[] {
return fields
.flat(Infinity)
.map((field) => ({ name: field.name, value: field.value, inline: field.inline ?? undefined }));
}
} }