🔨 1 new commit to ComuCompose:master:
67e9cac: Replace "/bk/" with a newline in user bio replacement
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
67e9cac: Replace "/bk/" with a newline in user bio replacement
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
f484e39: Refactor connection state management and fix thread safety
- Replace
- Refactor
- Update
- Fix UI state updates in
- Ensure proper service restarts and token handling in
- Add
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
f484e39: Refactor connection state management and fix thread safety
- Replace
MutableState variables in SocketService with volatile booleans and a SocketFlags object for thread-safe state tracking.- Refactor
SocketService loop logic to handle connection attempts, reading, and sending more robustly, including proper resource cleanup on disconnect.- Update
ChatActivity, LoginActivity, MainActivity, and ComuFirebaseService to observe the new SocketFlags and connectedState instead of the old state variables.- Fix UI state updates in
ChatActivity by dispatching to the main thread and using derived state for call visibility.- Ensure proper service restarts and token handling in
LoginActivity and MainActivity based on the new connection flags.- Add
try-catch to thread sleeping in Utils to prevent crashes on interruption.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
fdcd9ae: Optimize chat list performance and refactor state management
- Implement staggered list animations and memoize bitmaps in MainActivity
- Replace polling loops with snapshotFlow and optimize filtering with derivedStateOf
- Hoist profile info state in ProfileActivity
- Fix navigation logic operator in LoginActivity
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
fdcd9ae: Optimize chat list performance and refactor state management
- Implement staggered list animations and memoize bitmaps in MainActivity
- Replace polling loops with snapshotFlow and optimize filtering with derivedStateOf
- Hoist profile info state in ProfileActivity
- Fix navigation logic operator in LoginActivity
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:
e2068a6: Enhance TCPServer: sessions, tokens, and refactoring
Improved session management with the introduction of the
Added methods for session cleanup and streamlined retrieval.
Enhanced device and token tracking with new methods for
managing FCM tokens and refactored token handling for better
consistency and database operations.
Simplified database initialization and replaced
with
and exception handling for improved readability and stability.
These changes add multiclient support and improve scalability, maintainability, performance. by NikkaGames
e2068a6: Enhance TCPServer: sessions, tokens, and refactoring
Improved session management with the introduction of the
DeviceSession class and thread-safe ConcurrentDictionary.Added methods for session cleanup and streamlined retrieval.
Enhanced device and token tracking with new methods for
managing FCM tokens and refactored token handling for better
consistency and database operations.
Simplified database initialization and replaced
ReplaceOnewith
InsertOne for clarity. Refactored loops, conditionals,and exception handling for improved readability and stability.
These changes add multiclient support and improve scalability, maintainability, performance. by NikkaGames
🔨 1 new commit to ComuCompose:master:
1b843b7: Handle self-events and refactor socket encryption
- Update notification service to suppress alerts for self-events
- Correctly flag self-event messages in message handlers
- Move encryption logic to SocketService output stream
- Add device identifier to authentication requests and for multiclient support
- Restrict outgoing messages during socket reconnection
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
1b843b7: Handle self-events and refactor socket encryption
- Update notification service to suppress alerts for self-events
- Correctly flag self-event messages in message handlers
- Move encryption logic to SocketService output stream
- Add device identifier to authentication requests and for multiclient support
- Restrict outgoing messages during socket reconnection
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:
6e4aa2a: Refactor certificate loading and improve event handling
Refactored
Enhanced event handling by ensuring the loop continues on
removing redundant cleanup code and updating status management.
Added logging for certificate loading. by NikkaGames
6e4aa2a: Refactor certificate loading and improve event handling
Refactored
TCPServer to dynamically load the server certificate.Enhanced event handling by ensuring the loop continues on
TryGetMe failure. Improved client disconnection logic byremoving redundant cleanup code and updating status management.
Added logging for certificate loading. by NikkaGames
🔨 1 new commit to ComuCompose:master:
4e305f7: Improve socket stability and state handling
- Handle
- Ensure socket is open before attempting to send messages
- Guard status updates in
- Prevent concurrent execution of
- Refactor
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
4e305f7: Improve socket stability and state handling
- Handle
SocketException explicitly in SocketService and add delays for state synchronization- Ensure socket is open before attempting to send messages
- Guard status updates in
ChatActivity and MainActivity based on connection state- Prevent concurrent execution of
relaunch in LoginActivity using AtomicBoolean- Refactor
avgColor to MutableState in MainActivity and provide fallback colorsSigned-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:
6507b74: Enhance Profile screen with new animations and visual effects
- Refactor
- Add
- Implement
- Apply
- Add fade animations to bio and join date text elements.
- Enable shimmer effect on the user's own profile avatar.
- Increase item loading delay in
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
6507b74: Enhance Profile screen with new animations and visual effects
- Refactor
Modifier.shimmer in Utils.kt to support configurable duration and delay intervals.- Add
Modifier.fadeOnCreate extension for simple fade-in entry animations.- Implement
GlowOverlay composable to render a radial gradient glow.- Apply
GlowOverlay to the profile header in ProfileActivity.- Add fade animations to bio and join date text elements.
- Enable shimmer effect on the user's own profile avatar.
- Increase item loading delay in
MainActivity from 35ms to 50ms.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 2 new commits to ComuCompose:master:
cf34ecb: Refactor chat list loading and item UI
- Offload icon decoding to the UI layer using asynchronous loading with
- Add shimmer placeholder effect for avatars while loading
- Simplify message preview text generation in
- Add fade-in animations to the chat list
- Enforce single-line limit with ellipsis for chat subtitles
- Switch
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
b652aa5: Refactor chat list loading and item UI
- Offload icon decoding to the UI layer using asynchronous loading with
- Add shimmer placeholder effect for avatars while loading
- Simplify message preview text generation in
- Add fade-in animations to the chat list
- Enforce single-line limit with ellipsis for chat subtitles
- Switch
Optimize icon caching and rounded corner logic
- Store pre-rounded bitmaps in
- Update the cache retrieval logic to save and use the rounded version directly.
- Add
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
cf34ecb: Refactor chat list loading and item UI
- Offload icon decoding to the UI layer using asynchronous loading with
LaunchedEffect- Add shimmer placeholder effect for avatars while loading
- Simplify message preview text generation in
Handlers by removing emoji-specific truncation logic- Add fade-in animations to the chat list
- Enforce single-line limit with ellipsis for chat subtitles
- Switch
LoadChats to use Dispatchers.IOSigned-off-by: NikkaGames <[email protected]> by NikkaGames
b652aa5: Refactor chat list loading and item UI
- Offload icon decoding to the UI layer using asynchronous loading with
LaunchedEffect- Add shimmer placeholder effect for avatars while loading
- Simplify message preview text generation in
Handlers by removing emoji-specific truncation logic- Add fade-in animations to the chat list
- Enforce single-line limit with ellipsis for chat subtitles
- Switch
LoadChats to use Dispatchers.IOOptimize icon caching and rounded corner logic
- Store pre-rounded bitmaps in
Handlers.icons to avoid re-processing on every retrieval.- Update the cache retrieval logic to save and use the rounded version directly.
- Add
clip(RoundedCornerShape) modifier to the Image composable for consistent visual styling.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:
18f5db0: Enhance MongoDB integration and streamline TCPServer
- Removed
- Added unique, case-insensitive index creation for
- Introduced case-insensitive collation for MongoDB operations.
- Refactored
- Replaced hardcoded MongoDB connection string with
- Configured
- Simplified server initialization and removed redundant code.
- Removed
- Adjusted formatting and fixed structural issues in
18f5db0: Enhance MongoDB integration and streamline TCPServer
- Removed
MongoDB.Driver.Core dependency from ComuServer.csproj.- Added unique, case-insensitive index creation for
username in the account collection.- Introduced case-insensitive collation for MongoDB operations.
- Refactored
GetIdByName to use aggregation with collation.- Replaced hardcoded MongoDB connection string with
MongoClientSettings.- Configured
ClusterConfigurator for MongoDB command logging.- Simplified server initialization and removed redundant code.
- Removed
GetOnlineDevices method.- Adjusted formatting and fixed structural issues in
TCPServer.cs. by NikkaGames🔨 1 new commit to ComuServer:main:
c7f699a: Refactor MongoClient logic and improve
Refactored MongoClient initialization to use a new
variable for determining the constructor. Updated
retrieval logic to handle deleted messages by checking the
default
c7f699a: Refactor MongoClient logic and improve
lastm handlingRefactored MongoClient initialization to use a new
mongoDbgvariable for determining the constructor. Updated
lastmretrieval logic to handle deleted messages by checking the
isdel field and setting appropriate values. Simplified thedefault
lastm value in the catch block for clarity. by NikkaGames🔨 1 new commit to ComuCompose:master:
ea7506c: Refactor profile icon loading and optimize message parsing
- Implement asynchronous loading for user and chat icons with caching, shimmer placeholders, and fade animations in
- Update
- Refactor message parsing logic to use dynamic delimiter indexing instead of fixed substrings in
- Remove blocking retry loops for chat data retrieval and optimize notification preview generation.
- Remove underline styling from URL annotations and adjust color handling in
Signed-off-by: NikkaGames <[email protected]> by NikkaGames
ea7506c: Refactor profile icon loading and optimize message parsing
- Implement asynchronous loading for user and chat icons with caching, shimmer placeholders, and fade animations in
MainActivity and ChatActivity.- Update
avgChatColor to use mutable state for dynamic UI theming based on icon colors.- Refactor message parsing logic to use dynamic delimiter indexing instead of fixed substrings in
Handlers and ComuFirebaseService.- Remove blocking retry loops for chat data retrieval and optimize notification preview generation.
- Remove underline styling from URL annotations and adjust color handling in
ProfileActivity.Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:
a92d73b: Add SetName method and integrate with SetBio handling
A new private method
The
These changes enhance functionality by enabling username management while maintaining data integrity and uniqueness. by NikkaGames
a92d73b: Add SetName method and integrate with SetBio handling
A new private method
SetName was added to the TCPServer class to validate and update usernames in the account MongoDB collection. It ensures usernames are unique, non-null, and properly formatted. The method returns true on successful updates and false otherwise.The
HandleUserSetBioAsync method was updated to call SetName, allowing it to handle username updates alongside bio updates. Appropriate client responses are sent based on the success or failure of the SetName operation.These changes enhance functionality by enabling username management while maintaining data integrity and uniqueness. by NikkaGames
🔨 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