Commits by Nikka
9 subscribers
164 links
Owned by @NikkaGameS
Download Telegram
🔨 1 new commit to ComuServer:main:

2cab26f: Notify target client about incoming media message from File Server, directly. by NikkaGames
🔨 1 new commit to ComuCompose:master:

65133a0: Implement media saving, fix image rotation, and update permissions

- Add saveToGallery functionality in Handlers to download and save images to MediaStore.
- Integrate "Save to gallery" option in ChatActivity`'s `OptionsBottomSheet.
- Fix image orientation issues by normalizing EXIF data before upload in Utils and Handlers.
- Update AndroidManifest.xml permissions to support Android 13+ (replace legacy storage permissions with READ_MEDIA_*).
- Refactor SocketService to wait for connection readiness (waitUntilReady) before sending messages.
- Correct isOnline logic in Utils and update reconnection state handling in Handlers.
- Optimize upload event handlers by removing unnecessary main thread posting.
- Adjust message options menu to conditionally show Copy, Save, and Delete actions based on message type and ownership.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

4559e16: Implement CallForegroundService and image download progress tracking

- Create CallForegroundService to handle incoming call notifications using NotificationCompat.CallStyle and full-screen intents.
- Update CallActivity, Handlers, and CallActionReceiver to manage the lifecycle of the new foreground service instead of raw notifications.
- Configure the "calls" notification channel with ringtone, vibration, and DND bypass settings in Utils.
- Implement ProgressInterceptor in ComuImageLoader to track and expose image download progress.
- Bind image loading progress to the UI in ChatActivity.
- Update Singleton to use lateinit for context and introduce googleAuth state.
- Add checks in SocketService to stop the service if unauthenticated and handle reconnection logic.
- Register the new service and update permission attributes in AndroidManifest.xml.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

1749d40: Replace CallForegroundService with direct NotificationManager usage

- Delete CallForegroundService.kt and remove its declaration from AndroidManifest.xml.
- Move incoming call notification construction logic to Handlers.kt as buildIncomingCall.
- Update handleCall to display notifications using NotificationManagerCompat instead of starting a foreground service.
- Refactor call state event handlers (EVENT_CALL_REJECTED, EVENT_CALL_ENDED, etc.) in Handlers.kt and CallActionReceiver to cancel notifications by ID directly.
- Update CallActivity to remove service start/stop logic and use notification cancellation.
- Pass context to handleCall in ComuFirebaseService.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:

619743b: Per-device TCP/FCM delivery: prevent duplicate push and keep multi-device state consistent

Route outbound events per device: TCP to authenticated sessions, FCM only to devices without TCP

Update all existing FCM fallback paths to use device-level online/offline filtering (msg.send, SendMessageAsync, user.pictureup, call.incoming)

Add callee-side FCM delivery for call.taken, call.rejected, call.ended, call.reset when the target device is TCP-offline

Preserve existing behavior for all other server logic; only adjust delivery selection logic by NikkaGames
🔨 1 new commit to ComuCompose:master:

b91adef: Refactor permissions, token usage, and call logic

- Implement coroutine-based permission wrappers in Utils and enforce Audio permission before calls
- Remove Singleton.rpk and standardize token retrieval across activities and services
- Handle additional call events (ended, rejected, taken) in ComuFirebaseService
- Dispatch socket message sending to handlerScope
- Optimize LoginActivity startup routing and MainActivity back press handling

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:

1ba13c6: Persistence: one document per (uid, device) by upserting token/ts instead of inserting on every reconnect by NikkaGames
🔨 1 new commit to ComuCompose:master:

af87380: Enable multiple image selection and improve handler threading

- Update image picker to allow selecting up to 20 items in ChatActivity
- Implement retry logic with backoff and cache busting for failed image loads
- Ensure socket event handlers (status, upload progress) execute on the main thread
- Update call rejection API to include X-Uid, X-Token, and X-Device headers
- Remove legacy incoming call notification logic from Handlers
- Initialize LoginActivity UI content immediately to prevent startup delay

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

834825c: Implement interactive full-screen media viewer

- Add FullscreenMediaOverlay composable supporting pinch-to-zoom, pan, and vertical drag-to-dismiss gestures.
- Implement animated transitions expanding media from chat thumbnails to the full viewport.
- Add "Save to Gallery" functionality within the media viewer toolbar.
- Update Handlers.kt to increase the maximum image scaling size limit from 700mp to 1mp.
- Add logic to auto-scroll to the latest message when an upload completes.
- Simplify context retrieval logic for message drafts.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

