Message Requests: Add new "Report spam and block" button
This commit is contained in:
parent
20e501d9f1
commit
d4dc9b8e39
33 changed files with 630 additions and 92 deletions
|
@ -225,6 +225,7 @@ const dataInterface: ServerInterface = {
|
|||
getMessagesNeedingUpgrade,
|
||||
getMessagesWithVisualMediaAttachments,
|
||||
getMessagesWithFileAttachments,
|
||||
getMessageServerGuidsForSpam,
|
||||
|
||||
getJobsInQueue,
|
||||
insertJob,
|
||||
|
@ -1834,6 +1835,25 @@ function updateToSchemaVersion31(currentVersion: number, db: Database): void {
|
|||
console.log('updateToSchemaVersion31: success!');
|
||||
}
|
||||
|
||||
function updateToSchemaVersion32(currentVersion: number, db: Database) {
|
||||
if (currentVersion >= 32) {
|
||||
return;
|
||||
}
|
||||
|
||||
db.transaction(() => {
|
||||
db.exec(`
|
||||
ALTER TABLE messages
|
||||
ADD COLUMN serverGuid STRING NULL;
|
||||
|
||||
ALTER TABLE unprocessed
|
||||
ADD COLUMN serverGuid STRING NULL;
|
||||
`);
|
||||
|
||||
db.pragma('user_version = 32');
|
||||
})();
|
||||
console.log('updateToSchemaVersion32: success!');
|
||||
}
|
||||
|
||||
const SCHEMA_VERSIONS = [
|
||||
updateToSchemaVersion1,
|
||||
updateToSchemaVersion2,
|
||||
|
@ -1866,6 +1886,7 @@ const SCHEMA_VERSIONS = [
|
|||
updateToSchemaVersion29,
|
||||
updateToSchemaVersion30,
|
||||
updateToSchemaVersion31,
|
||||
updateToSchemaVersion32,
|
||||
];
|
||||
|
||||
function updateSchema(db: Database): void {
|
||||
|
@ -2934,6 +2955,7 @@ function saveMessageSync(
|
|||
received_at,
|
||||
schemaVersion,
|
||||
sent_at,
|
||||
serverGuid,
|
||||
source,
|
||||
sourceUuid,
|
||||
sourceDevice,
|
||||
|
@ -2959,6 +2981,7 @@ function saveMessageSync(
|
|||
isViewOnce: isViewOnce ? 1 : 0,
|
||||
received_at: received_at || null,
|
||||
schemaVersion,
|
||||
serverGuid: serverGuid || null,
|
||||
sent_at: sent_at || null,
|
||||
source: source || null,
|
||||
sourceUuid: sourceUuid || null,
|
||||
|
@ -2987,6 +3010,7 @@ function saveMessageSync(
|
|||
isViewOnce = $isViewOnce,
|
||||
received_at = $received_at,
|
||||
schemaVersion = $schemaVersion,
|
||||
serverGuid = $serverGuid,
|
||||
sent_at = $sent_at,
|
||||
source = $source,
|
||||
sourceUuid = $sourceUuid,
|
||||
|
@ -3024,6 +3048,7 @@ function saveMessageSync(
|
|||
isViewOnce,
|
||||
received_at,
|
||||
schemaVersion,
|
||||
serverGuid,
|
||||
sent_at,
|
||||
source,
|
||||
sourceUuid,
|
||||
|
@ -3046,6 +3071,7 @@ function saveMessageSync(
|
|||
$isViewOnce,
|
||||
$received_at,
|
||||
$schemaVersion,
|
||||
$serverGuid,
|
||||
$sent_at,
|
||||
$source,
|
||||
$sourceUuid,
|
||||
|
@ -4012,6 +4038,7 @@ function saveUnprocessedSync(data: UnprocessedType): string {
|
|||
source,
|
||||
sourceUuid,
|
||||
sourceDevice,
|
||||
serverGuid,
|
||||
serverTimestamp,
|
||||
decrypted,
|
||||
} = data;
|
||||
|
@ -4031,6 +4058,7 @@ function saveUnprocessedSync(data: UnprocessedType): string {
|
|||
source,
|
||||
sourceUuid,
|
||||
sourceDevice,
|
||||
serverGuid,
|
||||
serverTimestamp,
|
||||
decrypted
|
||||
) values (
|
||||
|
@ -4042,6 +4070,7 @@ function saveUnprocessedSync(data: UnprocessedType): string {
|
|||
$source,
|
||||
$sourceUuid,
|
||||
$sourceDevice,
|
||||
$serverGuid,
|
||||
$serverTimestamp,
|
||||
$decrypted
|
||||
);
|
||||
|
@ -4055,6 +4084,7 @@ function saveUnprocessedSync(data: UnprocessedType): string {
|
|||
source: source || null,
|
||||
sourceUuid: sourceUuid || null,
|
||||
sourceDevice: sourceDevice || null,
|
||||
serverGuid: serverGuid || null,
|
||||
serverTimestamp: serverTimestamp || null,
|
||||
decrypted: decrypted || null,
|
||||
});
|
||||
|
@ -4084,7 +4114,14 @@ function updateUnprocessedWithDataSync(
|
|||
data: UnprocessedUpdateType
|
||||
): void {
|
||||
const db = getInstance();
|
||||
const { source, sourceUuid, sourceDevice, serverTimestamp, decrypted } = data;
|
||||
const {
|
||||
source,
|
||||
sourceUuid,
|
||||
sourceDevice,
|
||||
serverGuid,
|
||||
serverTimestamp,
|
||||
decrypted,
|
||||
} = data;
|
||||
|
||||
prepare(
|
||||
db,
|
||||
|
@ -4093,6 +4130,7 @@ function updateUnprocessedWithDataSync(
|
|||
source = $source,
|
||||
sourceUuid = $sourceUuid,
|
||||
sourceDevice = $sourceDevice,
|
||||
serverGuid = $serverGuid,
|
||||
serverTimestamp = $serverTimestamp,
|
||||
decrypted = $decrypted
|
||||
WHERE id = $id;
|
||||
|
@ -4102,6 +4140,7 @@ function updateUnprocessedWithDataSync(
|
|||
source: source || null,
|
||||
sourceUuid: sourceUuid || null,
|
||||
sourceDevice: sourceDevice || null,
|
||||
serverGuid: serverGuid || null,
|
||||
serverTimestamp: serverTimestamp || null,
|
||||
decrypted: decrypted || null,
|
||||
});
|
||||
|
@ -4910,6 +4949,29 @@ async function getMessagesWithFileAttachments(
|
|||
return map(rows, row => jsonToObject(row.json));
|
||||
}
|
||||
|
||||
async function getMessageServerGuidsForSpam(
|
||||
conversationId: string
|
||||
): Promise<Array<string>> {
|
||||
const db = getInstance();
|
||||
|
||||
// The server's maximum is 3, which is why you see `LIMIT 3` in this query. Note that we
|
||||
// use `pluck` here to only get the first column!
|
||||
return db
|
||||
.prepare<Query>(
|
||||
`
|
||||
SELECT serverGuid
|
||||
FROM messages
|
||||
WHERE conversationId = $conversationId
|
||||
AND type = 'incoming'
|
||||
AND serverGuid IS NOT NULL
|
||||
ORDER BY received_at DESC, sent_at DESC
|
||||
LIMIT 3;
|
||||
`
|
||||
)
|
||||
.pluck(true)
|
||||
.all({ conversationId });
|
||||
}
|
||||
|
||||
function getExternalFilesForMessage(message: MessageType): Array<string> {
|
||||
const { attachments, contact, quote, preview, sticker } = message;
|
||||
const files: Array<string> = [];
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue