Giter Site home page Giter Site logo

tgx-android / telegram-x Goto Github PK

View Code? Open in Web Editor NEW
3.0K 3.0K 451.0 36.58 MB

The main repository of Telegram X — official alternative Telegram client for Android.

Home Page: https://play.google.com/store/apps/details?id=org.thunderdog.challegram

License: GNU General Public License v3.0

Kotlin 1.29% CMake 1.38% C++ 0.52% C 0.29% Java 96.36% Shell 0.16% Batchfile 0.01%
android telegram telegram-x

telegram-x's Introduction

Telegram X — a slick experimental Telegram client based on TDLib.

Telegram X

This is the complete source code and the build instructions for the official alternative Android client for the Telegram messenger, based on the Telegram API and the MTProto secure protocol via TDLib.

Other sources

Build instructions

Prerequisites

  • At least 5,34GB of free disk space: 487,10MB for source codes and around 4,85GB for files generated after building all variants
  • 4GB of RAM
  • macOS or Linux-based operating system. Windows platform is supported by using MSYS (e.g., Git Bash).

macOS

  • Homebrew
  • git with LFS, wget and sed: $ brew install git git-lfs wget gsed && git lfs install

Ubuntu

  • git with LFS: # apt install git git-lfs
  • Run $ git lfs install for the current user, if you didn't have git-lfs previously installed

Windows

  • Shell with git, wget, and make utilities:
    • MSYS: $ pacman -S make git mingw-w64-x86_64-git-lfs
    • Git Bash:
      1. Download wget, unzip wget.exe and move to your Git\mingw64\bin\
      2. Download make, unzip and copy the contents to your Git\mingw64\ merging the folders, but do NOT overwrite any existing files
  • Run $ git lfs install for the current user, if you didn't have git lfs previously initialized

Building

  1. $ git clone --recursive --depth=1 --shallow-submodules https://github.com/TGX-Android/Telegram-X tgx — clone Telegram X with submodules
  2. In case you forgot the --recursive flag, cd into tgx directory and: $ git submodule init && git submodule update --init --recursive --depth=1
  3. Create keystore.properties file outside of source tree with the following properties:
    keystore.file: absolute path to the keystore file
    keystore.password: password for the keystore
    key.alias: key alias that will be used to sign the app
    key.password: key password.
    Warning: keep this file safe and make sure nobody, except you, has access to it. For production builds one could use a separate user with home folder encryption to avoid harm from physical theft
  4. $ cd tgx
  5. Run $ scripts/./setup.sh and follow up the instructions
  6. If you specified package name that's different from the one Telegram X uses, setup Firebase and replace google-services.json with the one that's suitable for the app.id you need
  7. Now you can open the project using Android Studio or build manually from the command line: ./gradlew assembleUniversalRelease.

Available flavors

  • arm64: arm64-v8a build with minSdkVersion set to 21 (Lollipop)
  • arm32: armeabi-v7a build
  • x64: x86_64 build with minSdkVersion set to 21 (Lollipop)
  • x86: x86 build
  • universal: universal build that includes native bundles for all platforms.

Quick setup for development

If you are developing a contribution to the project, you may follow the simpler building steps:

  1. $ git clone --recursive https://github.com/TGX-Android/Telegram-X tgx
  2. $ cd tgx
  3. Obtain Telegram API credentials
  4. Create local.properties file in the root project folder using any text editor:
    # Location where you have Android SDK installed
    sdk.dir=YOUR_ANDROID_SDK_FOLDER
    # Telegram API credentials obtained at previous step
    telegram.api_id=YOUR_TELEGRAM_API_ID
    telegram.api_hash=YOUR_TELEGRAM_API_HASH
  5. Run $ scripts/./setup.sh — this will download required Android SDK packages and build native dependencies that aren't part of project's CMakeLists.txt
  6. Open and build project via Android Studio or by using one of ./gradlew assemble commands in terminal

After submitting a pull request and its initial review, special build including your contribution will be published in @tgx_prs channel, where it can be tested by the community. In case any issues or bugs found, you may push more commits to an existing PR that address them and request to publish a newer build by using comments section of pull request or in @tgx_dev chat.

