Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixes #105

Merged
merged 2 commits into from
Jan 11, 2024
Merged

fixes #105

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 27 additions & 11 deletions src/main/java/com/zoffcc/applications/trifa/HelperGroup.java
Original file line number Diff line number Diff line change
Expand Up @@ -1103,7 +1103,7 @@ static void handle_incoming_sync_group_message(final long group_number, final lo
final String syncer_pubkey = tox_group_peer_get_public_key(group_number, syncer_peer_id);

ByteBuffer hash_bytes = ByteBuffer.allocateDirect(TOX_GROUP_PEER_PUBLIC_KEY_SIZE);
hash_bytes.put(data, 8 + 4, 32);
hash_bytes.put(data, 6 + 1 + 1 + 4, 32);
ByteBufferCompat hash_bytes_compat = new ByteBufferCompat(hash_bytes);
final String original_sender_peerpubkey = bytesToHexJava
(hash_bytes_compat.array(),hash_bytes_compat.arrayOffset(),hash_bytes_compat.limit()).toUpperCase();
Expand All @@ -1123,12 +1123,12 @@ static void handle_incoming_sync_group_message(final long group_number, final lo
timestamp_byte_buffer.put((byte)0x0);
timestamp_byte_buffer.put((byte)0x0);
timestamp_byte_buffer.put((byte)0x0);
timestamp_byte_buffer.put(data, 8+4+32, 4);
timestamp_byte_buffer.put(data, 6 + 1 + 1 + 4 + 32, 4);
timestamp_byte_buffer.order(java.nio.ByteOrder.BIG_ENDIAN);
timestamp_byte_buffer.rewind();
long timestamp = timestamp_byte_buffer.getLong();
//Log.i(TAG,"handle_incoming_sync_group_message:got_ts_bytes:" +
// HelperGeneric.bytesToHex(data, 8+4+32, 4));
// Log.i(TAG,"handle_incoming_sync_group_message:got_ts_bytes:" +
// HelperGeneric.bytesToHex(data, 6 + 1 + 1 + 4 + 32, 4));
timestamp_byte_buffer.rewind();
//Log.i(TAG,"handle_incoming_sync_group_message:got_ts_bytes:bytebuffer:" +
// HelperGeneric.bytesToHex(timestamp_byte_buffer.array(),
Expand All @@ -1140,29 +1140,34 @@ static void handle_incoming_sync_group_message(final long group_number, final lo
if (timestamp > ((System.currentTimeMillis() / 1000) + (60 * 5)))
{
long delta_t = timestamp - (System.currentTimeMillis() / 1000);
// Log.i(TAG, "handle_incoming_sync_group_message:delta t=" + delta_t + " do NOT sync messages from the future");
Log.i(TAG, "handle_incoming_sync_group_message:delta t=" + delta_t + " do NOT sync messages from the future");
return;
}
else if (timestamp < ((System.currentTimeMillis() / 1000) - (60 * 200)))
{
long delta_t = (System.currentTimeMillis() / 1000) - timestamp;
// Log.i(TAG, "handle_incoming_sync_group_message:delta t=" + (-delta_t) + " do NOT sync messages that are too old");
Log.i(TAG, "handle_incoming_sync_group_message:delta t=" + (-delta_t) + " do NOT sync messages that are too old");
return;
}

//
//
//
ByteBuffer hash_msg_id_bytes = ByteBuffer.allocateDirect(4);
hash_msg_id_bytes.put(data, 8, 4);
hash_msg_id_bytes.put(data, 6 + 1 + 1, 4);
ByteBufferCompat hash_msg_id_bytes_compat = new ByteBufferCompat(hash_msg_id_bytes);
final String message_id_tox = bytesToHexJava(hash_msg_id_bytes_compat.array(),hash_msg_id_bytes_compat.arrayOffset(),hash_msg_id_bytes_compat.limit()).toLowerCase();
// Log.i(TAG, "handle_incoming_sync_group_message:message_id_tox hex=" + message_id_tox);
//
//
ByteBuffer name_buffer = ByteBuffer.allocateDirect(TOX_NGC_HISTORY_SYNC_MAX_PEERNAME_BYTES);
name_buffer.put(data, 8 + 4 + 32 + 4, TOX_NGC_HISTORY_SYNC_MAX_PEERNAME_BYTES);
name_buffer.put(data, 6 + 1 + 1 + 4 + 32 + 4, TOX_NGC_HISTORY_SYNC_MAX_PEERNAME_BYTES);
name_buffer.rewind();

ByteBufferCompat name_buffer_compat = new ByteBufferCompat(name_buffer);
final String name_str_with_padding_hex = bytesToHexJava(name_buffer_compat.array(),name_buffer_compat.arrayOffset(),name_buffer_compat.limit());
// Log.i(TAG, "handle_incoming_sync_group_message:sender_name hex=" + name_str_with_padding_hex);

String peer_name = "peer";
try
{
Expand All @@ -1184,6 +1189,7 @@ else if (timestamp < ((System.currentTimeMillis() / 1000) - (60 * 200)))
break;
}
}
// Log.i(TAG, "handle_incoming_sync_group_message:start_index=" + start_index);

for(int j=(TOX_NGC_HISTORY_SYNC_MAX_PEERNAME_BYTES-1);j>=0;j--)
{
Expand All @@ -1196,12 +1202,21 @@ else if (timestamp < ((System.currentTimeMillis() / 1000) - (60 * 200)))
break;
}
}
// Log.i(TAG, "handle_incoming_sync_group_message:end_index=" + end_index);

byte[] peername_byte_buf_stripped = Arrays.copyOfRange(name_byte_buf, start_index,end_index);
peer_name = new String(peername_byte_buf_stripped, StandardCharsets.UTF_8);
if (end_index <= start_index)
{
Log.i(TAG, "handle_incoming_sync_group_message:error on null byte detection in name");
}
else
{
byte[] peername_byte_buf_stripped = Arrays.copyOfRange(name_byte_buf, start_index,end_index);
peer_name = new String(peername_byte_buf_stripped, StandardCharsets.UTF_8);
}
//
// Log.i(TAG,"handle_incoming_sync_group_message:peer_name str=" + peer_name);
//
final int header = 6+1+1+4+32+4+25; // 73 bytes
final int header = 6 + 1 + 1 + 4 + 32 + 4 + 25; // 73 bytes
long text_size = length - header;
if ((text_size < 1) || (text_size > 37000))
{
Expand Down Expand Up @@ -1231,6 +1246,7 @@ else if (timestamp < ((System.currentTimeMillis() / 1000) - (60 * 200)))
if (peer_name_saved != null)
{
// HINT: use saved name instead of name from sync message
// Log.i(TAG,"handle_incoming_sync_group_message:use saved name instead of name from sync message:" + peer_name_saved);
peer_name = peer_name_saved;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -509,7 +509,7 @@ object HelperGeneric {
m.msg_id_hash = ""
m.raw_msgv2_bytes = ""

val result: MainActivity.Companion.send_message_result =
val result: MainActivity.Companion.send_message_result? =
tox_friend_send_message_wrapper(friendPubkey.toUpperCase(),
0, msg,
m.sent_timestamp / 1000)
Expand Down
15 changes: 9 additions & 6 deletions src/main/kotlin/com/zoffcc/applications/trifa/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2549,12 +2549,16 @@ class MainActivity
val tox_peerpk = tox_group_peer_get_public_key(group_number, peer_id)!!.uppercase()
val message_id_hex = fourbytes_of_long_to_hex(message_id)
val message_timestamp = System.currentTimeMillis()
val peernum = tox_group_peer_by_public_key(group_number, tox_peerpk)
var fname = tox_group_peer_get_name(group_number, peernum)
if (fname == null)
{
fname = ""
}
val msg_dbid = received_groupmessage_to_db(tox_peerpk = tox_peerpk!!,
groupid = group_id, message_timestamp = message_timestamp,
group_message = message_orig, message_id_hex = message_id_hex,
was_synced = false)
val peernum = tox_group_peer_by_public_key(group_number, tox_peerpk)
val fname = tox_group_peer_get_name(group_number, peernum)
was_synced = false, peername = fname)
val peer_user = User(fname + " / " + PubkeyShort(tox_peerpk), picture = "friend_avatar.png", toxpk = tox_peerpk.uppercase(), color = ColorProvider.getColor(true, tox_peerpk.uppercase()))
groupmessagestore.send(GroupMessageAction.ReceiveGroupMessage(
UIGroupMessage(
Expand Down Expand Up @@ -3050,11 +3054,10 @@ class MainActivity
return row_id
}

fun received_groupmessage_to_db(tox_peerpk: String, groupid: String, message_timestamp: Long, group_message: String?, message_id_hex: String, was_synced: Boolean): Long
fun received_groupmessage_to_db(tox_peerpk: String, groupid: String, message_timestamp: Long, group_message: String?, message_id_hex: String, was_synced: Boolean, peername: String): Long
{
val groupnum = tox_group_by_groupid__wrapper(groupid)
val peernum = tox_group_peer_by_public_key(groupnum, tox_peerpk)
val peername = tox_group_peer_get_name(groupnum, peernum)
val m = GroupMessage()
m.tox_group_peer_pubkey = tox_peerpk
m.direction = TRIFAGlobals.TRIFA_MSG_DIRECTION.TRIFA_MSG_DIRECTION_RECVD.value // msg received
Expand Down Expand Up @@ -3114,7 +3117,7 @@ class MainActivity
{
val message_timestamp = m.sent_timestamp

val msg_dbid = received_groupmessage_to_db(tox_peerpk = m.tox_group_peer_pubkey!!, groupid = m.group_identifier, message_timestamp = message_timestamp, group_message = m.text, message_id_hex = m.message_id_tox, was_synced = m.was_synced)
val msg_dbid = received_groupmessage_to_db(tox_peerpk = m.tox_group_peer_pubkey!!, groupid = m.group_identifier, message_timestamp = message_timestamp, group_message = m.text, message_id_hex = m.message_id_tox, was_synced = m.was_synced, peername = m.tox_group_peername)
val peer_user = User(m.tox_group_peername + " / " + PubkeyShort(m.tox_group_peer_pubkey), picture = "friend_avatar.png", toxpk = m.tox_group_peer_pubkey.uppercase(), color = ColorProvider.getColor(true, m.tox_group_peer_pubkey.uppercase()))

groupmessagestore.send(GroupMessageAction.ReceiveGroupMessage(
Expand Down
Loading