feat: Allow user-agent based conditions (#1821)

* Closes #1819
This commit is contained in:
Dermot Duffy
2025-01-10 07:41:19 -08:00
committed by GitHub
parent 7657bdf22c
commit 2678500670
14 changed files with 232 additions and 11 deletions
+20
View File
@@ -726,6 +726,25 @@ const keyConditionSchema = z.object({
alt: z.boolean().optional(),
meta: z.boolean().optional(),
});
const userAgentConditionSchema = z.object({
condition: z.literal('user_agent'),
user_agent: z.string().optional(),
user_agent_re: z
.string()
.refine(
(val) => {
try {
new RegExp(val);
} catch {
return false;
}
return true;
},
{ message: 'Invalid regular expression' },
)
.optional(),
companion: z.boolean().optional(),
});
export const frigateCardConditionSchema = z.discriminatedUnion('condition', [
// Stock conditions:
@@ -745,6 +764,7 @@ export const frigateCardConditionSchema = z.discriminatedUnion('condition', [
interactionConditionSchema,
microphoneConditionSchema,
keyConditionSchema,
userAgentConditionSchema,
]);
export type FrigateCardCondition = z.infer<typeof frigateCardConditionSchema>;