Reproducing public builds

In order to verify that there is no additional source code injected inside official APKs, you must use Ubuntu 21.04 for builds published before 26th May 2023 or Ubuntu 22.04.2 LTS for any newer releases, and comply with the following requirements:

  1. Create user called vk with the home directory located at /home/vk
  2. Clone tgx repository to /home/vk/tgx
  3. Check out the specific commit you want to verify
  4. In rare cases of builds that include unmerged pull requests, you must follow actions performed by Publisher's fetchPr and squashPr tasks
  5. cd into tgx folder and install dependencies: # apt install $(cat reproducible-builds/dependencies.txt)
  6. Follow up the build instruction from the previous section
  7. Run $ apkanalyzer apk compare --different-only <remote-apk> <reproduced-apk>
  8. If only signature files and metadata differ, build reproduction is successful.

In future build reproduction might become easier. Here's a list of related PR-welcome TODOs:

  • Project path must not affect the resulting .so files, so user & project location requirement could be removed
  • When building native binaries on macOS, .comment ELF section differs from the one built with Linux version of NDK. It must be removed or made deterministic without any side-effects like breaking native-debug-symbols.zip (or should be reported to NDK team?)
  • Checksums of cold APK builds always differ, even though the same keystore applied and generated inner APK contents do not differ. Real cause must be investigated and fixed, if possible.
    To generate cold build, invoke $ scripts/./reset.sh and $ scripts/./setup.sh --skip-sdk-setup.
    Warning: this will also reset changes inside some of the submodules (ffmpeg, libvpx, webp, opus and ExoPlayer)
  • Move local pull requests squash-merging from Publisher to some script inside this repository to make reproduction of builds that include them easier.

PS: Docker is not considered an option, as it just hides away these tasks, and requires that all published APKs must be built using it.

Verifying side-loaded APKs

If you downloaded Telegram X APK from somewhere and would like to simply verify whether it's an original APK without any injected malicious source code, you need to get checksum (SHA-256, SHA-1 or MD5) of the downloaded APK file and find whether it corresponds to any known Telegram X version.

In order to obtain SHA-256 of the APK:

  • $ sha256sum <path-to-apk> on Ubuntu
  • $ shasum -a 256 <path-to-apk> on macOS

Once obtained, there are three ways to find out the commit for the specific checksum:

  • Sending checksum to @tgx_bot
  • Searching for a checksum in @tgx_log. You can do so without need in installing any Telegram client by using this URL format: https://t.me/s/tgx_log?q={checksum} (click to see in action). Note: unpublished builds cannot be verified this way.

License

Telegram X is licensed under the terms of the GNU General Public License v3.0.

For more information, see LICENSE file.

License of components and third-party dependencies it relies on might differ, check LICENSE file in the corresponding folder.

Third-party dependencies

List of third-party components used in Telegram X can be found here. Additionally you can check the specific commit of the third-party component used, for example, here and here.

Contributions

Telegram X welcomes contributions. Check out pull request template and guide for contributors to learn more about Telegram X internals before creating the first pull request.

If you are a regular user and experience a problem with Telegram X, the best place to look for solution is Telegram X chat — a community with over 4 thousand members. Please do not use this repository to ask questions: if you have general issue with Telegram, refer to FAQ or contact Telegram Support.

telegram-x's People

Contributors

arseny271 avatar calledluca avatar encryptedforever avatar grigorenkopv avatar handymenny avatar itaysonlab avatar jplie avatar khoben avatar maksym-moroz avatar nikita-toropov avatar null-nick avatar tgx-server avatar the-blank-x avatar vkryl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

telegram-x's Issues

Implement channel post commentary view

Currently Telegram X doesn't commentary threads

I don't know how It could be implemented to be honest, all i have is an idea and possible design (that I can't upload right now)

It's not currently possible to comment on a post, without joining linked group, which is not only unpleasant (threads overlap, requires having many joined groups + muting them) but also sometimes impossible (some may force linked group to be comment-only by using bots to kick everyone).

This issue can be used to track the progress on this feature and any potential implementation discussion.

