Skip to content

Commit 374b318

Browse files
committed
feat: add validation functions
1 parent 16aad3c commit 374b318

26 files changed

Lines changed: 2913 additions & 246 deletions

File tree

Cargo.lock

Lines changed: 1893 additions & 216 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ chrono = { version = "0.4.41" }
1818
dotenv = { version = "0.15" }
1919
futures = { version = "0.3" }
2020
reqwest = { version = "^0.12.5" }
21-
serde = { version = "1.0", features = ["derive"] }
21+
serde = { version = "=1.0.221", features = ["derive"] }
2222
serde_json = { version = "1" }
2323
thiserror = { version = "2.0.12" }
2424
tokio = { version = "1", features = ["full"] }

airborne-core-cli/bin.js

100644100755
File mode changed.

airborne-react-native/AirborneReact.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Pod::Spec.new do |s|
2626
s.license = package["license"]
2727
s.authors = package["author"]
2828

29-
s.platforms = { :ios => "12.0"}
29+
s.platforms = { :ios => "13.0"}
3030
s.source = { :git => "https://github.com/juspay/airborne.git", :tag => "#{s.version}" }
3131

3232
s.source_files = "ios/**/*.{h,m,mm,cpp}"

airborne_dashboard/app/dashboard/[orgId]/[appId]/packages/create/page.tsx

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { Input } from "@/components/ui/input";
88
import { Label } from "@/components/ui/label";
99
import { Badge } from "@/components/ui/badge";
1010
import { Alert, AlertDescription } from "@/components/ui/alert";
11+
import { Textarea } from "@/components/ui/textarea";
1112
import { ArrowLeft, FileText, Rocket, ChevronRight, Check, File, Package2, Crown, Info } from "lucide-react";
1213
import Link from "next/link";
1314
import { apiFetch } from "@/lib/api";
@@ -49,6 +50,7 @@ export default function CreatePackagePage() {
4950

5051
const [selectedPackageFiles, setSelectedPackageFiles] = useState<SelectedFile[]>([]);
5152

53+
const [metadata, setMetadata] = useState("{}");
5254
const [isSubmitting, setIsSubmitting] = useState(false);
5355
const router = useRouter();
5456

@@ -126,6 +128,18 @@ export default function CreatePackagePage() {
126128
? `${selectedIndexFile.file_path}@version:${selectedIndexFile.version}`
127129
: undefined;
128130

131+
const trimmedMetadata = metadata.trim();
132+
let parsedMetadata: unknown | undefined;
133+
if (trimmedMetadata) {
134+
try {
135+
parsedMetadata = JSON.parse(trimmedMetadata);
136+
} catch {
137+
toastWarning("Invalid Metadata", "Metadata must be valid JSON");
138+
setIsSubmitting(false);
139+
return;
140+
}
141+
}
142+
129143
await apiFetch(
130144
`/package-groups/${selectedGroup.id}/packages`,
131145
{
@@ -134,6 +148,7 @@ export default function CreatePackagePage() {
134148
...(indexPath ? { index: indexPath } : {}),
135149
tag: tag || undefined,
136150
files: filteredFileIds,
151+
...(parsedMetadata ? { metadata: parsedMetadata } : {}),
137152
},
138153
},
139154
{ token, org, app: appId }
@@ -226,6 +241,17 @@ export default function CreatePackagePage() {
226241
onChange={(e) => setTag(e.target.value)}
227242
/>
228243
</div>
244+
<div className="space-y-2">
245+
<Label htmlFor="metadata">Metadata (JSON)</Label>
246+
<Textarea
247+
id="metadata"
248+
placeholder='e.g., {"key": "value"}'
249+
value={metadata}
250+
onChange={(e) => setMetadata(e.target.value)}
251+
rows={3}
252+
className="font-mono text-sm"
253+
/>
254+
</div>
229255
</CardContent>
230256
</Card>
231257

@@ -281,6 +307,17 @@ export default function CreatePackagePage() {
281307
onChange={(e) => setTag(e.target.value)}
282308
/>
283309
</div>
310+
<div className="space-y-2">
311+
<Label htmlFor="metadata">Metadata (JSON)</Label>
312+
<Textarea
313+
id="metadata"
314+
placeholder='e.g., {"key": "value"}'
315+
value={metadata}
316+
onChange={(e) => setMetadata(e.target.value)}
317+
rows={3}
318+
className="font-mono text-sm"
319+
/>
320+
</div>
284321
<Alert>
285322
<Info className="h-4 w-4" />
286323
<AlertDescription>

0 commit comments

Comments
 (0)