π¨ 1 new commit to ComuCompose:master:
e14787d: Refactor profile editing with an expandable UI
- Replace the bio update bottom sheet with a full-screen expandable editor animation.
- Allow updating both username and bio simultaneously in the new editor.
- Add
- Implement session validation in
- Add a connection loss alert dialog to
- Update
- Store and retrieve the user's bio in
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
e14787d: Refactor profile editing with an expandable UI
- Replace the bio update bottom sheet with a full-screen expandable editor animation.
- Allow updating both username and bio simultaneously in the new editor.
- Add
ExpandableBox composable to handle the transition animation from profile info to the editor.- Implement session validation in
onResume to handle token mismatches.- Add a connection loss alert dialog to
ProfileActivity.- Update
Handlers.setProfileBio and parseSetProfileBio to accept and process username changes.- Store and retrieve the user's bio in
Singleton.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 1 new commit to ComuCompose:master:
77996e4: Push latest changes
* ProfileActivity.kt:
* Update logic for setting the user's bio in the
* Add a new "Edit" button (pen icon) to the top-end of the profile screen layout.
* Configure the "Edit" button to open the profile editor pre-filled with the current user's name and bio.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
77996e4: Push latest changes
* ProfileActivity.kt:
* Update logic for setting the user's bio in the
Singleton instance; specifically handle the placeholder text ("Click to add a few words about yourself") by setting the bio to an empty string in that case.* Add a new "Edit" button (pen icon) to the top-end of the profile screen layout.
* Configure the "Edit" button to open the profile editor pre-filled with the current user's name and bio.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 1 new commit to ComuCompose:master:
b8aa04b: Restrict bio updates and edit UI to current user's profile
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
b8aa04b: Restrict bio updates and edit UI to current user's profile
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 1 new commit to ComuCompose:master:
a0effcb: Refactor profile icon handling and update UI components
- Remove usage of
- Rename
- Refactor
- Update
- Enhance
- Convert
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
a0effcb: Refactor profile icon handling and update UI components
- Remove usage of
getRoundedCroppedBitmap in favor of raw bitmaps for profile icons across Handlers, ChatActivity, ProfileActivity, and MainActivity.- Rename
getRoundedCroppedBitmap to getRoundedBitmap in Utils.- Refactor
ChatActivity TopAppBar to correctly utilize navigationIcon and actions slots, and reduce status animation duration.- Update
ProfileActivity layout to encapsulate username and bio editing fields within a styled Box.- Enhance
NativeComposeEditText in MainActivity with floating hint animations and custom text selection colors.- Convert
relaunching flag in LoginActivity to a mutable state and update log level.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 1 new commit to ComuCompose:master:
adb4bf4: Push latest changes
* ProfileActivity.kt: Apply
* ChatActivity.kt: Reset
* LoginActivity.kt: Update the condition for starting
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
adb4bf4: Push latest changes
* ProfileActivity.kt: Apply
fadeOnCreate animation to edit pen icon, check icon, and the main container box.* ChatActivity.kt: Reset
showDeleteDialog state on launch and apply fadeOnCreate to the call action icon.* LoginActivity.kt: Update the condition for starting
MainActivity to check if MainActivity.items is empty instead of checking focus states.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 1 new commit to ComuCompose:master:
310d0f3: Handle user name update events in message handler
- Add
- Implement logic to update the user's name in
- Trigger
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
310d0f3: Handle user name update events in message handler
- Add
EVENT_USER_NAME_UPDATE_EVENT constant.- Implement logic to update the user's name in
MainActivity.items when the event is received.- Trigger
LoadChats if the user is not found in the current list or if the list is empty.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 2 new commits to ComuServer:main:
75a793f: Refactor chat handling and improve code readability
Refactored chat-related logic to enhance readability, reduce redundancy, and ensure consistency:
- Added
- Replaced
- Updated code to handle
- Streamlined message iteration, pagination, and property updates.
- Refactored notification sending for efficiency and clarity.
- Improved handling of message history and deletion broadcasts.
- Ensured consistent use of
a4376b1: Notify chat partners on user name update
Added a private method
75a793f: Refactor chat handling and improve code readability
Refactored chat-related logic to enhance readability, reduce redundancy, and ensure consistency:
- Added
ChatHasUsers method to validate chat participants.- Replaced
uid field from BsonDocument to BsonArray.- Updated code to handle
uid as an array across the codebase.- Streamlined message iteration, pagination, and property updates.
- Refactored notification sending for efficiency and clarity.
- Improved handling of message history and deletion broadcasts.
- Ensured consistent use of
ChatHasUsers for chat validation. by NikkaGamesa4376b1: Notify chat partners on user name update
Added a private method
GetChatPartners to retrieve chat partners for a given user ID by querying the "chats" collection. Introduced BroadcastToUsers to send payloads to multiple users, ensuring active sessions and SSL authentication. Updated the SetBio method to notify chat partners of a user.nameupdate event when a user's name is updated. by NikkaGamesπ¨ 7 new commits to ComuCompose:master:
f0b6a83: Refactor socket request handling and optimize username update logic
Implement input validation and character limit counters for Profile bio and username
Improve chat scrolling behavior and customize runtime message animations
Add text cleanup utility for Latin-only input restrictions
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
1cf06ad: Push latest changes
- Update server IP address in
- Clean up dependencies in
- Update deployment target timestamp.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
eba7bdf: Push latest changes
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
240c272: Fix infinite scroll pagination logic in ChatActivity
The
This change introduces a
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
38c63e4: Integrate Opus audio codec via JNI
- Add native C++ implementation for Opus encoding and decoding, including
- Include prebuilt
- Add Kotlin wrapper class
- Configure CMake and NDK support in
- Update server IP address in
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
a328a7e: Refactor socket connection to race between local and public IPs
- Update
- Define
- Adjust
- Switch deployment target selection mode to dialog in
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
14e4cc5: Simplify socket connection and update chat pagination
-
-
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
f0b6a83: Refactor socket request handling and optimize username update logic
Implement input validation and character limit counters for Profile bio and username
Improve chat scrolling behavior and customize runtime message animations
Add text cleanup utility for Latin-only input restrictions
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
1cf06ad: Push latest changes
- Update server IP address in
SocketService.- Clean up dependencies in
app/build.gradle: remove unused libs (ACRA, SafetyNet, debug tooling) and reformat.- Update deployment target timestamp.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
eba7bdf: Push latest changes
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
240c272: Fix infinite scroll pagination logic in ChatActivity
The
LaunchedEffect collecting the visible item index was previously checking if (index > 16 || isLoadingMore.value) return@collect, which allowed multiple redundant load operations to fire or fail to reset properly.This change introduces a
loadTriggered state variable to debounce the loading mechanism. It now explicitly checks if (index <= 16 && !loadTriggered && !isLoadingMore.value) to start loading, setting loadTriggered = true. The flag is only reset when the user scrolls back down (index > 16), ensuring a cleaner cycle for fetching older messages.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
38c63e4: Integrate Opus audio codec via JNI
- Add native C++ implementation for Opus encoding and decoding, including
CodecOpus wrapper and JNI bridge.- Include prebuilt
libopus and libopusenc shared libraries and headers for multiple ABIs.- Add Kotlin wrapper class
Opus.kt and configuration constants.- Configure CMake and NDK support in
app/build.gradle.- Update server IP address in
SocketService.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
a328a7e: Refactor socket connection to race between local and public IPs
- Update
SocketService.kt to simultaneously attempt connections to both a local IP and a public IP, using the first successful connection.- Define
LOCAL_IP and PUBLIC_IP constants in SocketService.- Adjust
CallActivity.kt to set status bar appearance and color, and assign the current activity to Handlers.- Switch deployment target selection mode to dialog in
.idea/deploymentTargetSelector.xml.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
14e4cc5: Simplify socket connection and update chat pagination
-
SocketService.kt: Remove the concurrent race logic for connecting via local vs. public IP; simplify to directly connecting to the public IP.-
ChatActivity.kt: Refactor scroll listener logic to better trigger message pagination when the list reaches the top (index 0) or the threshold, ensuring history loads correctly.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 4 new commits to ComuServer:main:
e28802e: Refactor servers and improve BSON handling
Refactored
40078d7: Add call handling, registries, and UDP enhancements
Introduced call handling in
call events and integration with
and
for real-time call handling, including packet parsing, client
association, and cleanup logic. Introduced
General improvements include better cleanup logic and streamlined
access to
95f328f: Refactor session handling to include TcpClient details
Enhanced
details. Updated
accept
is available during event handling. Improved
logging and removed redundant debug messages. Replaced
(IP and port). Adjusted handler invocations and session
creation to integrate
07298d2: Improve null checks, flow control, and exception handling
Added a condition to handle cases where the total number of
devices is zero, ensuring no unnecessary output. Introduced
null checks for
null reference errors. Refactored the infinite loop to include
a
gracefully by breaking the loop. Adjusted
statements for better flow control and to avoid redundant
iterations during exceptions. by NikkaGames
e28802e: Refactor servers and improve BSON handling
Refactored
TCPServer to use IPAddress for IP handling and improved BSON document processing. Enhanced UdpRelayServer with structured ClientState, binary parsing, and better relay logic. Removed legacy code and improved readability with consistent naming and updated console messages. by NikkaGames40078d7: Add call handling, registries, and UDP enhancements
Introduced call handling in
TCPServer.cs with new methods forcall events and integration with
CallRegistry. Added CallRegistryand
CallSession to manage call sessions. Enhanced UdpServer.csfor real-time call handling, including packet parsing, client
association, and cleanup logic. Introduced
RealtimeClient andRealtimeRegistry for managing real-time clients. RefactoredUdpServer.cs for improved packet handling and room management.General improvements include better cleanup logic and streamlined
access to
CallRegistry. by NikkaGames95f328f: Refactor session handling to include TcpClient details
Enhanced
DeviceSession to store TcpClient for connectiondetails. Updated
DispatchCore and all handler methods toaccept
TcpClient as a parameter, ensuring client contextis available during event handling. Improved
LoadCertlogging and removed redundant debug messages. Replaced
PrintUsersExt logic to display detailed per-device info(IP and port). Adjusted handler invocations and session
creation to integrate
TcpClient seamlessly. by NikkaGames07298d2: Improve null checks, flow control, and exception handling
Added a condition to handle cases where the total number of
devices is zero, ensuring no unnecessary output. Introduced
null checks for
session and session.client to preventnull reference errors. Refactored the infinite loop to include
a
try block for message processing, handling IOExceptiongracefully by breaking the loop. Adjusted
continuestatements for better flow control and to avoid redundant
iterations during exceptions. by NikkaGames
π¨ 2 new commits to ComuCompose:master:
49aeeab: Refactor message handling to use a sequential operation queue
This commit introduces a sequential operation queue (
Key changes:
- `Handlers.kt`:
- Implemented a
- Added
- A new
- The
- Old message deletion logic and associated error handling have been removed.
- `ChatActivity.kt`:
- The
- All direct modifications to the
- `SocketService.kt`:
- The
- Minor adjustments to
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
f2d1bde: Refactor incoming message handling
Move notification logic from ComuFirebaseService to Handlers.
Remove messageCheck polling thread and handle messages directly in socket listener.
Update references for stacked notifications and remove obsolete background checks.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
49aeeab: Refactor message handling to use a sequential operation queue
This commit introduces a sequential operation queue (
opQueue) to process message-related actions (add, delete) in order. This prevents race conditions and ConcurrentModificationException errors.Key changes:
- `Handlers.kt`:
- Implemented a
Channel`-based queue (`opQueue) to handle message operations (AddFront, AddBack, RemoveById) sequentially.- Added
addMessageFront, addMessage, and deleteMessageByMid to enqueue operations.- A new
startOpWorker coroutine processes the queue.- The
EVENT_MSG_DELETE_RESULT event is now handled directly within the main event loop, using the new deleteMessageByMid function.- Old message deletion logic and associated error handling have been removed.
- `ChatActivity.kt`:
- The
opWorker is started in onCreate.- All direct modifications to the
messages list (messages.add, messages.add(0, ...)) are replaced with calls to the new queue functions (Handlers.addMessage, Handlers.addMessageFront).- `SocketService.kt`:
- The
messagesCache is now cleared during reconnection to ensure fresh data.- Minor adjustments to
Thread.sleep durations.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
f2d1bde: Refactor incoming message handling
Move notification logic from ComuFirebaseService to Handlers.
Remove messageCheck polling thread and handle messages directly in socket listener.
Update references for stacked notifications and remove obsolete background checks.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 1 new commit to ComuServer:main:
a277693: Refactor payload delivery logic for TCP and FCM fallback
Refactored the logic for sending payloads to user sessions, introducing
a277693: Refactor payload delivery logic for TCP and FCM fallback
Refactored the logic for sending payloads to user sessions, introducing
sentTcp and selfTcp flags to track TCP delivery success. Added fallback to FCM if TCP delivery fails for all sessions. Improved thread management by replacing thread creation with ThreadPool.QueueUserWorkItem for FCM notifications. Ensured SslStream authentication before TCP data transmission. Streamlined exception handling, replaced for loops with foreach for clarity, and restructured code for better readability and maintainability. by NikkaGamesπ¨ 1 new commit to ComuServer:main:
288c8c2: Add async servers and enhanced debug logging
Replaced direct server invocations with asynchronous `Task`-based
execution for
operation. Introduced
Enhanced debug logging across
and
Logs now include detailed insights into client registration,
packet handling, and room management.
Refactored
and added a
maintainability and debugging for real-time communication. by NikkaGames
288c8c2: Add async servers and enhanced debug logging
Replaced direct server invocations with asynchronous `Task`-based
execution for
TCPServer and UdpServer, ensuring concurrentoperation. Introduced
Task.WaitAll to synchronize completion.Enhanced debug logging across
RealtimeRegistry, TCPServer,and
UdpServer, controlled by the static TCPServer.sr flag.Logs now include detailed insights into client registration,
packet handling, and room management.
Refactored
UdpServer.Main into Run for task-based executionand added a
Dbg method for conditional logging. Improvedmaintainability and debugging for real-time communication. by NikkaGames
π¨ 1 new commit to ComuServer:main:
c465a4e: Add call termination methods and handle user disconnection
Added
to safely terminate calls by
a thread-safe
Updated
user-associated calls are terminated on disconnection. Also
added a call to
user's device from the real-time registry. by NikkaGames
c465a4e: Add call termination methods and handle user disconnection
Added
TryEnd and EndCallsByUser methods in CallRegistryto safely terminate calls by
callId or user uid. Introduceda thread-safe
ConcurrentDictionary to manage active calls.Updated
TCPServer to invoke EndCallsByUser and ensure alluser-associated calls are terminated on disconnection. Also
added a call to
RealtimeRegistry.Remove to clean up theuser's device from the real-time registry. by NikkaGames
π¨ 3 new commits to ComuCompose:master:
678c36e: Update notification logic and main item updates
- Refactor
- Move
- Remove redundant
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
c5611ad: Implement UDP voice calling functionality
- Add
- Rewrite
- Implement call signaling events (request, accept, reject, end) in
- Update
- Modify
- Add
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
70151fc: Implement in-call speakerphone toggle and audio routing
- Add speaker toggle button to ActiveUI and handle state changes.
- Implement proper audio device selection and AudioFocus management in UdpCallService, including support for Android 31+ APIs.
- Fix incorrect UID passing when starting UdpCallService.
- Refine CallActivity UI layout, padding, and call state updates.
- Improve socket error handling and resource cleanup in service lifecycle.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
678c36e: Update notification logic and main item updates
- Refactor
shouldNotify logic in message handlers to correctly account for chat focus and user ID comparisons.- Move
updateMainItems call for stickers to occur immediately upon handling, splitting based on isSelf.- Remove redundant
updateMainItems calls in other message handling flows to avoid duplication or incorrect timing.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
c5611ad: Implement UDP voice calling functionality
- Add
UdpCallService for handling audio recording, playback, and Opus encoding/decoding.- Rewrite
CallActivity to manage call UI states (Incoming, Outgoing, Active).- Implement call signaling events (request, accept, reject, end) in
Handlers.- Update
ChatActivity to initiate calls via profile interaction.- Modify
AppVisibility to prevent service termination during active calls.- Add
RECORD_AUDIO and foreground service permissions to Manifest.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
70151fc: Implement in-call speakerphone toggle and audio routing
- Add speaker toggle button to ActiveUI and handle state changes.
- Implement proper audio device selection and AudioFocus management in UdpCallService, including support for Android 31+ APIs.
- Fix incorrect UID passing when starting UdpCallService.
- Refine CallActivity UI layout, padding, and call state updates.
- Improve socket error handling and resource cleanup in service lifecycle.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 1 new commit to ComuServer:main:
9ff2713: Add user call status checks to CallRegistry and TCPServer
Added
Updated
These changes improve concurrency handling and user experience. by NikkaGames
9ff2713: Add user call status checks to CallRegistry and TCPServer
Added
IsUserInCall methods to CallRegistry for checking if a user is in an active call, with or without retrieving the callId. Declared Calls as a ConcurrentDictionary to manage active call sessions.Updated
TCPServer to prevent initiating calls with users already in a call by using CallRegistry.IsUserInCall. Sends a "call.busy" message if the target user is busy.These changes improve concurrency handling and user experience. by NikkaGames
π¨ 1 new commit to ComuCompose:master:
5611986: Refactor Call UI and enhance call state management
- Consolidate call UI states (incoming, outgoing, active) into a single composable and replace text buttons with icons in
- Implement handling for
- Add
- Improve service lifecycle logic: check if running before starting and add a delay before finishing the activity on call end.
- Fix
- Remove invalid permission request invocation from
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
5611986: Refactor Call UI and enhance call state management
- Consolidate call UI states (incoming, outgoing, active) into a single composable and replace text buttons with icons in
CallActivity.- Implement handling for
BUSY call state in Handlers and update UI to reflect it.- Add
PendingIntent to UdpCallService notification to allow users to return to the active call screen.- Improve service lifecycle logic: check if running before starting and add a delay before finishing the activity on call end.
- Fix
callId assignment in EVENT_CALL_ACCEPTED handler.- Remove invalid permission request invocation from
UdpCallService.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 2 new commits to ComuServer:main:
c475812: Include
Previously, the
property with the value
This enhancement provides additional context to the recipient
of the message, which can be useful for debugging, logging,
or other purposes. by NikkaGames
e84766e: Improve call handling, cleanup, and logging
Refactored
Enabled debugging in
c475812: Include
uid in call.busy message payloadPreviously, the
call.busy message only included the nameproperty with the value
"call.busy". This change adds auid property to the message, set to the value of targetUid.This enhancement provides additional context to the recipient
of the message, which can be useful for debugging, logging,
or other purposes. by NikkaGames
e84766e: Improve call handling, cleanup, and logging
Refactored
EndCallsByUser in CallRegistry.cs to return ended CallSession objects. Enhanced EndCallsByUser in TCPServer.cs to notify other parties and close UDP rooms. Improved NextCallId to ensure unique call IDs.Enabled debugging in
TCPServer.cs and added UdpServer.CloseRoom calls for proper cleanup. Introduced CloseRoom in UdpServer.cs for resource management. Enhanced error handling and logging in UdpServer.cs to prevent crashes and improve visibility. by NikkaGamesπ¨ 2 new commits to ComuCompose:master:
b45847e: Refactor login and background service cleanup
- In
- In
- Check if the user profile picture exists in
- Replace
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
de34d02: Implement call duration timer and optimize service lifecycle
- Add call timer logic and display elapsed time in CallActivity
- Update call notification to show chronometer
- Auto-stop UdpCallService when call state becomes ENDED
- Refactor FCM token registration and clean up JSON handling
- Optimize LoginActivity startup flow and navigation logic
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
b45847e: Refactor login and background service cleanup
- In
AppVisibility, wait for UdpCallService to finish before stopping SocketService.- In
LoginActivity, refactor auto-login logic into relaunchLogin and remove the retry loop in login.- Check if the user profile picture exists in
LoginActivity to skip directly to MainActivity.- Replace
finish() with finishAndRemoveTask() in ChatActivity and LoginActivity.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
de34d02: Implement call duration timer and optimize service lifecycle
- Add call timer logic and display elapsed time in CallActivity
- Update call notification to show chronometer
- Auto-stop UdpCallService when call state becomes ENDED
- Refactor FCM token registration and clean up JSON handling
- Optimize LoginActivity startup flow and navigation logic
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 1 new commit to ComuCompose:master:
841729b: Add ongoing call banner to Chat and Main activities
- Expose
- Display a clickable green banner in
- Clicking the banner navigates to the active
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
841729b: Add ongoing call banner to Chat and Main activities
- Expose
UdpCallService.runningFlow to track call service state reactively.- Display a clickable green banner in
ChatActivity and MainActivity when a call is active, showing the elapsed duration.- Clicking the banner navigates to the active
CallActivity.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
π¨ 2 new commits to ComuServer:main:
fb6764f: Refactor to use PeerId and simplify client handling
Replaced uid/device keys with PeerId (ulong) across RealtimeClient,
RealtimeRegistry, and UdpServer for improved efficiency and clarity.
Updated TCPServer to handle specific user.getinfo case. Removed
UdpServer cleanup logic and refactored related code. General cleanup
and debug message updates to align with PeerId-based implementation. by NikkaGames
3ae8d79: Add call sync method and improve call state handling
Added
with users, sending call details or inactive status via
Integrated
in
state for further processing, enhancing handling of pending calls. by NikkaGames
fb6764f: Refactor to use PeerId and simplify client handling
Replaced uid/device keys with PeerId (ulong) across RealtimeClient,
RealtimeRegistry, and UdpServer for improved efficiency and clarity.
Updated TCPServer to handle specific user.getinfo case. Removed
UdpServer cleanup logic and refactored related code. General cleanup
and debug message updates to align with PeerId-based implementation. by NikkaGames
3ae8d79: Add call sync method and improve call state handling
Added
SendCallSync to TCPServer to synchronize call statuswith users, sending call details or inactive status via
SslStream.Integrated
SendCallSync in two key points after user registrationin
RealtimeRegistry. Updated call state logic to include Ringingstate for further processing, enhancing handling of pending calls. by NikkaGames
π¨ 4 new commits to ComuCompose:master:
d5bf16e: * Utils: Added
* UdpCallService: Refactored packet header structure to use a fixed-size 12-byte header (8 bytes for hashed peer ID, 4 bytes for call ID) instead of variable-length string fields, simplifying packet parsing and construction.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
3bda294: Update CallActivity finish logic and handling of incoming calls
- In
- In
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
d7913a5: Add microphone mute toggle and call reconnection monitoring
- Implement microphone muting in
- Add connection monitoring: switch to
- Handle
- Update
- Wrap UDP socket send operations in
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
9ed44b2: Update Call UI and implement call state synchronization
- Redesign the call screen layout in
- Change the active call status text from "Call active" to "Connected".
- Implement handling for the
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
d5bf16e: * Utils: Added
id helper function to generate a unique 64-bit hash from UID and device ID.* UdpCallService: Refactored packet header structure to use a fixed-size 12-byte header (8 bytes for hashed peer ID, 4 bytes for call ID) instead of variable-length string fields, simplifying packet parsing and construction.
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
3bda294: Update CallActivity finish logic and handling of incoming calls
- In
CallActivity.kt, stop the service immediately when the call ends or is busy, reduce the delay before finishing the task from 2000ms to 1200ms, and clean up imports.- In
Handlers.kt, wrap the incoming call event handling in a coroutine that waits until the previous call state is no longer ENDED before initializing the new incoming call and starting CallActivity.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
d7913a5: Add microphone mute toggle and call reconnection monitoring
- Implement microphone muting in
UdpCallService and add a toggle button in CallActivity.- Add connection monitoring: switch to
RECON state ("Reconnectingβ¦") if no packets are received for 1 second.- Handle
EVENT_CALL_REJECTED with a new REJECTED state in CallWrapper.- Update
CallActivity to display UI for new states and cleanup resources on rejection.- Wrap UDP socket send operations in
runCatching to prevent crashes.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
9ed44b2: Update Call UI and implement call state synchronization
- Redesign the call screen layout in
CallActivity with a new profile icon placeholder, updated typography, and adjusted spacing.- Change the active call status text from "Call active" to "Connected".
- Implement handling for the
call.sync event in Handlers to correctly update the local call state (active/ended) and call ID based on server data.Signed-off-by: NikkaGames <[email protected]> by NikkaGames