From e6160990febd979b021358acaeb26a3ed2df818b Mon Sep 17 00:00:00 2001 From: otsmr Date: Thu, 12 Feb 2026 21:54:53 +0100 Subject: [PATCH] fix: null pointer --- .../services/api/client2client/contact.c2c.dart | 14 ++++++++------ lib/src/services/api/client2client/media.c2c.dart | 15 ++++++++++++--- .../services/api/mediafiles/download.service.dart | 4 +--- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/lib/src/services/api/client2client/contact.c2c.dart b/lib/src/services/api/client2client/contact.c2c.dart index 64d4450..83233a1 100644 --- a/lib/src/services/api/client2client/contact.c2c.dart +++ b/lib/src/services/api/client2client/contact.c2c.dart @@ -71,12 +71,14 @@ Future handleContactRequest( final contact = await twonlyDB.contactsDao .getContactByUserId(fromUserId) .getSingleOrNull(); - await twonlyDB.groupsDao.createNewDirectChat( - fromUserId, - GroupsCompanion( - groupName: Value(getContactDisplayName(contact!)), - ), - ); + if (contact != null) { + await twonlyDB.groupsDao.createNewDirectChat( + fromUserId, + GroupsCompanion( + groupName: Value(getContactDisplayName(contact)), + ), + ); + } case EncryptedContent_ContactRequest_Type.REJECT: Log.info('Got a contact reject from $fromUserId'); await twonlyDB.contactsDao.updateContact( diff --git a/lib/src/services/api/client2client/media.c2c.dart b/lib/src/services/api/client2client/media.c2c.dart index 6795acd..b99799e 100644 --- a/lib/src/services/api/client2client/media.c2c.dart +++ b/lib/src/services/api/client2client/media.c2c.dart @@ -139,12 +139,21 @@ Future handleMediaUpdate( .getMessageById(mediaUpdate.targetMessageId) .getSingleOrNull(); if (message == null) { - Log.error( - 'Got media update to message ${mediaUpdate.targetMessageId} but message not found.', + // this can happen, in case the message was already deleted. + Log.info( + 'Got media update to message ${mediaUpdate.targetMessageId} but message not found.', ); + return; + } + if (message.mediaId == null) { + // this can happen, in case the message was already deleted. + Log.warn( + 'Got media update for message ${mediaUpdate.targetMessageId} which does not have a mediaId defined.', + ); + return; } final mediaFile = - await twonlyDB.mediaFilesDao.getMediaFileById(message!.mediaId!); + await twonlyDB.mediaFilesDao.getMediaFileById(message.mediaId!); if (mediaFile == null) { Log.info( 'Got media file update, but media file was not found ${message.mediaId}', diff --git a/lib/src/services/api/mediafiles/download.service.dart b/lib/src/services/api/mediafiles/download.service.dart index a2a7802..724da2c 100644 --- a/lib/src/services/api/mediafiles/download.service.dart +++ b/lib/src/services/api/mediafiles/download.service.dart @@ -231,9 +231,7 @@ Future downloadFileFast( await handleEncryptedFile(media.mediaId); return; } else { - if (response.statusCode == 404 || - response.statusCode == 403 || - response.statusCode == 400) { + if (response.statusCode == 404 || response.statusCode == 403) { Log.error( 'Got ${response.statusCode} from server. Requesting upload again', );