Antidote/local_pod_repo/objcTox/Classes/Public/Wrapper/OCTToxDelegate.h
2024-02-22 21:43:11 +02:00

220 lines
8.9 KiB
Objective-C

// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
#import <Foundation/Foundation.h>
#import "OCTToxConstants.h"
@class OCTTox;
/**
* All delegate methods will be called on main thread.
*/
@protocol OCTToxDelegate <NSObject>
@optional
/**
* User connection status changed.
*
* @param connectionStatus New connection status of the user.
*/
- (void)tox:(OCTTox *)tox connectionStatus:(OCTToxConnectionStatus)connectionStatus;
/**
* Received friend request from a new friend.
*
* @param message Message sent with request.
* @param publicKey New friend public key.
*/
- (void)tox:(OCTTox *)tox friendRequestWithMessage:(NSString *)message publicKey:(NSString *)publicKey;
/**
* Message received from a friend.
*
* @param message Received message.
* @param type Type of the message.
* @param friendNumber Friend number of appropriate friend.
* @param msgv3HashHex messageV3 Hash as Hexstring or nil.
* @param sendTimestamp unixtimestamp. if msgv3HashHex is nil then timestamp is ignored and current time is used.
*/
- (void)tox:(OCTTox *)tox friendMessage:(NSString *)message
type:(OCTToxMessageType)type
friendNumber:(OCTToxFriendNumber)friendNumber
msgv3HashHex:(NSString *)msgv3HashHex
sendTimestamp:(uint32_t)sendTimestamp;
/**
* Send msgV3 high level ACK message.
*
* @param message Message text.
* @param friendNumber Friend number of appropriate friend.
* @param msgv3HashHex messageV3 Hash as Hexstring.
* @param sendTimestamp unixtimestamp.
*/
- (void)tox:(OCTTox *)tox sendFriendHighlevelACK:(NSString *)message
friendNumber:(OCTToxFriendNumber)friendNumber
msgv3HashHex:(NSString *)msgv3HashHex
sendTimestamp:(uint32_t)sendTimestamp;
/**
* Friend's name was updated.
*
* @param name Updated name.
* @param friendNumber Friend number of appropriate friend.
*/
- (void)tox:(OCTTox *)tox friendNameUpdate:(NSString *)name friendNumber:(OCTToxFriendNumber)friendNumber;
/**
* Friend's Push Token was updated.
*
* @param pushToken Updated Push Token.
* @param friendNumber Friend number of appropriate friend.
*/
- (void)tox:(OCTTox *)tox friendPushTokenUpdate:(NSString *)pushToken friendNumber:(OCTToxFriendNumber)friendNumber;
/**
* Friend's status message was updated.
*
* @param statusMessage Updated status message.
* @param friendNumber Friend number of appropriate friend.
*/
- (void)tox:(OCTTox *)tox friendStatusMessageUpdate:(NSString *)statusMessage friendNumber:(OCTToxFriendNumber)friendNumber;
/**
* Friend's status was updated.
*
* @param status Updated status.
* @param friendNumber Friend number of appropriate friend.
*/
- (void)tox:(OCTTox *)tox friendStatusUpdate:(OCTToxUserStatus)status friendNumber:(OCTToxFriendNumber)friendNumber;
/**
* Friend's isTyping was updated
*
* @param isTyping Updated typing status.
* @param friendNumber Friend number of appropriate friend.
*/
- (void)tox:(OCTTox *)tox friendIsTypingUpdate:(BOOL)isTyping friendNumber:(OCTToxFriendNumber)friendNumber;
/**
* Friend's Msgv3Capability needs to be updated
*
* @param msgv3Capability Updated msgV3 status.
* @param friendNumber Friend number of appropriate friend.
*/
- (void)tox:(OCTTox *)tox friendSetMsgv3Capability:(BOOL)msgv3Capability friendNumber:(OCTToxFriendNumber)friendNumber;
/**
* Message that was previously sent by us has been delivered to a friend.
*
* @param messageId Id of message. You could get in in sendMessage method.
* @param friendNumber Friend number of appropriate friend.
*/
- (void)tox:(OCTTox *)tox messageDelivered:(OCTToxMessageId)messageId friendNumber:(OCTToxFriendNumber)friendNumber;
/**
* Message that was previously sent by us has been delivered to a friend.
*
* @param message Received message. UNUSED for now.
* @param friendNumber Friend number of appropriate friend.
* @param msgv3HashHex messageV3 Hash as Hexstring.
* @param sendTimestamp unixtimestamp.
*/
- (void)tox:(OCTTox *)tox friendHighLevelACK:(NSString *)message
friendNumber:(OCTToxFriendNumber)friendNumber
msgv3HashHex:(NSString *)msgv3HashHex
sendTimestamp:(uint32_t)sendTimestamp;
/**
* Friend's connection status changed.
*
* @param status Updated status.
* @param friendNumber Friend number of appropriate friend.
*/
- (void)tox:(OCTTox *)tox friendConnectionStatusChanged:(OCTToxConnectionStatus)status friendNumber:(OCTToxFriendNumber)friendNumber;
/**
* This event is triggered when a file control command is received from a friend.
*
* When receiving OCTToxFileControlCancel, the client should release the
* resources associated with the file number and consider the transfer failed.
*
* @param control The control command to send.
* @param friendNumber The friend number of the friend the file is being transferred to or received from.
* @param fileNumber The friend-specific identifier for the file transfer.
*/
- (void) tox:(OCTTox *)tox fileReceiveControl:(OCTToxFileControl)control
friendNumber:(OCTToxFriendNumber)friendNumber
fileNumber:(OCTToxFileNumber)fileNumber;
/**
* If the length parameter is 0, the file transfer is finished, and the client's
* resources associated with the file number should be released. After a call
* with zero length, the file number can be reused for future file transfers.
*
* If the requested position is not equal to the client's idea of the current
* file or stream position, it will need to seek. In case of read-once streams,
* the client should keep the last read chunk so that a seek back can be
* supported. A seek-back only ever needs to read from the last requested chunk.
* This happens when a chunk was requested, but the send failed. A seek-back
* request can occur an arbitrary number of times for any given chunk.
*
* In response to receiving this callback, the client should call the method
* `fileSendChunk` with the requested chunk. If the number of bytes sent
* through that method is zero, the file transfer is assumed complete. A
* client must send the full length of data requested with this callback.
*
* @param friendNumber The friend number of the receiving friend for this file.
* @param fileNumber The file transfer identifier returned by fileSend.
* @param position The file or stream position from which to continue reading.
* @param length The number of bytes requested for the current chunk.
*/
- (void) tox:(OCTTox *)tox fileChunkRequestForFileNumber:(OCTToxFileNumber)fileNumber
friendNumber:(OCTToxFriendNumber)friendNumber
position:(OCTToxFileSize)position
length:(size_t)length;
/**
* The client should acquire resources to be associated with the file transfer.
* Incoming file transfers start in the PAUSED state. After this callback
* returns, a transfer can be rejected by sending a OCTToxFileControlCancel
* control command before any other control commands. It can be accepted by
* sending OCTToxFileControlResume.
*
* @param fileNumber The friend-specific file number the data received is associated with.
* @param friendNumber The friend number of the friend who is sending the file transfer request.
* @param kind The meaning of the file to be sent.
* @param fileSize Size in bytes of the file about to be received from the client, kOCTToxFileSizeUnknown if unknown or streaming.
* @param fileName The name of the file.
*/
- (void) tox:(OCTTox *)tox fileReceiveForFileNumber:(OCTToxFileNumber)fileNumber
friendNumber:(OCTToxFriendNumber)friendNumber
kind:(OCTToxFileKind)kind
fileSize:(OCTToxFileSize)fileSize
fileName:(NSString *)fileName;
/**
* This method is first called when a file transfer request is received, and
* subsequently when a chunk of file data for an accepted request was received.
*
* When chunk is nil, the transfer is finished and the client should release the
* resources it acquired for the transfer. After a call with chunk = nil, the
* file number can be reused for new file transfers.
*
* If position is equal to fileSize (received in the fileReceive callback)
* when the transfer finishes, the file was received completely. Otherwise, if
* fileSize was kOCTToxFileSizeUnknown, streaming ended successfully when chunk is nil.
*
* @param chunk A data containing the received chunk.
* @param fileNumber The friend-specific file number the data received is associated with.
* @param friendNumber The friend number of the friend who is sending the file.
* @param position The file position of the first byte in data.
*/
- (void) tox:(OCTTox *)tox fileReceiveChunk:(NSData *)chunk
fileNumber:(OCTToxFileNumber)fileNumber
friendNumber:(OCTToxFriendNumber)friendNumber
position:(OCTToxFileSize)position;
@end