Unfortunately I can't implement this by myself, i just want this feature request to be tracked and possibly implemented soon.

Wrong media file being send

Sometimes, the media file, in my case, a picture, isn't saved. However, the last one of the type is still being got from storage and send.

Running version 0.24.9.1530-arm64-v8a on Android 12.

IO error: lock /data/user/0/org.thunderdog.challegram/files/pmc/db/LOCK: already held by process

Crash while trying to open settings database
59,053 reports, 11,542 impacted users as of 27th March 2020.

AssertionError: Java_org_thunderdog_challegram_N_dbOpen:94: IO error: lock /data/user/0/org.thunderdog.challegram/files/pmc/db/LOCK: already held by process, versionCode: 1314020

at org.drinkmore.Tracer$b.run(SourceFile
  at java.lang.Thread.run (Thread.java:929)

Such issue could happen if Settings.instance() is referenced somewhere inside Settings constructor, i.e. accidental usage of custom log system instead of android.util.Log, etc. But could not find anything promising.

Another potential cause is that somehow Settings object gets killed, but finalize() which causes database being left open.

no push notifications

redmi 9 pro plus
android 12
tgx 0.25.0.1555-arm64-v8a from google play

With the same settings, the regular telegram app works without any problems with notifications
Settings: disabled background traffic transfer, disabled work in the background mode

Sending Self-Destructing Media results in blury reveal

Issue Description

  • When sending a self destructing picture via cloud chat official telegram users wont get a clear picture on reveal.
  • When sending a self destructing video via cloud chat official telegram users wont be able to see the playing video on reveal.

Result

  • The image is blured when sending self desctructing image
  • The first frame of a video that was send via self destruct is show blurred but the video is not playing. Its just a static blurred image.

Expected Result

  • The revealed image is not blury and visible as originaly send
  • The revealed video should play as originally send

How to reproduce

  1. Send self destructing image or video from gallery
  2. Receive self desctructing image/vide via another phone who has official telegram installed
  3. Open via hold and press
  4. See blurry image for an image
  5. See blurry first frame for a send video

Requirements on sender side

  • Android phone with latest Firmware
  • Telegram X version 0.24.9.1530-arm64-v8a

Default reaction in swipe action setting

Currently there's only Share and Reply, but no Default Reaction (👍) that appears on swipes in groups and own channels.

Also there's no way to set default reaction.

IMG_20220914_160344.jpg

The first keyframe in compressed videos is becoming black for many videos on some Android builds

When compressing videos the first keyframe is black. This results in weird video beginning on both sides until the second keyframe is viewed.

Reproduced on:

  • OxygenOS (OnePlus 5T, but should be any device)
  • MIUI 12.5 (Xiaomi RN 7, Android 10) — https://t.me/tgx_ru/90004 video sample

Plan on how to resolve this issue:

  1. Investigate the true cause
  2. Try to find the workaround on Telegram X side
  3. If previous step didn't work, find a workaround in Transcoder & submit it as PR to the original repository with a well-detailed description
  4. If previous step didn't work, submit a well-detailed report to OxygenOS team.
  5. If previous step didn't work, just let it be as is.

0.25.0.1559-x86

The guide below provides the flow for creating a perfect issue report to the Telegram X Repository. Before submitting, ensure that it complies with the following principles.

Your report must be:

  • Appropriate. Only bugs can be included.
  • Structured. Stick to the following path:
  1. Use 'Copy Report Details' from the app's Settings;
  2. Include the public message link for reports involving media;
  3. Attach a screenshot or video that clearly represents the issue in your report. Kindly change the app's language to English before recording those;
  4. A brief description of Expected and Observed behavior must be provided;
  5. APK source is included – Google Play Store or another app market, Telegram Channels, etc.
  • English is the only language accepted.

Your issue must not be a:

  • Feature Request. Designers are welcome to propose properly crafted feature requests via Telegram Designers or share ideas in Telegram X Developers, given they include finalized mockups and match the overall app quality.
  • UX Preference. We won't consider those as issues. If you are a developer and believe some change would improve user experience on all devices, consider submitting a pull request.

All these mentioned above will be declined.

A note on device-specific issues:

Specific issues you can reproduce on your end can be caused by the device itself and be device-dependent. Such issues do not mean to occur for everyone. Please be patient with those – fixing such issues can be time-consuming.

Good luck, and thanks for the contribution!

Bad experience with full screen media

Tgx UI doesn't play nicely with the status bar, notch and navigation bar, and this becomes really annoying when playing full screen media:
Screenshot_20220617-105830_1

It'd be nice to add an option to show/hide the notch in full screen media:
Screenshot_20220617-105857_1

Telegram X 0.24.9.1530-arm64-v8a
Nokia 5.4
Android 11

Telegram x unaccessible for blind users

Hello. I blind user and android developer. Telegram x almost unaccessible for blind users. Do you plan improve accessibility of telegram x,or it not interesting for you? Official telegram for android accessible for us,blind users,though it have accessibility problems too,but telegram x almost fully unaccessible for blind. I can only authorize in it,and not anymore.

Rework native object management to use PhantomReference

There're some java objects in Telegram X that are designed in a pretty common way (example without thread safety):

final class Example {
  private int mNativeHandle;
  
  public Example () {
    mNativeHandle = newNativeObject();
  }
  
  public void release () {
      if (mNativeHandle != 0) {
          nativeRelase(mNativeHandle);
          mNativeHandle = 0;
      }
  }
  
  @Override
  protected void finalize () throws Throwable {
    try {
      release();
    } finally {
      super.finalize();
    }
  }
  
  private native static long newNativeObject ();
  private native static void nativeRelease (long ptr);
}

However, at least according to this Google I/O talk, such objects have to be reworked.

Fingerprint unlock is requested twice.

redmi 9 pro plus
android 12
tgx 0.25.0.1555-arm64-v8a from google play

Displays the numeric keypad for the pin code in the background Telegram X and the fingerprint request.
Displays an open chat in the background and prompts for fingerprint again.

Support table block in Instant Views

Currently Telegram X doesn't support TdApi.PageBlockTable, which makes some IVs unsupported. It is the only remaining IV block type that is unsupported by the app.

It could be implemented by using algorithms used in browser engines, or by relying on some JetPack/third-party existing component for tables, but as of the moment when this issue created it seems all ot them do not provide easy support for colspan and rowspan, especially when they are invalid.

TdApi.PageBlockTable can be frequently found in Wikipedia IVs, such as for this article in Commercial telegraphy section.

This issue can be used to track the progress on this feature and any potential implementation discussion.

This issue is PR-welcome as long as there's no assignee who's working on it.

Big animated custom emoji aren't looped in chat

I'm using latest beta version from Google Play.

Current behaviour: If old settings like "Animated Emoji" and "Loop Animated Stickers" are on, in chat view new premium animated emoji stop playing and need to be tapped to loop one more time. It occurs only messages that contain one emoji with no text, so emoji became big emoji.

Expected behaviour: in chat view big animated (custom) emoji are automatically looped.

Fingerprint is useless on Report

Hey,
I seriously wonder why you include the hex dump of the Fingerprint when an user copy the Report Details
when people share it (either on support group or here), it may lead to security issues
I guess you don't need it, even for testing the app/reproduce issues :) (it would barely come from a specific fingerprint)
That said, have a good day ❤️

Feature request Lower background media player volume when play the voice message

The guide below provides the flow for creating a perfect issue report to the Telegram X Repository. Before submitting, ensure that it complies with the following principles.

Your report must be:

  • Appropriate. Only bugs can be included.
  • Structured. Stick to the following path:
  1. Use 'Copy Report Details' from the app's Settings;
  2. Include the public message link for reports involving media;
  3. Attach a screenshot or video that clearly represents the issue in your report. Kindly change the app's language to English before recording those;
  4. A brief description of Expected and Observed behavior must be provided;
  5. APK source is included – Google Play Store or another app market, Telegram Channels, etc.
  • English is the only language accepted.

Your issue must not be a:

  • Feature Request. Designers are welcome to propose properly crafted feature requests via Telegram Designers or share ideas in Telegram X Developers, given they include finalized mockups and match the overall app quality.
  • UX Preference. We won't consider those as issues. If you are a developer and believe some change would improve user experience on all devices, consider submitting a pull request.

All these mentioned above will be declined.

A note on device-specific issues:

Specific issues you can reproduce on your end can be caused by the device itself and be device-dependent. Such issues do not mean to occur for everyone. Please be patient with those – fixing such issues can be time-consuming.

Good luck, and thanks for the contribution!

Needs passcode

The guide below provides the flow for creating a perfect issue report to the Telegram X Repository. Before submitting, ensure that it complies with the following principles.

Your report must be:

  • Appropriate. Only bugs can be included.
  • Structured. Stick to the following path:
  1. Use 'Copy Report Details' from the app's Settings;
  2. Include the public message link for reports involving media;
  3. Attach a screenshot or video that clearly represents the issue in your report. Kindly change the app's language to English before recording those;
  4. A brief description of Expected and Observed behavior must be provided;
  5. APK source is included – Google Play Store or another app market, Telegram Channels, etc.
  • English is the only language accepted.

Your issue must not be a:

  • Feature Request. Designers are welcome to propose properly crafted feature requests via Telegram Designers or share ideas in Telegram X Developers, given they include finalized mockups and match the overall app quality.
  • UX Preference. We won't consider those as issues. If you are a developer and believe some change would improve user experience on all devices, consider submitting a pull request.

All these mentioned above will be declined.

A note on device-specific issues:

Specific issues you can reproduce on your end can be caused by the device itself and be device-dependent. Such issues do not mean to occur for everyone. Please be patient with those – fixing such issues can be time-consuming.

Good luck, and thanks for the contribution!

Specific video cannot be played using any built-in player

There's a video (MP4 GIF) that doesn't play both as GIF inside a chat (via GifReceiver) and when opening it (via ExoPlayer).

Checked on: 0.24.0.1441 642884f
Device: OnePlus 5T (A5010)
Android Version: Android P (28)
Link for the file: https://t.me/tgx_issues/1

Log:

Unable to play video
    com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.F4001E, -1, null, [550, 550, 30.0], [-1, -1]), format_supported=NO_EXCEEDS_CAPABILITIES
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:558)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:193)
        at android.os.HandlerThread.run(HandlerThread.java:65)
     Caused by: com.google.android.exoplayer2.video.MediaCodecVideoDecoderException: Decoder failed: OMX.qcom.video.decoder.avc
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1410)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:844)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:978)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:482)
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 
     Caused by: java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueOutputBuffer(Native Method)
        at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2707)
        at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:105)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1823)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:823)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:978) 
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:482) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:193) 
        at android.os.HandlerThread.run(HandlerThread.java:65) 

