diff options
author | Joe Donofry <rubberduckie3554@gmail.com> | 2021-11-03 02:42:19 +0000 |
---|---|---|
committer | Nicolas Werner <nicolas.werner@hotmail.de> | 2021-11-03 02:42:19 +0000 |
commit | e3002f79930276505152b9e989f69c9227211cb0 (patch) | |
tree | 3f354533bab13fc6077c0f70ddac443ec97be34f /src | |
parent | Merge branch 'macos_api_updates' into 'master' (diff) | |
download | nheko-e3002f79930276505152b9e989f69c9227211cb0.tar.xz |
Fix macOS m.image notif crash
Diffstat (limited to 'src')
-rw-r--r-- | src/notifications/ManagerMac.mm | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/src/notifications/ManagerMac.mm b/src/notifications/ManagerMac.mm index b5ef3bfe..8669432b 100644 --- a/src/notifications/ManagerMac.mm +++ b/src/notifications/ManagerMac.mm @@ -7,6 +7,33 @@ #include <QtMac> #include <QImage> +@interface UNNotificationAttachment (UNNotificationAttachmentAdditions) + + (UNNotificationAttachment *) createFromImageData:(NSData*)imgData identifier:(NSString *)imageFileIdentifier options:(NSDictionary*)attachmentOptions; +@end + +@implementation UNNotificationAttachment (UNNotificationAttachmentAdditions) + + (UNNotificationAttachment *) createFromImageData:(NSData*)imgData identifier:(NSString *)imageFileIdentifier options:(NSDictionary*)attachmentOptions { + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSString *tmpSubFolderName = [[NSProcessInfo processInfo] globallyUniqueString]; + NSURL *tmpSubFolderURL = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingPathComponent:tmpSubFolderName] isDirectory:true]; + NSError *error = nil; + [fileManager createDirectoryAtURL:tmpSubFolderURL withIntermediateDirectories:true attributes:nil error:&error]; + if(error) { + NSLog(@"%@",[error localizedDescription]); + return nil; + } + NSURL *fileURL = [tmpSubFolderURL URLByAppendingPathComponent:imageFileIdentifier]; + [imgData writeToURL:fileURL atomically:true]; + UNNotificationAttachment *imageAttachment = [UNNotificationAttachment attachmentWithIdentifier:@"" URL:fileURL options:attachmentOptions error:&error]; + if(error) { + NSLog(@"%@",[error localizedDescription]); + return nil; + } + return imageAttachment; + + } +@end + NotificationsManager::NotificationsManager(QObject *parent): QObject(parent) { @@ -42,14 +69,14 @@ NotificationsManager::objCxxPostNotification(const QString &room_name, content.threadIdentifier = room_id.toNSString(); if (!bodyImagePath.isEmpty()) { - NSError * _Nullable error; - NSURL *imageURL = [NSURL URLWithString:bodyImagePath.toNSString()]; - NSArray* attachments = [NSMutableArray array]; - UNNotificationAttachment *attachment = [UNNotificationAttachment attachmentWithIdentifier:@"" URL:imageURL options:nil error:&error]; - if (error) { - NSLog(@"%@",[error localizedDescription]); + NSURL *imageURL = [NSURL fileURLWithPath:bodyImagePath.toNSString()]; + NSData *img = [NSData dataWithContentsOfURL:imageURL]; + NSArray *attachments = [NSMutableArray array]; + UNNotificationAttachment *attachment = [UNNotificationAttachment createFromImageData:img identifier:@"attachment_image.jpeg" options:nil]; + if (attachment) { + attachments = [NSMutableArray arrayWithObjects: attachment, nil]; + content.attachments = attachments; } - content.attachments = [attachments arrayByAddingObject:attachment]; } UNNotificationRequest *notificationRequest = [UNNotificationRequest requestWithIdentifier:event_id.toNSString() content:content trigger:nil]; |