Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Threema/ThreemaFramework/Message/Sender/   (Social Medium ©)  Datei vom 26.9.2026 mit Größe 2 kB image not shown  

Quelle  GroupPhotoSender.m   Sprache: Unknown

 

Spracherkennung für: .m vermutete Sprache: Lisp {Lisp[36] Masm[36] ABAP[30]} [Methode: maximale Elemente, drei Dimensionen]

#import "ThreemaFramework/ThreemaFramework-Swift.h"
#import "GroupPhotoSender.h"
#import "NaClCrypto.h"
#import "MyIdentityStore.h"
#import "GroupSetPhotoMessage.h"
#import "NSString+Hex.h"
#import "ActivityIndicatorProxy.h"
#import "GroupSetPhotoMessage.h"
#import "ThreemaError.h"
#import "ServerConnector.h"
#import "UserSettings.h"

#ifdef DEBUG
  static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
#else
  static const DDLogLevel ddLogLevel = DDLogLevelWarning;
#endif

@implementation GroupPhotoSender {
    BOOL isNoteGroup;
    NSData *boxImageData;
    NSData *nonce;
    NSData *encryptionKey;
    NSMutableData *receivedData;
    void(^onCompletion)(NSData *blobId, NSData *encryptionKey);
    void(^onError)(NSError *error);
}

- (void)startWithImageData:(NSData *)imageData isNoteGroup:(BOOL)isNoteGrp onCompletion:(void (^)(NSData *blobId, NSData *encryptionKey))_onCompletion onError:(void (^)(NSError *))_onError {
    
    self->isNoteGroup = isNoteGrp;
    onCompletion = _onCompletion;
    onError = _onError;
    
    if (imageData != nil) { // New image
        /* Generate random symmetric key and encrypt */
        encryptionKey = [[NaClCrypto sharedCrypto] randomBytes:kBlobKeyLen];
        boxImageData = [[NaClCrypto sharedCrypto] symmetricEncryptData:imageData withKey:encryptionKey nonce:[NSData dataWithBytesNoCopy:kNonce_1 length:sizeof(kNonce_1) freeWhenDone:NO]];
        
        [self startUpload];
    } else { // Image was removed
        onCompletion(nil, nil);
    }
}

- (void)startUpload {
    [ActivityIndicatorProxy startActivity];
    
    BlobURL *blobUrl = [[BlobURL alloc] initWithServerConnector:[ServerConnector sharedServerConnector] userSettings:[UserSettings sharedUserSettings]];
    Old_BlobUploader *uploader = [[Old_BlobUploader alloc] initWithBlobURL:blobUrl delegate:self];
    
    [uploader uploadWithBlobs:@[boxImageData] origin:isNoteGroup ? BlobOriginLocal : BlobOriginPublic setPersistParam: !isNoteGroup];
}

- (void)uploadCompletedWithBlobId:(NSData*)blobId {
    onCompletion(blobId, self->encryptionKey);
}

#pragma mark - BlobUploadDelegate

- (void)uploadSucceededWithBlobIds:(NSArray*)blobId {
    [ActivityIndicatorProxy stopActivity];
    
    DDLogVerbose(@"Blob ID: %@", blobId[0]);
    [self uploadCompletedWithBlobId:blobId[0]];
}

- (void)uploadFailed {
    DDLogError(@"Blob upload failed");

    [ActivityIndicatorProxy stopActivity];
    
    onError([ThreemaError threemaError:@"Blob upload failed"]);
}

- (void)uploadDidCancel { }

- (void)uploadProgress:(NSNumber *)progress { }

- (BOOL)uploadShouldCancel { 
    return NO;
}

@end

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-11-04) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.