Quick reaction scroll is counterintuitive

We're all used to the "drum shaft" scroll view, where swiping up raises the scroll view up, like the time picker on the iPhone.
But it scrolls opposite side for the current quick reactions implementation.
Please add an option to invert scroll, or just invert your inverted scroll :/

Migrate from libtgvoip to tgcalls

libtgvoip is obsolete is no longer used in other clients. It must be replaced with tgcalls.

Should be designed as a completely separate submodule similar to x-core, tdlib and other ones located in this folder and included in this project as a git submodule.

Support building Telegram X on Windows platform

Currently building Telegram X requires macOS or Linux-based operating system. Once building on Windows platform will be officially supported, the requirement in README could be modified.

java.lang.OutOfMemoryError: trying to allocate 2048 * 10 array of bytes while recording video message

5,475 reports, 3,490 impacted users as of 27th March 2020.

java.lang.OutOfMemoryError: 
  at org.thunderdog.challegram.player.RoundVideoRecorder$AudioBufferInfo.<init> (RoundVideoRecorder.java:865)
  at org.thunderdog.challegram.player.RoundVideoRecorder$AudioBufferInfo.<init> (RoundVideoRecorder.java:865)
  at org.thunderdog.challegram.player.RoundVideoRecorder$VideoRecorder$1.run (RoundVideoRecorder.java:955)
  at java.lang.Thread.run (Thread.java:764)

