Send proof hint flags for media messages

This commit is contained in:
N-Pex 2025-08-25 14:47:12 +02:00
parent f1b9de48d1
commit a667f28984
3 changed files with 16 additions and 4 deletions

View file

@ -627,7 +627,8 @@ export const createUploadBatch = (manager: AttachmentManager | null, room: Room
}, },
eventId, eventId,
attachment.dimensions, attachment.dimensions,
attachment.thumbnail attachment.thumbnail,
attachment.proofHintFlags
) )
.then((mediaEventId: string) => { .then((mediaEventId: string) => {
// Look at last item rotation, flipping the sign on this, so looks more like a true stack // Look at last item rotation, flipping the sign on this, so looks more like a true stack

View file

@ -67,6 +67,8 @@ export type ProofHintFlags = {
export const extractProofHintFlags = (proof?: Proof): (ProofHintFlags | undefined) => { export const extractProofHintFlags = (proof?: Proof): (ProofHintFlags | undefined) => {
if (!proof) return undefined; if (!proof) return undefined;
let foundCreated = false;
let screenshot = false; let screenshot = false;
let camera = false; let camera = false;
let aiGenerated = false; let aiGenerated = false;
@ -104,10 +106,14 @@ export const extractProofHintFlags = (proof?: Proof): (ProofHintFlags | undefine
) { ) {
aiGenerated = true; aiGenerated = true;
} }
return; foundCreated = true;
break;
} }
} }
} }
if (foundCreated) {
break;
}
} }
if (valid) { if (valid) {
const flags: ProofHintFlags = { const flags: ProofHintFlags = {

View file

@ -23,6 +23,7 @@ export const ROOM_TYPE_FILE_MODE = "im.keanu.room_type_file";
export const ROOM_TYPE_CHANNEL = "im.keanu.room_type_channel"; export const ROOM_TYPE_CHANNEL = "im.keanu.room_type_channel";
export const STATE_EVENT_ROOM_TYPE = "im.keanu.room_type"; export const STATE_EVENT_ROOM_TYPE = "im.keanu.room_type";
export const CLIENT_EVENT_PROOF_HINT = "im.keanu.proof_hint";
export const THUMBNAIL_MAX_WIDTH = 640; export const THUMBNAIL_MAX_WIDTH = 640;
export const THUMBNAIL_MAX_HEIGHT = 640; export const THUMBNAIL_MAX_HEIGHT = 640;
@ -410,7 +411,7 @@ class Util {
return [encryptedBytes, encryptedFile]; return [encryptedBytes, encryptedFile];
} }
sendFile(matrixClient, roomId, file, onUploadProgress, threadRoot, dimensions, thumbnail) { sendFile(matrixClient, roomId, file, onUploadProgress, threadRoot, dimensions, thumbnail, proofHintFlags) {
const uploadPromise = new UploadPromise(undefined); const uploadPromise = new UploadPromise(undefined);
uploadPromise.wrappedPromise = new Promise((resolve, reject) => { uploadPromise.wrappedPromise = new Promise((resolve, reject) => {
var reader = new FileReader(); var reader = new FileReader();
@ -485,12 +486,16 @@ class Util {
msgtype = "m.video"; msgtype = "m.video";
} }
var messageContent = { let messageContent = {
body: description, body: description,
info: info, info: info,
msgtype: msgtype, msgtype: msgtype,
}; };
if (proofHintFlags) {
messageContent[CLIENT_EVENT_PROOF_HINT] = JSON.stringify(proofHintFlags);
}
// If thread root (an eventId) is set, add that here // If thread root (an eventId) is set, add that here
if (threadRoot) { if (threadRoot) {
messageContent["m.relates_to"] = { messageContent["m.relates_to"] = {