feat: add button setting type for extension actions

- Add SettingTypeButton for action buttons in extension settings
- Add Action field to ExtensionSetting for JS function name
- Update extension detail page UI to render button settings
- Add InvokeAction method to execute button actions
This commit is contained in:
zarzet
2026-01-19 02:14:52 +07:00
parent 5f39a3d52f
commit 595bfb2711
4 changed files with 201 additions and 21 deletions
+4 -1
View File
@@ -355,11 +355,12 @@ class QualitySpecificSetting {
class ExtensionSetting {
final String key;
final String label;
final String type; // 'string', 'number', 'boolean', 'select'
final String type; // 'string', 'number', 'boolean', 'select', 'button'
final dynamic defaultValue;
final String? description;
final List<String>? options; // For select type
final bool required;
final String? action; // For button type: JS function name to call
const ExtensionSetting({
required this.key,
@@ -369,6 +370,7 @@ class ExtensionSetting {
this.description,
this.options,
this.required = false,
this.action,
});
factory ExtensionSetting.fromJson(Map<String, dynamic> json) {
@@ -380,6 +382,7 @@ class ExtensionSetting {
description: json['description'] as String?,
options: (json['options'] as List<dynamic>?)?.cast<String>(),
required: json['required'] as bool? ?? false,
action: json['action'] as String?,
);
}
}