Feature request: option to disable reactions

Since last update Telegram X introduced reactions to messages similar to official client.

It would be nice if reactions all together could be disabled in UI settings. I used telegram X for years and never needed them and now I find them annoying.

Notifications only appear when i open an application

I receive my notifications from chats only when i open an app. I tried another network connection (4g, wifi-s), but issue is the same. Then to check i've downloaded official telegram, and notifs from it works fine. All configs in my phone is default (no priority for notifs). When the app is opened i receive notifs, when i close it (aka kill app), no notifs..Strange issue, it wasn't there before...

  1. Use 'Copy Report Details' from the app's Settings
    Telegram X 0.24.9.1530-arm64-v8a (a0dc1b0)
    Android S(31)
    samsung SM-S901U1 (SP1A.210812.016.S901U1UEU2AVG8)

  2. A brief description of Expected and Observed behavior must be provided;
    Expected - notifications are correctly showed on notif bar when app is closed
    Observed - no notifs from chats

  3. APK source is included – Google Play Store or another app market, Telegram Channels, etc.
    Google Play Store

The searching code is slow and leaves possible files and shows only some .

The guide below provides the flow for creating a perfect issue report to the Telegram X Repository. Before submitting, ensure that it complies with the following principles.

Your report must be:

  • Appropriate. Only bugs can be included.
  • Structured. Stick to the following path:
  1. Use 'Copy Report Details' from the app's Settings;
  2. Include the public message link for reports involving media;
  3. Attach a screenshot or video that clearly represents the issue in your report. Kindly change the app's language to English before recording those;
  4. A brief description of Expected and Observed behavior must be provided;
  5. APK source is included – Google Play Store or another app market, Telegram Channels, etc.
  • English is the only language accepted.

Your issue must not be a:

  • Feature Request. Designers are welcome to propose properly crafted feature requests via Telegram Designers or share ideas in Telegram X Developers, given they include finalized mockups and match the overall app quality.
  • UX Preference. We won't consider those as issues. If you are a developer and believe some change would improve user experience on all devices, consider submitting a pull request.

All these mentioned above will be declined.

A note on device-specific issues:

Specific issues you can reproduce on your end can be caused by the device itself and be device-dependent. Such issues do not mean to occur for everyone. Please be patient with those – fixing such issues can be time-consuming.

Good luck, and thanks for the contribution!

🏆 Telegram X Android Competition: Round 1. Reactions

🏆 Telegram X Android Competition: Round 1. Reactions

Prize fund for Round 1: $25,000.
Deadline: 23:59 on July 2nd (Dubai time).
Who can participate: Everyone.
Results announcement: July 12th, 2022.

The Task is to implement message reactions identical to the demo materials of TGX Reactions.zip attached below, including all the animations, layouts, and other visual effects:

  • You should use the Telegram X code (https://github.com/TGX-Android/Telegram-X) available on GitHub.
  • You must avoid using existing codebase of the same functionality from other Telegram clients.
  • Final result must be submitted as the ready-to-merge pull request to this repository on the deadline date.

Your pull request should support:

  1. Sending a reaction to each message type in private chats, groups, and channels. When holding down an emoji in the reactions panel, the app is expected to display a full-screen animation effect once the reaction is sent.
  2. Allowing a user to set their preferred Quick Reaction in Settings.
  3. Accessing the list of reacted users in groups in the following ways:
    • Press and hold the specific reaction button for a quick view.
    • Open the 'Reacted' list to show a multi-tab interface, with individual sections for each reaction emoji. Users should be able to switch tabs via a swipe gesture.
  4. Turning message reactions on or off in group and channel management – including the ability for admins to disable and enable individual reaction emoji from the list.
  5. Display an unseen reaction badge both in the chat list and inside the conversation.

Evaluation Criteria:

  1. The overall code quality will be a top priority, aside animations smoothness and overall stability. Make sure to get familiar with the project structure and guide for contributors before getting started. Reactions code should keep in mind possible future use on other screens outside of the task (i.e. placing reactions through shared media).
  2. The implemented features should not impact existing functions, like causing the app to crash when interacting with other features.
  3. Ensure the app is free of major glitches, interface jumps, and severe layout issues.
  4. Your app should run smoothly on a wide range of devices. In the evaluation stage, we will test with several devices, including Samsung Galaxy (A51, S10, S21 Ultra), Xiaomi Redmi Note 8 Pro, and more.
  5. Implementing a clearly better stickers rendering (i.e. less disk space usage, better FPS, less CPU usage) will be considered a major advantage, but only in case of completing all other parts of the task.
  6. Attempts to impersonate someone else's work (i.e. submitting a copy of someone else's pull request) would lead to permanent disqualification from Telegram X contests and any potential reward systems in future.

