Start on intervention display
This commit is contained in:
parent
46479d4c37
commit
27b27876c0
12 changed files with 268 additions and 99 deletions
|
|
@ -59,14 +59,22 @@ export type Proof = {
|
|||
ai?: { inferenceResult?: AIInferenceResult };
|
||||
};
|
||||
|
||||
export type ProofHintFlagsGenerator = "unknown" | "camera" | "screenshot" | "ai";
|
||||
export type ProofHintFlagsGeneratorSource = "c2pa" | "exif" | "metadata";
|
||||
export type ProofHintFlagsEditor = "unknown" | "manual" | "ai";
|
||||
|
||||
export type ProofHintFlagsEdit = {
|
||||
editor: ProofHintFlagsEditor;
|
||||
date?: Date;
|
||||
}
|
||||
|
||||
export type ProofHintFlags = {
|
||||
valid: boolean;
|
||||
source?: string;
|
||||
device?: string;
|
||||
creationDate?: Date;
|
||||
aiGenerated?: boolean;
|
||||
aiEdited?: boolean;
|
||||
screenshot?: boolean;
|
||||
camera?: boolean;
|
||||
generator?: ProofHintFlagsGenerator;
|
||||
generatorSource?: ProofHintFlagsGeneratorSource;
|
||||
edits?: ProofHintFlagsEdit[];
|
||||
};
|
||||
|
||||
type FlagMatchRule = {
|
||||
|
|
@ -86,7 +94,7 @@ type FlagMatchInfo = {
|
|||
re: string;
|
||||
};
|
||||
|
||||
const ruleScreenshot = (): FlagMatchRule[] => {
|
||||
const ruleScreenshotC2PA = (): FlagMatchRule[] => {
|
||||
return [
|
||||
{
|
||||
field:
|
||||
|
|
@ -97,6 +105,17 @@ const ruleScreenshot = (): FlagMatchRule[] => {
|
|||
];
|
||||
};
|
||||
|
||||
const ruleScreenshotMeta = (): FlagMatchRule[] => {
|
||||
return [
|
||||
{
|
||||
field:
|
||||
"name",
|
||||
match: ["screenshot"],
|
||||
description: "Screen capture",
|
||||
},
|
||||
];
|
||||
};
|
||||
|
||||
const ruleCamera = (): FlagMatchRule[] => {
|
||||
return [
|
||||
{
|
||||
|
|
@ -238,7 +257,7 @@ const extractFlagValues = (flagPath: string, file: any): FlagMatchRuleValue[] =>
|
|||
export const extractProofHintFlags = (proof?: Proof): ProofHintFlags | undefined => {
|
||||
if (!proof) return undefined;
|
||||
|
||||
let aiEdited = false;
|
||||
let edits: ProofHintFlagsEdit[] | undefined = undefined;
|
||||
let valid = false;
|
||||
|
||||
try {
|
||||
|
|
@ -264,14 +283,25 @@ export const extractProofHintFlags = (proof?: Proof): ProofHintFlags | undefined
|
|||
}
|
||||
console.log("DATE CREATED", date);
|
||||
|
||||
let generator: ProofHintFlagsGenerator = matchFlag(ruleAiGenerated(), proof).result ? "ai" : matchFlag(ruleScreenshotC2PA(), proof).result ? "screenshot" : matchFlag(ruleCamera(), proof).result ? "camera" : "unknown";
|
||||
let generatorSource: ProofHintFlagsGeneratorSource | undefined = undefined;
|
||||
|
||||
if (generator !== "unknown" && valid) {
|
||||
generatorSource = "c2pa";
|
||||
} else {
|
||||
if (matchFlag(ruleScreenshotMeta(), proof).result) {
|
||||
generator = "screenshot";
|
||||
generatorSource = "metadata";
|
||||
}
|
||||
}
|
||||
|
||||
const flags: ProofHintFlags = {
|
||||
valid: valid,
|
||||
source: source && source.length == 1 ? source[0].value : undefined,
|
||||
device: source && source.length == 1 ? source[0].value : undefined,
|
||||
creationDate: date,
|
||||
aiGenerated: matchFlag(ruleAiGenerated(), proof).result,
|
||||
aiEdited,
|
||||
screenshot: matchFlag(ruleScreenshot(), proof).result,
|
||||
camera: matchFlag(ruleCamera(), proof).result,
|
||||
generator: generator,
|
||||
generatorSource: generatorSource,
|
||||
edits: edits,
|
||||
};
|
||||
return flags;
|
||||
} catch (error) {}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue