Skip to content

Commit 49d1106

Browse files
committed
refactor modal building to run typeConverter writes even without modal instance
1 parent d6401d6 commit 49d1106

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

src/Discord.Net.Interactions/Extensions/IDiscordInteractionExtensions.cs

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,8 @@ public static async Task<Modal> ToModalAsync<T>(this IDiscordInteraction interac
8484
var inputBuilder = new TextInputBuilder(textComponent.CustomId, textComponent.Style, textComponent.Placeholder, textComponent.IsRequired ? textComponent.MinLength : null,
8585
textComponent.MaxLength, textComponent.IsRequired);
8686

87-
if (modalInstance != null)
88-
{
89-
await textComponent.TypeConverter.WriteAsync(inputBuilder, interaction, textComponent, textComponent.Getter(modalInstance));
90-
}
87+
var instanceValue = modalInstance is not null ? textComponent.Getter(modalInstance) : null;
88+
await textComponent.TypeConverter.WriteAsync(inputBuilder, interaction, textComponent, instanceValue);
9189

9290
var labelBuilder = new LabelBuilder(textComponent.Label, inputBuilder, textComponent.Description);
9391
builder.AddLabel(labelBuilder);
@@ -97,10 +95,8 @@ public static async Task<Modal> ToModalAsync<T>(this IDiscordInteraction interac
9795
{
9896
var inputBuilder = new SelectMenuBuilder(selectMenuComponent.CustomId, selectMenuComponent.Options.Select(x => new SelectMenuOptionBuilder(x)).ToList(), selectMenuComponent.Placeholder, selectMenuComponent.MaxValues, selectMenuComponent.MinValues, false, isRequired: selectMenuComponent.IsRequired);
9997

100-
if (modalInstance != null)
101-
{
102-
await selectMenuComponent.TypeConverter.WriteAsync(inputBuilder, interaction, selectMenuComponent, selectMenuComponent.Getter(modalInstance));
103-
}
98+
var instanceValue = modalInstance is not null ? selectMenuComponent.Getter(modalInstance) : null;
99+
await selectMenuComponent.TypeConverter.WriteAsync(inputBuilder, interaction, selectMenuComponent, instanceValue);
104100

105101
var labelBuilder = new LabelBuilder(selectMenuComponent.Label, inputBuilder, selectMenuComponent.Description);
106102
builder.AddLabel(labelBuilder);
@@ -111,10 +107,8 @@ public static async Task<Modal> ToModalAsync<T>(this IDiscordInteraction interac
111107
var channelTypes = snowflakeSelectComponent is ChannelSelectComponentInfo channelSelectComponent ? channelSelectComponent.ChannelTypes : null;
112108
var inputBuilder = new SelectMenuBuilder(snowflakeSelectComponent.CustomId, null, snowflakeSelectComponent.Placeholder, snowflakeSelectComponent.MaxValues, snowflakeSelectComponent.MinValues, false, snowflakeSelectComponent.ComponentType, [..channelTypes], snowflakeSelectComponent.DefaultValues.ToList(), null, snowflakeSelectComponent.IsRequired);
113109

114-
if (modalInstance != null)
115-
{
116-
await snowflakeSelectComponent.TypeConverter.WriteAsync(inputBuilder, interaction, snowflakeSelectComponent, snowflakeSelectComponent.Getter(modalInstance));
117-
}
110+
var instanceValue = modalInstance is not null ? snowflakeSelectComponent.Getter(modalInstance) : null;
111+
await snowflakeSelectComponent.TypeConverter.WriteAsync(inputBuilder, interaction, snowflakeSelectComponent, instanceValue);
118112

119113
var labelBuilder = new LabelBuilder(snowflakeSelectComponent.Label, inputBuilder, snowflakeSelectComponent.Description);
120114
builder.AddLabel(labelBuilder);
@@ -124,21 +118,20 @@ public static async Task<Modal> ToModalAsync<T>(this IDiscordInteraction interac
124118
{
125119
var inputBuilder = new FileUploadComponentBuilder(fileUploadComponent.CustomId, fileUploadComponent.MinValues, fileUploadComponent.MaxValues, fileUploadComponent.IsRequired);
126120

127-
if (modalInstance != null)
128-
{
129-
await fileUploadComponent.TypeConverter.WriteAsync(inputBuilder, interaction, fileUploadComponent, fileUploadComponent.Getter(modalInstance));
130-
}
121+
var instanceValue = modalInstance is not null ? fileUploadComponent.Getter(modalInstance) : null;
122+
await fileUploadComponent.TypeConverter.WriteAsync(inputBuilder, interaction, fileUploadComponent, instanceValue);
131123

132124
var labelBuilder = new LabelBuilder(fileUploadComponent.Label, inputBuilder, fileUploadComponent.Description);
133125
builder.AddLabel(labelBuilder);
134126
}
135127
break;
136128
case TextDisplayComponentInfo textDisplayComponent:
137-
{
138-
var instanceValue = modalInstance is not null ? textDisplayComponent.Getter(modalInstance).ToString() : null;
139-
var content = instanceValue ?? (textDisplayComponent.DefaultValue as string) ?? textDisplayComponent.Content;
140-
var componentBuilder = new TextDisplayBuilder(content);
141-
builder.AddTextDisplay(componentBuilder);
129+
{
130+
var instanceValue = modalInstance is not null ? textDisplayComponent.Getter(modalInstance).ToString() : null;
131+
var content = instanceValue ?? (textDisplayComponent.DefaultValue as string) ?? textDisplayComponent.Content;
132+
133+
var componentBuilder = new TextDisplayBuilder(content);
134+
builder.AddTextDisplay(componentBuilder);
142135
}
143136
break;
144137
default:

0 commit comments

Comments
 (0)