Submissions:

Contestants will be able to submit their entries to @ContestBot at the end of this round. We will further clarify the submission instructions closer to the deadline.

P.S. For the next stage, we expect to only invite contestants who achieved 🥉 3rd place or higher in this round.


Contents of TGX Reactions.zip:

Designs (41 images)

Reactions 0 0 - Bubbles
Reactions 0 1 - Flat
Reactions 1 0 - Message
Reactions 1 1 - Media
Reactions 1 2 - Sticker
Reactions 1 3 - Rounded Video
Reactions 1 4 - Multiple
Reactions 2 0 - Message
Reactions 2 1 - Media
Reactions 2 2 - Sticker
Reactions 2 3 - Rounded Video
Reactions 2 4 - Multiple
Reactions 3 0 - Reaction bar
Reactions 3 1 - Reaction bar with counter
Reactions 3 2 - Reacted
Reactions 3 3 - Reaction bar with seen counter
Reactions 3 4 - All reacted
Reactions 3 5 - Single reaction
Reactions 3 6 - Expanded
Reactions 3 7 - Seen
Reactions 3 8 - Long pressed on reaction
Reactions 4 0 - Reaction Notification Badge
Reactions 4 1 - Reaction Notification Badge with unread
Reactions 4 2 - Reaction Notification Badge with unread and mention
Reactions 5 0 - Quick Reaction option
Reactions 5 1 - Selection
Reactions 5 2 - Reactions option
Reactions 5 3 - All disabled
Reactions 5 4 - Some enabled
Reactions 5 5 - All enabled
Reactions 6 0 - Big Reactions option
Reactions 6 1 - Selection
Reactions 7 0 - Wide Bubble
Reactions 7 1 - Narrow Bubble
Reactions 7 2 - Bubble with Big Reactions disabled
Reactions 7 3 - Flat with Big Reactions disabled
Reactions 7 4 - Media Bubble
Reactions 7 5 - Sticker and Emoji
Reactions 7 6 - Quick Reaction Bubble
Reactions 7 7 - Quick Reaction Flat
Reactions 7 8 - Chatlist Badge

Videos (5 files)
Bottom.Sheet.with.Reactions.mp4
Quick.Reaction.Swapping.mov
Quick.Reaction.mp4
Reacting.from.Bottom.Sheet.mp4
Reaction.Long.Press.mp4

Secret chats messages not getting delivered to iOS client

Messages from secret chats are not sent. The reciever can see just empty notifications, Only one tickbox is displayed.. It started on 8/13. Not able to screenshot it, because it is a secret chat screen.

Google Play
Telegram X 0.24.9.1530-arm64-v8a (a0dc1b0)
Android S(31)
Sony XQ-AS52 (58.2.A.10.33)

android.app.RemoteServiceException: while trying to manage foreground service

Well-established and the most reported crash. It happens frequently in calls and while playing music, most likely usually without user even noticing.

It seems that is either something is improperly managed by Telegram X, or this crash is coming from some bugged Android versions.

As of 27th March 2020 there were 50,047 reports, 19,633 impacted users.

Saving this issue here in 2021 in case somebody would like to investigate this issue and build a solid conclusion on why this happens.

android.app.RemoteServiceException: 
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1881)
  at android.os.Handler.dispatchMessage (Handler.java:105)
  at android.os.Looper.loop (Looper.java:164)
  at android.app.ActivityThread.main (ActivityThread.java:6942)
  at java.lang.reflect.Method.invoke (Method.java)
  at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)