6cf5b28: Implement photo replies and improve media viewer interactions

ChatActivity
- Implement rendering for photo replies (photo: prefix), including dynamic aspect ratio calculation, loading indicators, and retry logic.
- Update media viewer behavior: single tap now toggles the top app bar with an animation instead of closing the viewer.
- Move saveToGallery operations to Dispatchers.IO to prevent blocking the UI.
- Add animation for blur radius transitions.

Handlers
- Prevent duplicate chat items from being added by checking if the path already exists.
- Ensure updates to MainActivity.items are posted to the main thread.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

7873422: Implement custom call audio and scroll-to-reply features

- Add DelayedLooperSound in Utils to handle looping ringtones and audio routing (Speaker/Earpiece).
- update Handlers and CallActivity to trigger sound playback and cessation based on call states (Outgoing, Incoming, Active, Ended).
- Replace default system sounds with custom resources for calls and notifications; update notification channel configurations.
- specific keep-alive logic in ComuFirebaseService and Handlers to monitor incoming call validity.
- Implement scroll-to-reply functionality in ChatActivity: clicking a reply preview now scrolls to the original message.
- Add a pulse highlight animation for messages targeted by the scroll-to-reply action.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

18915b3: Add new audio resources for call notifications and ringtones

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

75e8715: Generate a deterministic GUID from file content for image uploads

A new utility function guidFromUri has been added to Utils.kt which calculates a UUID based on the SHA-256 hash of the file content at a given URI. This ensures that the same file results in the same GUID.

This logic is applied in ProfileActivity and ChatActivity when picking images: instead of generating a random UUID immediately, the app now attempts to derive the GUID from the file content first.

Additionally, Handlers.uploadImage now accepts a randGuid parameter, which is passed as a new header X-Upload-Randguid. In ChatActivity, the message ID for photo messages is updated to a composite format (guid:randGuid) to distinguish identical images sent as separate messages while maintaining the content-based GUID for the upload itself.

Specific changes:
* Utils.kt: Added guidFromUri to generate content-based UUIDs.
* ProfileActivity.kt: Use guidFromUri for profile picture uploads.
* Handlers.kt: Update uploadImage signature to accept randGuid and send X-Upload-Randguid header.
* ChatActivity.kt: Use guidFromUri for image messages; generate a separate randGuid for the message ID composite to allow re-sending identical images. Update message handling to parse the composite ID.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:

cd9d5f9: Prevent media content duplication by NikkaGames
🔨 1 new commit to ComuCompose:master:

c79459d: Implement horizontal swipe navigation for expanded media

- Add logic to extract distinct media GUIDs from chat messages.
- Update gesture detector to distinguish between vertical dismiss and horizontal paging.
- Add animation logic for sliding transitions between images.
- Implement openGuid to load adjacent media without closing the viewer.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

80e03ee: Fix message reply scrolling and optimize profile update logic

* ChatActivity: Update the logic for finding a replied-to message. Instead of an exact match (==), check if the message ID contains the replyGuid, and use the found message's ID for highlighting. This improves the reliability of scrolling to a specific message.
* ProfileActivity: Refactor the conditional check for showing the save button. Combine logic to ensure the name or bio has changed and that the name meets validation requirements (not empty, length >= 4) in a cleaner expression.

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuCompose:master:

ce676c7: Add support for video and GIF messages

- Implement video uploading and thumbnail generation logic
- Integrate ExoPlayer for inline and fullscreen media playback
- Add GIF decoding support to Coil configuration
- Update gallery saving logic to handle video and GIF types
- Add Media3 and Coil GIF dependencies

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:

627382f: Media additions
* Implement GIF upload support
* Implement Video upload support by NikkaGames
🔨 1 new commit to ComuServer:main:

92f9821: Increase max length for chat media uploads. by NikkaGames
🔨 1 new commit to ComuCompose:master:

e032bfe: Implement video transcoding and caching mechanism

- Add Media3 Transformer to re-encode and compress videos before upload
- Introduce disk caching for video playback and thumbnails using SimpleCache
- Update upload logic to handle transcoded sources and improve progress reporting
- Persist video thumbnails and store aspect ratios for smoother UI rendering
- Refactor video player and thumbnail extraction to use cached data sources
- Adjust content scaling for avatars and icons to Fit
- Update Compose, Firebase, and Media3 dependencies

Signed-off-by: NikkaGames <[email protected]> by NikkaGames
🔨 1 new commit to ComuServer:main:

726957c: Refactor chat media upload/download logic and implement chat read status for every participant. by NikkaGames