Add unique parameter to ConfigData.push().

This commit is contained in:
Joseph Cloutier
2023-12-21 17:18:54 -05:00
parent 15e6dc5050
commit 8d3d123266
2 changed files with 12 additions and 20 deletions

View File

@@ -373,7 +373,7 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic
} }
} }
public function push(id:String, value:Dynamic):Void public function push(id:String, value:Dynamic, ?unique:Bool = false):Void
{ {
var tree = id.split("."); var tree = id.split(".");
var current = this; var current = this;
@@ -399,13 +399,18 @@ abstract ConfigData(Dynamic) to Dynamic from Dynamic
if (Reflect.hasField(current, field)) if (Reflect.hasField(current, field))
{ {
if (!Reflect.hasField(current, field + ARRAY)) var array:Array<Dynamic> = Reflect.field(current, field + ARRAY);
if (array == null)
{ {
Reflect.setField(current, field + ARRAY, Reflect.hasField(current, field) ? [ObjectTools.deepCopy(Reflect.field(current, field))] : []); array = [ObjectTools.deepCopy(Reflect.field(current, field))];
Reflect.setField(current, field + ARRAY, array);
} }
var array:Array<Dynamic> = Reflect.field(current, field + ARRAY); if (array.indexOf(value) == -1)
array.push(value); {
array.push(value);
}
} }
Reflect.setField(current, field, value); Reflect.setField(current, field, value);

View File

@@ -1797,21 +1797,8 @@ class ProjectXMLParser extends HXProject
case "install-location": case "install-location":
config.set("android.install-location", value); config.set("android.install-location", value);
case "extension": case "extension", "permission":
var extensions = config.getArrayString("android.extension"); config.push("android." + name, value, true);
if (extensions == null || extensions.indexOf(value) == -1)
{
config.push("android.extension", value);
}
case "permission":
var permissions = config.getArrayString("android.permission");
if (permissions == null || permissions.indexOf(value) == -1)
{
config.push("android.permission", value);
}
case "gradle-version": case "gradle-version":
config.set("android.gradle-version", value); config.set("android.gradle-version", value);