Can not log into existing account

Hello.
Official Telegram clients have an option to "Send code as SMS" even if you already have another active login session. Telegram X does not seem to offer this option. I tried to log into my existing account via Telegram X, but the app offers only sending the log-in code to another device. The worst part is I do not have other devices with active Telegram sessions for that account.

It would be better if Telegram X allowed to choose which way I would prefer to get verification code. Please add "Send the code via SMS" button or something like that.

[Feature Request] Improve voice message canceling

My friends and I have constantly dealt with accidently deleting messages with how telegram currently handles the send/delete of the message. Could we change the ranges of the slider to make it harder to accidentally delete the message?

I feel if we make it where you need to slide your figure over more it would resolve this issue.

fingerprint operation cancelled

Hey there

after the first attempt to unlock with fingerprint which is successful
I get this "fingerprint operation cancelled" every time after

I should enter my pin and fingerprint won't work until i fully close the app

Telegram X 0.24.11.1550-arm64-v8a (bc07ee0)
PRs: #205 (0678fab)
TDLib: 1.8.4 (tdlib/td@98bfbc9)
Android: 12 (31)
Device: samsung SM-A715F (SP1A.210812.016.A715FXXU8CVC3)
Package: org.thunderdog.challegram
Fingerprint: 66:46:21:34:34:5a:6a:da:c3:c1:d5:ae:a9:ce:f0:42:1b:7c:ab:68

Provide an ability to build FOSS-friendly variant

Telegram X should officially support building FOSS-friendly build type that doesn't rely on any closed-source software. This issue will include a (most likely incomplete) list of things needed to support building and thoughts on how it might be implemented.

  • setup.sh has to accept some argument (e.g. --foss) and pass it through to any other descendant script like build_ffmpeg_impl.sh to make sure that all FOSS-unfriendly software is excluded and some app.foss=true is set inside local.properties file for later use in build scripts
  • Conditionally exclude any FOSS-unfriendly dependencies inside app's build.gradle.kts and set a BuildConfig variable to be able to use it at runtime (e.g. for displaying some indicator that FOSS edition of Telegram X is used)
  • Do some FOSS-friendly map implementation that extends from MapController.java (e.g. OpenStreetMap)
  • Notifications currently heavily rely on Firebase. FOSS edition could display a foreground notification with the current connection status with Telegram servers and force application to be always connected (this foreground notification should be included in the main build too, as it could be useful in non-FOSS builds in cases when Firebase is unavailable).
  • Location-related code should be reworked and abstracted from working with specific API (currently Telegram X uses Google Location Services API for a beautiful pop-up that allows enabling location without needing to go to system settings)

Once FOSS-friendly builds will be supported by Telegram X, they will be included and published by Publisher to provide all verification benefits the default build provides.

Reaction menu isn't disabled for self-destructing media

I don't think I can provide any screenshots, because Telegram X seems to be blocking the screenshots whenever any self-destructing media is present on the screen, even if not in the opened state. So sorry for that.

Actual behavior

The context menu (that appears after tapping on the message) has the row with reaction buttons even if the message in question is a self-destruct photo/video. Pressing on any of the reactions cause the reaction to not go through and a small bubble saying #400: MESSAGE_ID_INVALID appear at the top part of the screen.

Expected behavior

The context menu for self-destruct media doesn't have any reaction buttons.

Report deatils

Telegram X 0.24.10.1539-arm64-v8a (73c3eef)
PRs: #185 (81bd52c)
TDLib: 1.8.4 (tdlib/td@98bfbc9)
Android: Pie (28)
Device: asus ZB602KL (PKQ1.WW_Phone-16.2017.2009.087-20200826)

Telegram X often doesn't send notifications

This is proberly caused by the internal battery saving mode from Xiaomi Devices.
(And from some other manufactors, see Don't Kill my App.
Even when you set the Background Settings to "No Limits" there are still limitations active you can't control.

It allways happen on restart when I haven't startet Telegram X.

On the normal Telegram App I don't have this issue.
This is a long existing problem for me, so I hope someone can fix it. :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.