Commits by Nikka
9 subscribers
164 links
Owned by @NikkaGameS
Download Telegram
🔨 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
🔨 1 new commit to ComuCompose:master:

c1244f5: Implement unread message UI and logic updates

- Add visual indicators (dot, bold text) for unread chats in main list
- Format media message previews (Video, Photo, GIF) to be user-friendly
- Sync read status updates across Handlers and Activities
- Add blur and scale animations to ProfileActivity editor
- Move video thumbnail storage to cache directory
- Prevent manual input of internal media prefixes (sticker, photo, etc.)

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

70cb4c5: Refactor video thumbnail generation and optimize chat list sorting

- Handlers: Remove cacheRemoteVideoThumb and primeUploadState logic.
- ChatActivity: Re-implement video thumbnail extraction using a localized ExoPlayer with a custom DefaultLoadControl to minimize buffering.
- ChatActivity: Add logic to capture frames via TextureView, calculate aspect ratios from onVideoSizeChanged, and persist scaled bitmaps.
- ChatActivity: Ensure aggressive player cleanup (stop, clearMediaItems, release) after frame capture or playback errors.
- ChatActivity: Update inline video player to consistently use photoGuid as the custom cache key.
- ChatActivity: Change haptic feedback to LongPress when detecting and clearing restricted media prefixes.
- MainActivity: Optimize chat list filtering by replacing custom sorting with sortedByDescending and simplifying derivedStateOf logic.

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

380e11f: Fix per-device isread lookup by NikkaGames
🔨 1 new commit to ELFLoaderARM:zygisk:

87a48b5: Refactor ELF reloc. and fix array init crash by NikkaGames