├── bazel
├── BUILD.bazel
├── psocket
│ ├── WORKSPACE
│ └── BUILD.bazel
├── pthread
│ ├── WORKSPACE
│ └── BUILD.bazel
├── jvm-macros.BUILD
├── libvpx
│ ├── vpx_version.h
│ ├── BUILD.bazel
│ └── vpx_config.mk
├── opus
│ └── BUILD.bazel
├── jvm-toxcore-api.BUILD
├── opus.BUILD
└── tools
│ └── config
│ └── BUILD.bazel
├── .bazelversion
├── core
├── .gitignore
├── src
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ └── kotlin
│ │ │ ├── vo
│ │ │ ├── BUILD.bazel
│ │ │ ├── FriendRequest.kt
│ │ │ ├── PublicKey.kt
│ │ │ ├── User.kt
│ │ │ ├── Message.kt
│ │ │ ├── Contact.kt
│ │ │ └── FileTransfer.kt
│ │ │ ├── repository
│ │ │ ├── BUILD.bazel
│ │ │ ├── FriendRequestRepository.kt
│ │ │ ├── FileTransferRepository.kt
│ │ │ ├── UserRepository.kt
│ │ │ └── MessageRepository.kt
│ │ │ └── db
│ │ │ ├── BUILD.bazel
│ │ │ ├── Database.kt
│ │ │ ├── FriendRequestDao.kt
│ │ │ ├── FileTransferDao.kt
│ │ │ ├── MessageDao.kt
│ │ │ ├── Converters.kt
│ │ │ └── UserDao.kt
│ └── test
│ │ └── kotlin
│ │ └── db
│ │ └── ConvertersTest.kt
└── build.gradle.kts
├── .github
├── FUNDING.yml
└── workflows
│ └── detekt.yaml
├── fastlane
└── metadata
│ └── android
│ ├── ar
│ └── title.txt
│ ├── bg
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── bs
│ ├── title.txt
│ ├── short_description.txt
│ └── full_description.txt
│ ├── de
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── el
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ └── 10.txt
│ └── full_description.txt
│ ├── es
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── et
│ └── title.txt
│ ├── fa
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── fr
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── he
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── hr
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── hu
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ └── 9.txt
│ └── full_description.txt
│ ├── is
│ ├── title.txt
│ ├── short_description.txt
│ └── full_description.txt
│ ├── it
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 9.txt
│ │ └── 13.txt
│ └── full_description.txt
│ ├── lt
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── pl
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── pt
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── ro
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ └── 9.txt
│ └── full_description.txt
│ ├── ru
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── sk
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── sr
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── sv
│ ├── title.txt
│ └── short_description.txt
│ ├── tr
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── tum
│ ├── title.txt
│ ├── short_description.txt
│ └── full_description.txt
│ ├── uk
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── en-US
│ ├── title.txt
│ ├── short_description.txt
│ ├── images
│ │ ├── icon.png
│ │ ├── featureGraphic.png
│ │ └── phoneScreenshots
│ │ │ ├── 1.jpg
│ │ │ └── 2.png
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── hi-IN
│ ├── title.txt
│ └── short_description.txt
│ ├── nb-NO
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── pt-BR
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 14.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ ├── zh-CN
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ │ ├── 12.txt
│ │ ├── 11.txt
│ │ ├── 10.txt
│ │ ├── 13.txt
│ │ └── 9.txt
│ └── full_description.txt
│ └── zh-TW
│ ├── title.txt
│ ├── short_description.txt
│ ├── changelogs
│ ├── 12.txt
│ ├── 14.txt
│ ├── 11.txt
│ ├── 10.txt
│ ├── 13.txt
│ └── 9.txt
│ └── full_description.txt
├── domain
├── .gitignore
└── src
│ ├── main
│ ├── AndroidManifest.xml
│ └── kotlin
│ │ ├── tox
│ │ ├── BootstrapNodeRegistry.kt
│ │ ├── ToxConstants.kt
│ │ ├── SaveOptions.kt
│ │ ├── ToxTypes.kt
│ │ ├── ToxIdValidator.kt
│ │ ├── SaveManager.kt
│ │ └── BootstrapNodeJsonParser.kt
│ │ └── feature
│ │ ├── ContactManager.kt
│ │ └── ExportManager.kt
│ └── test
│ └── kotlin
│ └── tox
│ └── ToxTypesTest.kt
├── atox
├── .gitignore
├── debug.keystore
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── message_divider.xml
│ │ │ │ ├── circle.xml
│ │ │ │ ├── status_background.xml
│ │ │ │ ├── ic_send.xml
│ │ │ │ ├── received_message_bubble.xml
│ │ │ │ ├── sent_message_bubble.xml
│ │ │ │ ├── side_nav_bar_background.xml
│ │ │ │ ├── ic_back.xml
│ │ │ │ ├── disable_ripple_effect.xml
│ │ │ │ ├── gradient_contacts.xml
│ │ │ │ ├── border.xml
│ │ │ │ ├── ic_chat.xml
│ │ │ │ ├── ic_speakerphone.xml
│ │ │ │ ├── ic_mic.xml
│ │ │ │ ├── ic_attach_file.xml
│ │ │ │ ├── ic_not_interested.xml
│ │ │ │ ├── ic_call.xml
│ │ │ │ ├── ic_speakerphone_off.xml
│ │ │ │ ├── ic_call_end.xml
│ │ │ │ ├── ic_mic_off.xml
│ │ │ │ ├── ic_notification.xml
│ │ │ │ ├── ic_launcher_foreground.xml
│ │ │ │ └── ic_qr_code.xml
│ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.png
│ │ │ │ └── ic_launcher_round.png
│ │ │ ├── values
│ │ │ │ ├── integers.xml
│ │ │ │ ├── ic_launcher_background.xml
│ │ │ │ ├── attrs.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ └── colors.xml
│ │ │ ├── xml
│ │ │ │ └── file_paths.xml
│ │ │ ├── menu
│ │ │ │ ├── chat_send_long_press_menu.xml
│ │ │ │ ├── chat_message_context_menu.xml
│ │ │ │ ├── friend_request_context_menu.xml
│ │ │ │ ├── ft_message_context_menu.xml
│ │ │ │ ├── contact_list_context_menu.xml
│ │ │ │ ├── chat_options_menu.xml
│ │ │ │ ├── user_profile_share_id_context_menu.xml
│ │ │ │ └── activity_contact_list_drawer.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ ├── anim
│ │ │ │ ├── fade_in.xml
│ │ │ │ ├── fade_out.xml
│ │ │ │ ├── slide_in_right.xml
│ │ │ │ ├── slide_out_right.xml
│ │ │ │ ├── slide_in_bottom.xml
│ │ │ │ └── slide_out_bottom.xml
│ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ ├── values-v29
│ │ │ │ └── styles.xml
│ │ │ ├── values-night-v29
│ │ │ │ └── styles.xml
│ │ │ ├── layout
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── friend_request_item.xml
│ │ │ │ ├── chat_action_sent.xml
│ │ │ │ ├── chat_action_received.xml
│ │ │ │ ├── chat_message_sent.xml
│ │ │ │ └── chat_message_received.xml
│ │ │ └── values-ur
│ │ │ │ └── strings.xml
│ │ ├── launcher_icon-playstore.png
│ │ └── kotlin
│ │ │ ├── di
│ │ │ ├── AndroidModule.kt
│ │ │ ├── ViewModelFactory.kt
│ │ │ ├── AppModule.kt
│ │ │ ├── AppComponent.kt
│ │ │ └── DatabaseModule.kt
│ │ │ ├── App.kt
│ │ │ ├── ui
│ │ │ ├── contactprofile
│ │ │ │ └── ContactProfileViewModel.kt
│ │ │ ├── friendrequest
│ │ │ │ └── FriendRequestViewModel.kt
│ │ │ ├── BaseFragment.kt
│ │ │ ├── userprofile
│ │ │ │ └── UserProfileViewModel.kt
│ │ │ ├── createprofile
│ │ │ │ └── CreateProfileViewModel.kt
│ │ │ └── Util.kt
│ │ │ ├── Extensions.kt
│ │ │ ├── ProximityScreenOff.kt
│ │ │ ├── PendingIntentCompat.kt
│ │ │ └── AutoAway.kt
│ ├── debug
│ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ └── androidTest
│ │ └── kotlin
│ │ └── ui
│ │ └── AvatarFactoryTest.kt
├── BUILD.bazel
└── proguard-tox4j.pro
├── scripts
├── Linux.mk
├── build-all
├── build-i686-linux-android
├── build-aarch64-linux-android
├── build-x86_64-linux-android
├── build-arm-linux-androideabi
├── release.mk
├── common.mk
└── patches
│ └── libvpx.patch
├── img
├── get-it-on-fdroid.png
└── get-it-on-google-play.png
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── .gitattributes
├── .gitignore
├── detekt.yml
├── gradle.properties
├── BUILD.bazel
├── .bazelrc
├── settings.gradle.kts
└── .editorconfig
/bazel/BUILD.bazel:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.bazelversion:
--------------------------------------------------------------------------------
1 | 7.6.1
2 |
--------------------------------------------------------------------------------
/bazel/psocket/WORKSPACE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/bazel/pthread/WORKSPACE:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/core/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | github: robinlinden
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ar/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bs/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/el/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/et/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/he/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/is/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ro/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sv/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tum/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/core/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hi-IN/title.txt:
--------------------------------------------------------------------------------
1 | एटॉक्स
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nb-NO/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/title.txt:
--------------------------------------------------------------------------------
1 | aTox
2 |
--------------------------------------------------------------------------------
/domain/.gitignore:
--------------------------------------------------------------------------------
1 | build/
2 | libs/
3 | src/main/jniLibs/
4 |
--------------------------------------------------------------------------------
/atox/.gitignore:
--------------------------------------------------------------------------------
1 | build/
2 | libs/
3 | release/
4 | src/main/jniLibs/
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox,一个美观现代的 Tox 客户端
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox ، مشتری Tox زیبا و مدرن
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox - 功能強大,設計美觀的 Tox 客户端
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, красив и модерен Tox клиент
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/he/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, אפליקציית Tox יפה ומודרנית
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, lijep i moderan Tox klijent
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, a szép és modern Tox kliens
2 |
--------------------------------------------------------------------------------
/atox/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/debug.keystore
--------------------------------------------------------------------------------
/fastlane/metadata/android/bs/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, preljep i moderan Tox client
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, un client Tox beau et moderne
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, gražus ir modernus Tox klientas
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, piękny i nowoczesny klient Tox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, um cliente Tox belo e moderno
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, um cliente Tox belo e moderno
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ro/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, un client Tox frumos și modern
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, прелеп и модеран Tox клијент
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sv/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, en vacker och modern Tox-klient
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tum/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, wupu wakutowa wasono wa Tox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox це гарний та сучасний клієнт Tox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, a beautiful and modern Tox client
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, un bello y moderno cliente de Tox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hi-IN/short_description.txt:
--------------------------------------------------------------------------------
1 | एटॉक्स, एक सुंदर और आधुनिक टॉक्स साधन है
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/is/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, fallegur og nútímalegur Tox biðlari
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nb-NO/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, en flott og moderne Tox-klient
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, красивый и современный клиент Tox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, pekný a moderný klient aplikácie Tox
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, güzel ve modern bir Tox istemcisi
2 |
--------------------------------------------------------------------------------
/scripts/Linux.mk:
--------------------------------------------------------------------------------
1 | DLLEXT := .so
2 |
3 | export CFLAGS += -fPIC
4 | export CXXFLAGS += -fPIC
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/el/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, ένας όμορφος και μοντέρνος πελάτης Tox
2 |
--------------------------------------------------------------------------------
/img/get-it-on-fdroid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/img/get-it-on-fdroid.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, ein gut aussehender und moderner Tox-Client
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/short_description.txt:
--------------------------------------------------------------------------------
1 | aTox, un meraviglioso nonché moderno client di Tox
2 |
--------------------------------------------------------------------------------
/img/get-it-on-google-play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/img/get-it-on-google-play.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/message_divider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/atox/src/main/launcher_icon-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/launcher_icon-playstore.png
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | 修复了处理结束来电相关的崩溃
2 | 修复了删除联系人发生的崩溃
3 |
4 | 完整更新日志:https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | 修復了在處理掛斷來電時的程式崩潰問題
2 | 修復了在刪除聯絡人時的程式崩潰問題
3 |
4 | 完整更新日誌: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/atox/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/atox/src/main/res/values/integers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 128
4 |
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/fastlane/metadata/android/en-US/images/featureGraphic.png
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/bazel/psocket/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@rules_cc//cc:defs.bzl", "cc_library")
2 |
3 | cc_library(
4 | name = "psocket",
5 | visibility = ["//visibility:public"],
6 | )
7 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text eol=lf
2 |
3 | # Windows wants .bat-files to use CRLF.
4 | *.bat text eof=crlf
5 |
6 | *.jpg binary
7 | *.png binary
8 |
9 | *.jar binary
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/evilcorpltd/aTox/HEAD/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png
--------------------------------------------------------------------------------
/atox/src/debug/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | aTox debug
4 |
5 |
--------------------------------------------------------------------------------
/atox/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #4F83DC
4 |
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/he/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | תוקנה קריסה בסיום שיחות נכנסות
2 | תוקנה קריסה במחיקת אנשי קשר
3 |
4 | יומן שינויים מלא: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | رفع خرابی در رسیدگی به تماسهای ورودی پایانیافته
2 | رفع خرابی در حذف مخاطب
3 |
4 | تغییرات کامل: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/domain/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/bazel/pthread/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@rules_cc//cc:defs.bzl", "cc_library")
2 |
3 | cc_library(
4 | name = "pthread",
5 | linkopts = ["-lpthread"],
6 | visibility = ["//visibility:public"],
7 | )
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Fixed crash in handling of ending incoming calls
2 | Fixed crash in contact deletion
3 |
4 | Full changelog: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nb-NO/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Fikset krasj ved håndtering av innkommende anrop
2 | Fikset krasj ved sletting av kontakter
3 | Full endringslogg: https://github.com/evilcorpltd/aTox/releases
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .DS_Store
3 | .externalNativeBuild
4 | .gradle
5 | .idea
6 | bazel-*
7 | build
8 | captures
9 | local.properties
10 |
11 | # gradle-from-source build
12 | _build
13 | _git
14 | _install
15 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Crash beim Handeln von endenden eingehenden Anrufen behoben
2 | Crash bei Kontaktlöschung behoben
3 |
4 | Voller Changelog: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Ištaisyta gedimas tvarkant baigiamuosius skambučius
2 | Ištaisyta kontakto ištrynimo gedimas
3 |
4 | Visas pakeitimų žurnalas: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Исправљено крахирање при руковању долазећим позивима
2 | Исправљено крахирање при брисању контакта
3 |
4 | Пун дневник измена: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | 在 Android KitKat 上,aTox 启动不再崩溃
2 | 进行通话时拒绝来电现在可以正常工作了
3 | 新增支持将你的 Tox ID 分享为二维码图片
4 | 在消息通知中增加了“标记为已读”按钮
5 |
6 | 完整更新日志:https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | 新增聊天記錄匯出功能
2 | 好友請求訊息現已新增至聊天記錄
3 | 檔案傳輸速度與穩定性提升
4 | 通話時將依據距離感應器自動關閉 / 開啟屏幕顯示功能
5 |
6 | 更新至 Toxcore 0.2.19
7 |
8 | 完整更新日誌:https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/detekt.yml:
--------------------------------------------------------------------------------
1 | naming:
2 | InvalidPackageDeclaration:
3 | active: false
4 |
5 | empty-blocks:
6 | EmptyFunctionBlock:
7 | ignoreOverridden: true
8 |
9 | style:
10 | ReturnCount:
11 | active: false
12 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Correction du crash à la fin d'appels entrants
2 | Correction du crash à la suppression d'un contact
3 |
4 | Tous les changements : https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Naprawiono błąd w obsłudze kończenia połączeń przychodzących
2 | Naprawiono błąd przy usuwaniu kontaktu
3 |
4 | Pełny changelog: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Corrigida a falha no tratamento de chamadas recebidas
2 | Corrigida a falha na eliminação do contacto
3 |
4 | Changelog completo: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Gelen aramalar sonlandırılırken oluşan çökme düzeltildi
2 | Kişi silmede oluşan çökme düzeltildi
3 |
4 | Tam değişiklik günlüğü: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/atox/src/main/res/xml/file_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Исправлен вылет при обработке завершения входящих звонков
2 | Исправлен вылет при удалении контактов
3 |
4 | Полный список изменений: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Випарвлено виліт під час відхилення дзвінків, що надходять
2 | Виправлено виліт під час видалення контактів
3 |
4 | Повний перелік змін: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox 不會再於 Android KitKat 開啟時發生程式崩潰
2 | 當正在通話中時,拒絕來電的功能現在能正常運作
3 | 新增將 Tox ID 分享為 QR Code 圖片的功能
4 | 於訊息通知中加入「標記為已讀」的按鈕
5 |
6 | 完整更新日誌: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Opravené spadnutie pri zvládaní ukončenia prichádzajúcich volaní
2 | Opravené spadnutie pri vymazaní kontaktu
3 |
4 | Úplný zoznam zmien: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536m
2 | org.gradle.caching=true
3 | org.gradle.parallel=true
4 | kotlin.code.style=official
5 | android.useAndroidX=true
6 | android.enableJetifier=false
7 | android.nonTransitiveRClass=true
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Фиксиран срив при обработката на завършващи входящи повиквания
2 | Фиксиран срив при изтриване на контакт
3 |
4 | Пълен регистър на промените: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/atox/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Ispravljen je prekid programa u rukovanju završavanjem dolaznih poziva
2 | Ispravljen je prekid programa u brisanju kontakata
3 |
4 | Potpuni popis promjena: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/atox/src/main/res/menu/chat_send_long_press_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/bazel/jvm-macros.BUILD:
--------------------------------------------------------------------------------
1 | load("@io_bazel_rules_scala//scala:scala.bzl", "scala_macro_library")
2 |
3 | scala_macro_library(
4 | name = "jvm-macros",
5 | srcs = glob(["src/main/scala/**/*.scala"]),
6 | visibility = ["//visibility:public"],
7 | )
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Se corrigió el fallo en el manejo de la terminación de llamadas entrantes
2 | Se corrigió el fallo en la eliminación de contactos.
3 |
4 | Registro de cambios completo: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Risolto l'arresto anomalo nella gestione della fine delle chiamate in arrivo
2 | Risolto l'arresto anomalo nella cancellazione dei contatti
3 |
4 | Changelog completo: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/changelogs/12.txt:
--------------------------------------------------------------------------------
1 | Corrigido o travamento que ocorria ao encerrar chamadas recebidas
2 | Corrigido o travamento quando da exclusão de contatos
3 |
4 | Registro de alterações completo: https://github.com/evilcorpltd/aTox/releases
5 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | 音频通话支持
2 | 和加密的 Tox 配置文件一起使用的选项
3 | 更改 NoSpam 的选项
4 | 能够接收文本共享
5 | 能够将您的 Tox ID 显示为二维码
6 | 支持一次选择多个要发送的文件
7 | 翻译成更多语言
8 | 更新到 Toxcore 0.2.13
9 |
10 | 完整更新日志:https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | 支援語音通話
2 | 使用加密的 Tox 配置檔案
3 | 可更改反垃圾郵件編號 (NoSpam)
4 | 可接收文字分享
5 | 可將 Tox ID 顯示為 QR Code
6 | 支援一次選擇多個文件發送
7 | 翻譯成更多語言
8 | 更新至 Toxcore 0.2.13
9 |
10 | 完整更新日誌: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | 新增显示联系人的连接状态
2 |
3 | 修复了新型号三星手机上启动时的一处崩溃
4 | 修复了电话铃声不总是按设定静音的问题
5 | 修复了在糟糕的时候删除联系人时的崩溃
6 | 修复了一个与启动代理集和没有互联网相关的崩溃
7 |
8 | 升级 Toxcore 到 0.2.16
9 |
10 | 完整更新日志:https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/scripts/build-all:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | ./scripts/build-host "$@"
4 |
5 | ./scripts/build-aarch64-linux-android release "$@"
6 | ./scripts/build-arm-linux-androideabi release "$@"
7 | ./scripts/build-i686-linux-android release "$@"
8 | ./scripts/build-x86_64-linux-android release "$@"
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | 未发送的消息会被保存为草稿
2 | 添加代理支持
3 | 添加自动标记为离开的选项
4 | 添加覆盖使用的引导节点的选项
5 | 您现在可以直接从通知回复
6 | 添加自动接受文件传输支持
7 | 漂亮的头像占位符
8 | 现在清除聊天时会删除关联的文件传输
9 | 修复了带有多字节字符的消息拆分问题
10 | 翻译成巴西葡萄牙语、俄语和德语
11 |
12 | 完整更新日志:https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | 顯示聯絡人的連線狀態
2 |
3 | 修復了較新的 Samsung 手機開啟 aTox 時的程式崩潰問題
4 | 修復了通話鈴聲無法在預期時靜音的問題
5 | 修復了在某些狀況下刪除聯絡人導致程式崩潰的問題
6 | 修復了在啟動時有設定代理伺服器,但網路處於未連接狀態下造成的程式崩潰問題
7 |
8 | 更新至 Toxcore 0.2.16
9 |
10 | 完整更新日誌:https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/status_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/he/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox לא קורסת יותר בהפעלה ב Android KitKat
2 | דחייה של שיחה נכנסת בזמן שיחה אחרת עכשיו עובדת כמצופה
3 | נוספה תמיכה לשיתוף ה Tox ID שלך כתמונת קוד QR
4 | נוסף כפתור "סמן כנקרא" להתראות הודעה
5 |
6 | יומן שינויים מלא: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/atox/src/main/res/menu/chat_message_context_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/atox/src/main/res/menu/friend_request_context_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/atox/src/main/res/menu/ft_message_context_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/tox/BootstrapNodeRegistry.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.tox
6 |
7 | interface BootstrapNodeRegistry {
8 | fun get(n: Int): List
9 | fun reset()
10 | }
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | 未發送的訊息將另存為草稿
2 | 支援使用代理伺服器
3 | 可設定自動標註為「離開」的選項
4 | 可指定啟動時所使用的引導節點
5 | 現在可以直接從通知中回覆訊息
6 | 自動接受檔案傳輸的功能
7 | 更好看的頭像預設圖示
8 | 清除聊天訊息時,同時會刪除相關的檔案傳輸記錄
9 | 修復了拆分多位元組字符訊息時引發的問題
10 | 翻譯成巴西體中文、葡萄牙牙文(巴西)、俄文、德文
11 |
12 | 完整更新日誌:https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/scripts/build-i686-linux-android:
--------------------------------------------------------------------------------
1 | #!/usr/bin/make -f
2 |
3 | TARGET := i686-linux-android
4 | BASE_TARGET := $(TARGET)
5 |
6 | include scripts/common.mk
7 |
8 | NDK_API := 21
9 | NDK_ARCH := x86
10 | VPX_TARGET := x86-android-gcc
11 |
12 | include scripts/android.mk
13 | include scripts/dependencies.mk
14 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/tox/ToxConstants.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.tox
6 |
7 | const val MAX_MESSAGE_LENGTH = 1372
8 | const val MAX_AVATAR_SIZE = 64 * 1024
9 | const val TOX_ID_LENGTH = 76
10 |
--------------------------------------------------------------------------------
/atox/src/main/res/menu/contact_list_context_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
--------------------------------------------------------------------------------
/scripts/build-aarch64-linux-android:
--------------------------------------------------------------------------------
1 | #!/usr/bin/make -f
2 |
3 | TARGET := aarch64-linux-android
4 | BASE_TARGET := $(TARGET)
5 |
6 | include scripts/common.mk
7 |
8 | NDK_API := 21
9 | NDK_ARCH := arm64
10 | VPX_TARGET := arm64-android-gcc
11 |
12 | include scripts/android.mk
13 | include scripts/dependencies.mk
14 |
--------------------------------------------------------------------------------
/scripts/build-x86_64-linux-android:
--------------------------------------------------------------------------------
1 | #!/usr/bin/make -f
2 |
3 | TARGET := x86_64-linux-android
4 | BASE_TARGET := $(TARGET)
5 |
6 | include scripts/common.mk
7 |
8 | NDK_API := 21
9 | NDK_ARCH := x86_64
10 | VPX_TARGET := x86_64-android-gcc
11 |
12 | include scripts/android.mk
13 | include scripts/dependencies.mk
14 |
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/atox/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/scripts/build-arm-linux-androideabi:
--------------------------------------------------------------------------------
1 | #!/usr/bin/make -f
2 |
3 | TARGET := armv7a-linux-androideabi
4 | BASE_TARGET := arm-linux-androideabi
5 |
6 | include scripts/common.mk
7 |
8 | NDK_API := 21
9 | NDK_ARCH := arm
10 | VPX_TARGET := armv7-android-gcc
11 |
12 | include scripts/android.mk
13 | include scripts/dependencies.mk
14 |
--------------------------------------------------------------------------------
/bazel/libvpx/vpx_version.h:
--------------------------------------------------------------------------------
1 | // This file is generated. Do not edit.
2 | #define VERSION_MAJOR 1
3 | #define VERSION_MINOR 7
4 | #define VERSION_PATCH 0
5 | #define VERSION_EXTRA ""
6 | #define VERSION_PACKED ((VERSION_MAJOR<<16)|(VERSION_MINOR<<8)|(VERSION_PATCH))
7 | #define VERSION_STRING_NOSP "v1.7.0"
8 | #define VERSION_STRING " v1.7.0"
9 |
--------------------------------------------------------------------------------
/atox/src/main/res/anim/fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/atox/src/main/res/anim/fade_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/vo/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@io_bazel_rules_kotlin//kotlin:android.bzl", "kt_android_library")
2 |
3 | kt_android_library(
4 | name = "vo",
5 | srcs = glob(["*.kt"]),
6 | custom_package = "ltd.evilcorp.core.vo",
7 | visibility = ["//visibility:public"],
8 | deps = ["@maven//:androidx_room_room_runtime"],
9 | )
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox no longer crashes at startup on Android KitKat
2 | Rejecting an incoming call while in a call now works as expected
3 | Added support for sharing your Tox ID as a QR code image
4 | Added a "mark as read" button to message notifications
5 |
6 | Full changelog: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nb-NO/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox krasjer ikke lenger ved oppstart på Android KitKat
2 | Mulighet til å avslå innkommende anrop når du i en samtale virker nå
3 | Støtte for deling av ens Tox-ID som QR-kodebilde
4 | Tillagt «Marker som lest»-knapp for meldingsmerknader
5 |
6 | Full endringslogg: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox више не крахира при покретању на Android KitKat
2 | Одбијање долазног позива док сте у позиву сада ради као што треба
3 | Додата подршка за дељење Tox ID-ја као слике QR кода
4 | Додато дугме „означи као прочитано“ обавештењима о поруци
5 |
6 | Пун дневник измена: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-TW/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox 是一款適用於 Tox 協議的免費開源訊息應用程式。
2 |
3 | 為何使用 aTox?
4 |
5 | * 開放原始碼:可自由分享、檢視和修改。
6 | * 端對端加密:只有你和對話的對象才能看到你們的對話內容。
7 | * 分散式架構:沒有可被關閉或被迫交出數據的中央伺服器。
8 | * 輕量化:沒有遙測、廣告或其他形式的監控。
9 |
10 | 進一步瞭解:aTox, Tox。
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/anim/slide_in_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/atox/src/main/res/anim/slide_out_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | „aTox“ nebestringa paleidžiant „Android KitKat“.
2 | Įeinančio skambučio atmetimas pokalbio metu veikia taip, kaip tikėtasi
3 | Pridėtas jūsų Tox ID bendrinimo kaip QR kodo vaizdas
4 | Pridėtas mygtukas „žymėti kaip skaitytą“ prie žinučių pranešimų
5 |
6 | Visas pakeitimų žurnalas: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Added chat history export
2 | Friend request messages are now added to the chat history
3 | Improved file transfer speed and stability
4 | The display is now automatically turned off/on during calls using the proximity sensor
5 |
6 | Updated to Toxcore 0.2.19
7 |
8 | Full changelog: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox artık Android KitKat'ta başlarken çökmüyor
2 | Arama sırasında gelen aramayı reddetmek artık beklendiği gibi çalışıyor
3 | Tox kimliğinizi QR kodu görüntüsü olarak paylaşma desteği eklendi
4 | Mesaj bildirimlerine "okundu olarak işaretle" düğmesi eklendi
5 |
6 | Tam değişiklik günlüğü: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox ne crashe plus au lancement sur Android KitKat
2 | Rejeter un appel, pendant un appel, fonctionne maintenant comme il faut
3 | Ajout du support pour partager votre Tox ID sous forme de QR code
4 | Ajout de "Marquer comme lu" sur les notifications de messages
5 |
6 | Tous les changements : https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/he/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | תמיכה בשיחות שמע
2 | אפשרות להשתמש עם פרופיל Tox מוצפן
3 | אפשרות לשנות את הלא-ספאם שלך
4 | יכולת לקבל שיתופי טקסט
5 | יכולת להציג את ה Tox ID שלך כקוד QR
6 | תמיכה בבחירה מרובה של קבצים לשליחה בפעם אחת
7 | תורגם להרבה יותר שפות
8 | עודכן ל Toxcore 0.2.13
9 |
10 | יומן שינויים מלא: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox 是基于 Tox 协议的免费开源的消息传递应用。
2 |
3 | 为什么使用aTox?
4 | * 开源:可以自由分享、检视代码和随意更改。
5 | * 合理:理智的默认设定,不去猜测您所关心的内容,也不忽略您想要的。
6 | * 端到端加密:只有与您交谈的人才能看到您的对话。
7 | * 分布式:没有可以被关闭或强制上交数据的中央服务器。
8 | * 轻量:没有遥测、广告或其他形式的监控。
9 |
10 | 更多信息:aTox、Tox。
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox už nespadne pri otváraní na Android KitKat
2 | Odmietnutie prichádzajúceho volania počas hovoru, teraz funguje podľa očakávania
3 | Pridaná podpora pre zdieľanie vášho Tox ID ako obrázku QR code
4 | Pridané tlačidlo "označiť ako prečítané" k upozorneniam na správy
5 |
6 | Úplný zoznam zmien: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox دیگر هنگام راه اندازی در اندروید کیت کت خراب نمی شود
2 | رد کردن تماس ورودی در حین تماس اکنون مطابق انتظار عمل می کند
3 | پشتیبانی برای به اشتراک گذاری Tox ID شما به عنوان یک تصویر کد QR اضافه شده است
4 | دکمه "علامت گذاری به عنوان خوانده شده" را به اعلان های پیام اضافه کرد
5 |
6 | تغییرات کامل: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox više ne prekida rad prilikom pokretanja na Android KitKat-u
2 | Odbijanje dolaznog poziva dok je jedan drugi poziv u tijeku sada radi ispravno
3 | Dodana je podrška za dijeljenje tvog Tox ID-a kao slike QR koda
4 | Dodan je gumb "označi kao pročitano" u obavijestima poruka
5 |
6 | Potpuni popis promjena: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox już się nie zawiesza przy uruchamianiu na Android KitKat
2 | Odrzucanie połączenia przychodzącego w trakcie połączenia działa jak należy
3 | Dodano obsługę udostępniania swojego Tox ID jako obraz kodu QR
4 | Dodano przycisk "oznacz jako przeczytane" do powiadomienia wiadomości
5 |
6 | Pełny changelog: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Pridaný export histórie chatu
2 | Správy žiadostí o priateľstvo sa teraz pridávajú do histórie chatu
3 | Vylepšená rýchlosť a stabilita prenosu súborov
4 | Displej sa teraz automaticky vypína/zapína počas hovorov pomocou senzora priblíženia
5 |
6 | Aktualizované na Toxcore 0.2.19
7 |
8 | Celý zoznam zmien: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/atox/src/main/res/menu/chat_options_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox більше не вилітає при запуску на Android KitKat
2 | Відхилення дзвінка, що надходить, тепер працює правильно
3 | Додано підтримку функції "Поділитися" для вашого Tox ID, перетвореного у зображення QR-коду
4 | Додано кнопку "Відмітити як прочитане" до сповіщення про повідомлення
5 |
6 | Повний перелік змін: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionSha256Sum=72f44c9f8ebcb1af43838f45ee5c4aa9c5444898b3468ab3f4af7b6076c5bc3f
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip
5 | networkTimeout=10000
6 | validateDistributionUrl=true
7 | zipStoreBase=GRADLE_USER_HOME
8 | zipStorePath=wrapper/dists
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/he/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | נוספה הצגה של סטטוס חיבור עם אנשי קשר
2 |
3 | תוקנה קריסה בהפעלה במכשירי Samsung חדשים
4 | תוקן צלצול השיחה שלא תמיד מושתק כשהוא צריך להיות
5 | תוקנו מגוון קריסות במחיקת אנשי קשר
6 | תוקנה קריסה הקשורה להפעלה עם מתווך מוגדר כאשר אין חיבור לאינטרנט
7 |
8 | עודכן ל Toxcore 0.2.16
9 |
10 | יומן שינויים מלא: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox já não trava na inicialização no Android KitKat
2 | Rejeitar uma chamada recebida durante uma chamada agora funciona como esperado
3 | Adicionado suporte para partilhar o seu ID do Tox como uma imagem de código QR
4 | Adicionado um botão "marcar como lido" para notificações de mensagens
5 |
6 | Mudanças completas: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_send.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox ya no falla al iniciarse en Android KitKat
2 | Rechazar una llamada entrante mientras está en una llamada ahora funciona como se espera
3 | Se agregó soporte para compartir el ID de Tox como una imagen de código QR
4 | Se agregó una botón "marcar como leído" para enviar notificaciones
5 |
6 | Registro de cambios completo: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Sohbet geçmişi dışa aktarımı eklendi
2 | Arkadaşlık isteği mesajları artık sohbet geçmişine ekleniyor
3 | Dosya aktarım hızı ve kararlılığı iyileştirildi
4 | Ekran artık aramalar sırasında yakınlık sensörü kullanılarak otomatik olarak kapatılıp açılıyor
5 |
6 | Toxcore 0.2.19 sürümüne güncellendi
7 |
8 | Tam değişiklik günlüğü: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/received_message_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/sent_message_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox вече не спира при стартиране на Android KitKat
2 | Отхвърлянето на входящо повикване по време на разговор вече работи според очакванията
3 | Добавена е поддръжка за споделяне на вашия Tox ID като изображение с QR код
4 | Добавен е бутон „маркиране като прочетено“ към известията за съобщения
5 |
6 | Пълен регистър на промените: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox non si blocca più all'avvio su Android KitKat
2 | Il rifiuto di una chiamata in arrivo durante una chiamata ora funziona come previsto
3 | Aggiunto il supporto per la condivisione del proprio Tox ID come immagine di un codice QR
4 | Aggiunto un pulsante "segna come letto" alle notifiche dei messaggi
5 |
6 | Il changelog completo: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/atox/src/main/res/menu/user_profile_share_id_context_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nb-NO/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Lydsamtalestøtte
2 | Alternativ for bruk med kryptert Tox-profil
3 | Altnertiv for endring av ens NoSpam
4 | Mulighet tll å motta tekstdelinger
5 | Mulighet til å vise ens Tox-ID som en QR-kode
6 | Støtte for valg av flere filer å sende
7 | Mange flere oversettelser
8 | Oppgradert Toxcore 0.2.13
9 |
10 | Full endringslogg: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox não trava mais na inicialização no Android KitKat
2 | Rejeitar uma chamada recebida durante uma chamada agora funciona conforme o esperado
3 | Adicionado suporte para compartilhar seu Tox ID como uma imagem de código QR
4 | Adicionado um botão "marcar como lida" às notificações de mensagens
5 |
6 | Registro de alterações completo: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Подршка за звучне позиве
2 | Опција употребе шифрованог Tox профила
3 | Опција промене NoSpam-а
4 | Могућност примања текстуалних дељења
5 | Могућност приказивања Tox ID-ја као QR кода
6 | Подршка за избор више датотека за слање одједном
7 | Превод на још више језика
8 | Надоградња на Toxcore 0.2.13
9 |
10 | Пун дневник измена: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Audio call support
2 | Option to use with an encrypted Tox profile
3 | Option to change your nospam
4 | Ability to receive text shares
5 | Ability to display your ToxID as a QR code
6 | Support for selecting multiple files to send at once
7 | Translated to a lot more languages
8 | Updated to Toxcore 0.2.13
9 |
10 | Full changelog: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | پشتیبانی تماس صوتی
2 | گزینه ای برای استفاده با نمایه Tox رمزگذاری شده
3 | گزینه ای برای تغییر NoSpam شما
4 | امکان دریافت اشتراک متن
5 | امکان نمایش Tox ID خود به عنوان یک کد QR
6 | پشتیبانی از انتخاب چندین فایل برای ارسال همزمان
7 | به زبان های بسیار بیشتری ترجمه شده است
8 | به روز رسانی به Toxcore 0.2.13
9 |
10 | تغییرات کامل: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Dodano eksport historii czatów
2 | Wiadomości z prośbą o dodanie do znajomych są teraz dodawane do historii czatów
3 | Poprawiono prędkość i stabilność przesyłania plików
4 | Wyświetlacz jest teraz automatycznie wyłączany/włączany podczas połączeń za pomocą czujnika zbliżeniowego
5 |
6 | Zaktualizowano Toxcore do 0.2.19
7 |
8 | Pełna lista zmian: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Podpora audio hovorov
2 | Možnosť použiť s šifrovaným profilom Tox
3 | Možnosť zmeniť váš NoSpam
4 | Schopnosť to prijímať zdieľaný text
5 | Schopnosť zobraziť Tox ID ako QR code
6 | Podpora pre hromadný výber súborov, pre okamžité odoslanie
7 | Preložený do mnohých jazykov
8 | Aktualizovaný na Toxcore 0.2.13
9 |
10 | Úplný zoznam zmien: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Додана можливість експортування історії чатів
2 | Повідомлення із запитами на додавання в друзі тепер додаються до історії чатів
3 | Покращено швидкість та стабільність передачі файлів
4 | Дисплей тепер автоматично вимикається/вмикається під час дзвінків за допомогою датчика наближення
5 |
6 | Оновлено до Toxcore 0.2.19
7 |
8 | Повний перелік змін: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/el/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Υποστήριξη ηχητικής κλήσης
2 | Επιλογή χρήσης με κρυπτογραφημένο προφίλ
3 | Επιλογή αλλαγής του NoSpam
4 | Δυνατότητα λήψης text shares
5 | Δυνατότητα προβολής του Tox ID ως QR code
6 | Υποστήριξη επολογής πολλαπλών αρχείων για αποστολλή
7 | Μετάφραση σε περισσότερες γλώσσες
8 | Αναβάθμιση του Toxcore σε 0.2.13
9 |
10 | Όλες οι αλλαγές στο: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Garso skambučių palaikymas
2 | Galimybė naudoti su šifruotu Tox profiliu
3 | Galimybė pakeisti savo NoSpam
4 | Galimybė gauti teksto dalis
5 | Galimybė rodyti savo Tox ID kaip QR kodą
6 | Palaikymas pasirenkant kelis failus siųsti vienu metu
7 | Išversta į daug daugiau kalbų
8 | Atnaujinta į Toxcore 0.2.13
9 |
10 | Visas pakeitimų žurnalas: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox больше не вылетает при запуске на Android KitKat
2 | Отказ от входящего звонка во время другого запущенного звонка теперь работает правильно
3 | Добавлена поддержка функции "Поделиться" для Tox ID, преобразованного в изображение QR-кода
4 | Добавлена кнопка "Отметить как прочитанное" в уведомления о новых сообщениях
5 |
6 | Полный список изменений: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/side_nav_bar_background.xml:
--------------------------------------------------------------------------------
1 |
3 |
9 |
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/changelogs/11.txt:
--------------------------------------------------------------------------------
1 | aTox stürzt beim Start unter Android KitKat nicht mehr ab.
2 | Das Ablehnen eines eingehenden Anrufs während eines Gesprächs funktioniert nun wie erwartet
3 | Unterstützung für das Teilen der Tox-ID als QR-Code-Bild hinzugefügt.
4 | Ein "Als gelesen markieren"-Button wurde zu den Nachrichten-Benachrichtigungen hinzugefügt.
5 |
6 | Vollständiges Changelog: https://github.com/evilcorpltd/aTox/releases
7 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Añadida exportación del historial de chat
2 | Los mensajes de solicitud de amigo ahora se agregan al historial de chat
3 | Mejora de la velocidad y estabilidad de transferencia de archivos
4 | La pantalla se enciende/apaga automáticamente durante las llamadas con el sensor de proximidad
5 |
6 | Actualizado a Toxcore 0.2.19
7 |
8 | Registro completo de cambios: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Добавлена возможность экспортировать историю чатов
2 | Сообщения из запросов на добавление в друзья теперь добавляются в историю чатов
3 | Улучшена скорость и стабильность передач файлов
4 | Дисплей теперь автоматически выключается/включается во время звонков благодаря датчику приближения
5 |
6 | Toxcore обновлён на версию 0.2.19
7 |
8 | Полный список изменений: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@dagger//:workspace_defs.bzl", "dagger_rules")
2 | load("@io_bazel_rules_kotlin//kotlin:core.bzl", "define_kt_toolchain")
3 |
4 | dagger_rules()
5 |
6 | KOTLIN_LANGUAGE_LEVEL = "1.9"
7 |
8 | JAVA_LANGUAGE_LEVEL = "1.8"
9 |
10 | define_kt_toolchain(
11 | name = "kotlin_toolchain",
12 | api_version = KOTLIN_LANGUAGE_LEVEL,
13 | jvm_target = JAVA_LANGUAGE_LEVEL,
14 | language_version = KOTLIN_LANGUAGE_LEVEL,
15 | )
16 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | نمایش وضعیت اتصال مخاطبین اضافه شده است
2 |
3 | رفع خرابی هنگام راه اندازی گوشی های جدیدتر سامسونگ
4 | ثابت شد که آهنگ زنگ تماس همیشه در زمانی که باید خاموش نمی شود
5 | رفع تعدادی از خرابی ها هنگام حذف مخاطبین در زمان های بد
6 | رفع خرابی مربوط به شروع با یک مجموعه پراکسی و بدون اینترنت
7 |
8 | به روز رسانی به Toxcore 0.2.16
9 |
10 | تغییرات کامل: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Podrška za audio pozive
2 | Mogućnost korištenja sa šifriranim Tox profilom
3 | Mogućnost mijenjanja tvog NoSpama
4 | Mogućnost primanja dijeljenjog teksta
5 | Mogućnost prikaza tvog Tox ID-a kao QR koda
6 | Podrška za biranje više datoteka za istovremeno slanje
7 | Prevedeno na mnoge jezike
8 | Aktualizirano na Toxcore 0.2.13
9 |
10 | Potpuni popis promjena: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Sesli arama desteği
2 | Şifreli bir Tox profili ile kullanma seçeneği
3 | SpamYok'unuzu değiştirme seçeneği
4 | Metin paylaşımları alabilme
5 | Tox kimliğinizi QR kodu olarak görüntüleyebilme
6 | Göndermek için aynı anda birden fazla dosya seçme desteği
7 | Çok daha fazla dile çevrildi
8 | Toxcore 0.2.13 sürümüne güncellendi
9 |
10 | Tam değişiklik günlüğü: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/atox/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@io_bazel_rules_kotlin//kotlin:android.bzl", "kt_android_library")
2 |
3 | kt_android_library(
4 | name = "atox",
5 | srcs = [
6 | "src/main/kotlin/di/DatabaseModule.kt",
7 | ],
8 | custom_package = "ltd.evilcorp.atox",
9 | deps = [
10 | "//:dagger",
11 | "//core",
12 | "@maven//:androidx_room_room_runtime",
13 | "@maven//:javax_inject_javax_inject",
14 | ],
15 | )
16 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
9 |
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Unterstützung für Audioanrufe
2 | Option, um mit verschlüsseltem Tox-Profil zu nutzen
3 | Option, NoSpam zu ändern
4 | Möglichkeit zum Empfangen von geteiltem Text
5 | Tox ID als QR-Code anzeigen
6 | Unterstützung für Auswählen mehrerer Dateien, die auf ein Mal gesendet werden
7 | Übersetzungen in mehr Sprachen
8 | Update auf Toxcore 0.2.13
9 |
10 | Changelog: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Adicionado a exportação de histórico do chat
2 | Mensagens de solicitação de amizade são agora adicionadas no histórico do chat
3 | Aprimorada a velocidade e estabilidade da transferência de arquivos
4 | A tela é agora automaticamente ligada/desligada durante chamadas usando o sensor de proximidade
5 |
6 | Atualizado o Toxcore 0.2.19
7 |
8 | Registro de Mudanças completo: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/atox/src/main/res/anim/slide_in_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/anim/slide_out_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Added display of contacts' connection statuses
2 |
3 | Fixed a crash at startup on newer Samsung phones
4 | Fixed the call ringtone not always being silenced when it should be
5 | Fixed a bunch of crashes when deleting contacts at bad times
6 | Fixed a crash related to starting with a proxy set and no internet
7 |
8 | Updated to Toxcore 0.2.16
9 |
10 | Full changelog: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/.bazelrc:
--------------------------------------------------------------------------------
1 | build --noenable_bzlmod
2 |
3 | build --per_file_copt='[-_]avx\\.c$@-mavx'
4 | build --per_file_copt='[-_]avx2\\.c$@-mavx2'
5 | build --per_file_copt='[-_]sse\\.c$@-mssse3,-msse4'
6 | build --per_file_copt='[-_]sse4\\.c$@-msse4'
7 | build --per_file_copt='[-_]sse41\\.c$@-msse4.1'
8 | build --per_file_copt='[-_]sse4_1\\.c$@-msse4.1'
9 | build --per_file_copt='[-_]ssse3\\.c$@-mssse3'
10 |
11 | test --test_output=errors
12 | test --test_verbose_timeout_warnings
13 |
--------------------------------------------------------------------------------
/atox/proguard-tox4j.pro:
--------------------------------------------------------------------------------
1 | -keep public class im.tox.**.* extends java.lang.Enum {
2 | public *;
3 | }
4 |
5 | -keep public class * extends im.tox.tox4j.exceptions.ToxException {
6 | public *;
7 | }
8 |
9 | -keep public class scala.collection.mutable.Builder* {
10 | *;
11 | }
12 |
13 | -dontwarn javax.script.ScriptEngineFactory
14 | -dontwarn org.conscrypt.Conscrypt
15 | -dontwarn org.conscrypt.OpenSSLProvider
16 | -dontwarn org.slf4j.impl.StaticLoggerBinder
17 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Додат приказ статуса повезивања контакта
2 |
3 | Исправљено крахирање при покретању на новијим Самсунг телефонима
4 | Исправљено повремено неутишавање звона
5 | Исправљена гомила крахирања при брисању контаката у незгодним тренуцима
6 | Исправљено крахирање у вези са покретањем без Интернета када је задат прокси
7 |
8 | Надоградња на Toxcore 0.2.16
9 |
10 | Пун дневник измена: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/disable_ripple_effect.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Support pour appel audio
2 | Option pour utiliser un profil Tox chiffré
3 | Option pour changer les NoSpam
4 | Possibilité de recevoir des messages partagés
5 | Possibilité d'afficher votre Tox ID sous forme de QR code
6 | Support pour l'envoi de plusieurs fichiers d'un coup
7 | Traduction de beaucoup plus de langues
8 | Mis à jour : Toxcore 0.2.13
9 |
10 | Tous les changements : https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Obsuga połączeń głosowych
2 | Możliwość używania zaszyfrowanego profilu Tox
3 | Możliwość zmiany swojego NoSpamu
4 | Możliwość ostrzymywania udostępnionego tekstu
5 | Możliwość wyświetlenia swojego Tox ID jako kod QR
6 | Wsparcie dla wyboru wielu plików w celu jednoczesnego wysłania
7 | Przetłumaczony na wiele języków
8 | Zaktualizowany do Toxcore 0.2.13
9 |
10 | Pełny changelog: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/gradient_contacts.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/changelogs/14.txt:
--------------------------------------------------------------------------------
1 | Exportação do histórico de conversação adicionada
2 | As mensagens de pedido de amizade são agora adicionadas ao histórico de conversação
3 | Melhoria da velocidade e da estabilidade da transferência de ficheiros
4 | O ecrã é agora automaticamente desligado/ligado durante as chamadas utilizando o sensor de proximidade
5 |
6 | Atualizado para Toxcore 0.2.19
7 |
8 | Registo de alterações completo: https://github.com/evilcorpltd/aTox/releases
9 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Pridané zobrazenie stavov pripojenia pre kontakty
2 |
3 | Opravené spadnutie pri spustení na novších telefónoch Samsung
4 | Opravené zvonenia, ktoré nebolo vždy stíšené aj keď malo byť
5 | Opravená hromada spadnutí pri vymazaní kontaktov
6 | Opravené spadnutie pri spustení, ktoré súvisí s nastavením proxy bez internetu
7 |
8 | Aktualizované na Toxcore 0.2.16
9 |
10 | Úplný zoznam zmien: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Підтримка аудіодзвінків
2 | Можливість використовувати зашифрований профіль Tox
3 | Можливість змінювати ваш NoSpam (АнтиСпам)
4 | Можливість отримувати текст з інших додатків
5 | Можливість відображати ваш Tox ID як QR-код
6 | Підтримка вибору декількох файлів для відправки
7 | Додано переклади на більшу кількість мов
8 | Toxcore оновлено до версії 0.2.13
9 |
10 | Повний перелік змін: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Soporte de llamadas de audio
2 | Opción para usar con un perfil Tox encriptado
3 | Opción de cambiar tu NoSpam
4 | Posibilidad de recibir mensajes de texto compartidos
5 | Posibilidad de mostrar tu Tox ID como un código QR
6 | Soporte para seleccionar varios archivos para enviar a la vez
7 | Traducido a muchos más idiomas
8 | Actualizado a Toxcore 0.2.13
9 |
10 | Registro de cambios completo: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Suporte de chamadas de áudio
2 | Opção de usar com um perfil Toxicológico criptografado
3 | Opção para mudar o seu NoSpam
4 | Possibilidade de receber texto partilhado
5 | Capacidade de exibir o seu Tox ID como um código QR
6 | Suporte para selecionar vários ficheiros a enviar de uma só vez
7 | Traduzido para muito mais idiomas
8 | Atualizado para Toxcore 0.2.13
9 |
10 | Changelog completo: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Поддержка аудиозвонков
2 | Возможность использовать зашифрованные профили Tox
3 | Возможность изменять NoSpam (АнтиСпам)
4 | Возможность получать текст из других приложений
5 | Возможность отображать Tox ID в виде QR-кода
6 | Поддержка выбора и отправки более одного файла за раз
7 | Добавлены переводы на многие новые языки
8 | Toxcore обновлён на версию 0.2.13
9 |
10 | Полный список изменений: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/di/AndroidModule.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.di
6 |
7 | import android.content.ContentResolver
8 | import android.content.Context
9 | import dagger.Module
10 | import dagger.Provides
11 |
12 | @Module
13 | class AndroidModule {
14 | @Provides
15 | fun provideContentResolver(context: Context): ContentResolver = context.contentResolver
16 | }
17 |
--------------------------------------------------------------------------------
/scripts/release.mk:
--------------------------------------------------------------------------------
1 | _build/$(TARGET)/tox4j/libtox4j-c$(DLLEXT): $(PREFIX)/tox4j.stamp
2 | ls -l $@
3 | touch $@
4 |
5 | release: _build/$(TARGET)/tox4j/libtox4j-c$(DLLEXT)
6 | rm -rf $(wildcard $(SRCDIR)/tox4j/cpp/src/main/resources/im/tox/tox4j/impl/jni/*/)
7 | mkdir -p $(SRCDIR)/tox4j/cpp/src/main/resources/im/tox/tox4j/impl/jni/$(TOX4J_PLATFORM)/
8 | cp $< $(SRCDIR)/tox4j/cpp/src/main/resources/im/tox/tox4j/impl/jni/$(TOX4J_PLATFORM)/
9 | cd $(SRCDIR)/tox4j/cpp && sbt publishM2
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Поддръжка на аудио разговори
2 | Възможност за използване с криптиран Tox профил
3 | Възможност за промяна на вашия Без Spam
4 | Възможност за получаване на споделяния на текст
5 | Възможност за показване на вашия Tox ID като QR код
6 | Поддръжка за избор на няколко файла за изпращане наведнъж
7 | Преведен на много повече езици
8 | Актуализиран до Toxcore 0.2.13
9 |
10 | Пълен регистър на промените: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/he/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | הודעות אשר לא נשלחו נשמרות כטיוטה
2 | תמיכה במתווך
3 | אפשרות לשינוי אוטומטי לסטטוס "לא נמצא"
4 | אפשרות לשנות את חוליות האתחול שבשימוש
5 | ניתן כעת להגיב ישירות מההתראות
6 | תמיכה בקבלה אוטומטית של העברות קבצים
7 | תמונות אוואטר יפות
8 | ניקוי צ'אט כעת מוחק את העברות הקבצים שבוצעו
9 | תוקן פיצול של הודעות בעלות תווים מרובי בתים
10 | תורגם לפורטוגזית ברזילאית, רוסית וגרמנית
11 |
12 | יומן שינויים מלא: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Supporto per chiamate audio
2 | Opzione per l'utilizzo di un profilo Tox criptato
3 | Possibilità di cambiare il proprio NoSpam
4 | Possibilità di ricevere condivisioni di testo
5 | Possibilità di visualizzare il Tox ID come codice QR
6 | Supporto per la selezione di più file da inviare contemporaneamente
7 | Tradotto in molte altre lingue
8 | Aggiornato a Toxcore 0.2.13
9 |
10 | Il changelog completo: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Pridėtas kontaktų ryšio būsenų rodymas
2 |
3 | Ištaisyta gedimas paleidžiant naujesnius „Samsung“ telefonus
4 | Ištaisyta skambučio tonas, kuris ne visada nutildomas, kai turėtų būti
5 | Ištaisyta daugybė strigčių, kai ištrinami kontaktai netinkamu metu
6 | Ištaisyta gedimas, susijęs su tarpinio serverio rinkiniu ir be interneto
7 |
8 | Atnaujinta į Toxcore 0.2.16
9 |
10 | Visas pakeitimų žurnalas: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/changelogs/10.txt:
--------------------------------------------------------------------------------
1 | Suporte de chamadas de áudio
2 | Opção para usar com um perfil Toxicológico criptografado
3 | Opção para mudar o seu NoSpam
4 | Possibilidade de receber textos compartilhados
5 | Capacidade de exibir o seu Tox ID como um código QR
6 | Suporte para selecionar vários arquivos para enviar de uma só vez
7 | Traduzido para muito mais idiomas
8 | Atualizado para Toxcore 0.2.13
9 |
10 | Changelog completo: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/border.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Ajout du statut de connexion des contacts
2 |
3 | Correction du crash au lancement sur les Samsung récents
4 | Correction de la sonnerie d'appel non silencieuse, alors qu'elle devrait l'être
5 | Correction d'un certain nombre de crash liés à la suppression de contact
6 | Correction du crash lors de l'utilisation d'un proxy sans Internet
7 |
8 | Mis à jour : Toxcore 0.2.16
9 |
10 | Tous les changements : https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_chat.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/tox/SaveOptions.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.tox
6 |
7 | enum class ProxyType {
8 | None,
9 | HTTP,
10 | SOCKS5,
11 | }
12 |
13 | @Suppress("ArrayInDataClass")
14 | data class SaveOptions(
15 | val saveData: ByteArray?,
16 | val udpEnabled: Boolean,
17 | val proxyType: ProxyType,
18 | val proxyAddress: String,
19 | val proxyPort: Int,
20 | )
21 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | @Suppress("UnstableApiUsage")
2 | dependencyResolutionManagement {
3 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
4 | repositories {
5 | mavenLocal()
6 | google()
7 | mavenCentral()
8 | }
9 | }
10 |
11 | pluginManagement {
12 | repositories {
13 | mavenLocal()
14 | gradlePluginPortal()
15 | google()
16 | mavenCentral()
17 | }
18 | }
19 |
20 | include(":atox")
21 | include(":core")
22 | include(":domain")
23 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Dodano wyświetlanie statusu połączenia kontaktów
2 |
3 | Naprawiono błąd podczas uruchamiania na nowszych telefonach Samsung
4 | Naprawiono dzwonek połączenia, który nie zawsze był wyciszany, gdy powinien
5 | Naprawiono kilka błędów przy usuwaniu kontaktów w nieodpowiednim momencie
6 | Naprawiono błąd związany z uruchamianiem z ustawionym proxy i brakiem internetu
7 |
8 | Zaktualizowano do Toxcore 0.2.16
9 |
10 | Pełny changelog: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Добавено показване на състоянието на връзката на контактите
2 |
3 | Фиксиран срив при стартиране на по-нови телефони на Samsung
4 | Коригирана е мелодията за повикване, която не винаги се заглушава, когато трябва
5 | Поправени са куп сривове при изтриване на контакти в лоши моменти
6 | Поправен е срив, свързан със стартиране с прокси набор и липса на интернет
7 |
8 | Актуализиран до Toxcore 0.2.16
9 |
10 | Пълен регистър на промените: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Adicionado o estado da conexão dos contactos
2 |
3 | Corrigida uma falha na inicialização em telemóveis Samsung mais recentes
4 | Corrigido o toque de chamada nem sempre silenciado quando deveria ser
5 | Corrigido um monte de falhas ao eliminar contactos em alguns casos
6 | Corrigida uma falha relacionada a iniciar com um conjunto de proxy e sem Internet
7 |
8 | Atualizado para o Toxcore 0.2.16
9 |
10 | Registo de alterações completo: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Добавлено отображение статусов соединения с контактами
2 |
3 | Исправлен вылет при запуске на новых смартфонах от Samsung
4 | Исправлен баг, из-за которого мелодия звонка не всегда заглушалась, когда должна была
5 | Исправлено множество вылетов при удалении контактов в неподходящее время
6 | Исправлен вылет при запуске через прокси, при отсутствующем интернете
7 |
8 | Toxcore обновлён на версию 0.2.16
9 |
10 | Полный список изменений: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Kişilerin bağlantı durumlarının görüntülenmesi eklendi
2 |
3 | Daha yeni Samsung telefonlarda başlangıçta bir çökme düzeltildi
4 | Arama zil sesinin olması gerektiği halde her zaman susturulmaması düzeltildi
5 | Kişileri kötü zamanlarda silerken oluşan bir dizi çökme düzeltildi
6 | Bir vekil ayarı olduğunda ve internet yokken başlamayla ilgili bir çökme düzeltildi
7 |
8 | Toxcore 0.2.16 sürümüne güncellendi
9 |
10 | Tam değişiklik günlüğü: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Додано відображення статусів з'єднання з контактами
2 |
3 | Виправлено виліт при запуску на нових смартфонах від Samsung
4 | Виправлено баг, через який мелодія дзвінка не завжди була заглушена, коли це потрібно
5 | Виправлено ряд вилетів під час видалення контактів у непідходящий момент
6 | Виправлено виліт, що пов'язаний із запуском проксі без підключення до інтернету
7 |
8 | Toxcore оновлено до версії 0.2.16
9 |
10 | Повний перелік змін: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/repository/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@io_bazel_rules_kotlin//kotlin:android.bzl", "kt_android_library")
2 |
3 | kt_android_library(
4 | name = "repository",
5 | srcs = glob(["*.kt"]),
6 | custom_package = "ltd.evilcorp.core.repository",
7 | visibility = ["//visibility:public"],
8 | deps = [
9 | "//core/src/main/kotlin/db",
10 | "//core/src/main/kotlin/vo",
11 | "@maven//:javax_inject_javax_inject",
12 | "@maven//:org_jetbrains_kotlinx_kotlinx_coroutines_core",
13 | ],
14 | )
15 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Dodan je prikaz stanja veze kontakta
2 |
3 | Ispravljen je prekid programa pri pokretanju na novijim Samsung telefonima
4 | Ispravljeno je stišavanje zvona poziva kad bi trebali biti stišani
5 | Ispravljena je hrpa prekida programa prilikom brisanja kontakata u lošim trenucima
6 | Ispravljen je prekid programa u vezi s pokretanjem postavljenog proxy-ja i bez internetske veze
7 |
8 | Aktualizirano na Toxcore 0.2.16
9 |
10 | Potpuni popis promjena: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | I messaggi non inviati vengono salvati come bozze
2 | Supporto proxy
3 | Opzione per contrassegnarsi automaticamente come assente
4 | Opzione per sovrascrivere i nodi bootstrap utilizzati
5 | Risposta diretta dalle notifiche
6 | Supporto automatico per i trasferimenti di file
7 | Segnaposto carini per gli avatar
8 | Cancellare una chat elimina i relativi file trasferiti
9 | Tradotto in portoghese brasiliano, russo e tedesco
10 |
11 | Registro modifiche: https://github.com/evilcorpltd/aTox/releases
12 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/vo/FriendRequest.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.vo
6 |
7 | import androidx.room.ColumnInfo
8 | import androidx.room.Entity
9 | import androidx.room.PrimaryKey
10 |
11 | @Entity(tableName = "friend_requests")
12 | data class FriendRequest(
13 | @PrimaryKey
14 | @ColumnInfo(name = "public_key")
15 | val publicKey: String,
16 |
17 | @ColumnInfo(name = "message")
18 | val message: String = "",
19 | )
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Anzeige des Verbindungsstatus von Kontakten hinzugefügt
2 |
3 | Absturz beim Start auf neueren Samsung-Handys behoben
4 | Der Klingelton für Anrufe wurde nicht immer stumm geschaltet, wenn er es sollte
5 | Eine Reihe von Abstürzen beim Löschen von Kontakten zu ungünstigen Zeitpunkten behoben
6 | Absturz behoben, der auftrat, wenn man mit einem Proxy startete und kein Internet hatte
7 |
8 | Aktualisiert auf Toxcore 0.2.16
9 |
10 | Vollständiges Changelog: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Adicionada a exibição de status de conexão dos contatos
2 |
3 | Corrigida uma falha na inicialização em telefones Samsung mais recentes
4 | Corrigido o toque de chamada nem sempre sendo silenciado quando deveria ser
5 | Corrigidos um monte de travamentos ao excluir contatos em momentos críticos
6 | Corrigida um travamento relacionado à inicialização com de proxy mas sem internet
7 |
8 | Atualizado para Toxcore 0.2.16
9 |
10 | Registro de alterações completo: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Непослате поруке се чувају као скице
2 | Подршка за прокси
3 | Опција за аутоматско означавање одсутним
4 | Опција за постављање почетних чворова
5 | Сада можете одговарати директно из обавештења
6 | Подршка за аутоматско прихватање преноса датотека
7 | Лепе кућице за аватаре
8 | Чишћење чета сада брише придружене преносе датотека
9 | Поправљено дељење порука са вишебајтним знаковима
10 | Превод на бразилски португалски, руски и немачки
11 |
12 | Пун дневник измена: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/atox/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
--------------------------------------------------------------------------------
/atox/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 8dp
4 | 176dp
5 |
6 | 5dp
7 | 15dp
8 | 50dp
9 |
10 | 28dp
11 |
12 | 50dp
13 |
14 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Elküldetlen üzenetek mentése piszkozatként
2 | Proxy támogatás
3 | Automatikus távollét lehetősége
4 | Induló csomópontok felülbírálásának lehetősége
5 | Mostmár közvetlenül az értesítésekből is válaszolhatsz
6 | File átvitelek automatikus elfogadása
7 | Szép avatár helyjelölők
8 | Egy csevegés törlése a kapcsolódó file átviteleket is törli
9 | Multi-byte karakterek sortörésének javítása
10 | Lefordítva brazil portugál, orosz és német nyelvekre
11 |
12 | Teljes változáslista: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Aggiunta visualizzazione degli stati dei contatti
2 |
3 | Risolto un arresto anomalo all'avvio sui recenti dispositivi Samsung
4 | Risolta la suoneria delle chiamate che non veniva sempre silenziata quando avrebbe dovuto
5 | Risolti alcuni arresti anomali durante l'eliminazione dei contatti in momenti difficili
6 | Risolto un arresto anomalo relativo all'avvio con un set di proxy e senza Internet
7 |
8 | Aggiornato a Toxcore 0.2.16
9 |
10 | Registro completo delle modifiche: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Unsent messages are saved as drafts
2 | Proxy support
3 | Option to automatically get marked as away
4 | Option to override the bootstrap nodes used
5 | You can now reply directly from the notifications
6 | Auto-accept support for file transfers
7 | Pretty avatar placeholders
8 | Clearing a chat now deletes the associated file transfers
9 | Fixed splitting of messages with multi-byte characters
10 | Translated to Brazilian Portuguese, Russian, and German
11 |
12 | Full changelog: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/changelogs/13.txt:
--------------------------------------------------------------------------------
1 | Se agregó una visualización de los estados de conexión de los contactos.
2 |
3 | Se corrigió un bloqueo al inicio en los teléfonos Samsung más nuevos.
4 | Se corrigió que el tono de llamada no siempre se silenciara cuando debería serlo.
5 | Se corrigió un montón de fallas al eliminar contactos en malos momentos.
6 | Se corrigió un bloqueo relacionado con comenzar con un conjunto de proxy y sin Internet.
7 |
8 | Actualizado a Toxcore 0.2.16
9 |
10 | Registro de cambios completo: https://github.com/evilcorpltd/aTox/releases
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nb-NO/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Usendte meldinger lagres som kladder
2 | Mellomtjenerstøtte
3 | Marker din fraværsstatus automatisk
4 | Overstyr hvilke oppstartsnoder som brukes
5 | Du kan nå svare direkte fra merknader
6 | Auto-godkjenning av filoverføringer
7 | Fine plassholdere for avatarer
8 | Å tømme en sludring fjerner nå tilknyttede filoverføringer
9 | Fikset inndeling av meldinger som inneholder multi-byte-tegn
10 | Oversettelse til brasiliansk portugisisk, russisk, og tysk
11 |
12 | Full endringslogg: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ro/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Mesajele neexpediate sunt salvate ca ciorne
2 | Suport proxy
3 | Opțiunea de a fi marcat(ă) automat ca fiind plecat(ă)
4 | Opțiunea de a suprascrie nodurile bootstrap utilizate
5 | Acum poți răspunde direct din notificări
6 | Suport pentru acceptarea automată a transferurilor de fișiere
7 | Caractere de avatar frumoase
8 | Ștergerea unui chat acum șterge și transferurile de fișiere asociate
9 | A fost reparată divizarea mesajelor cu caractere multi-byte
10 |
11 | Changelog complet: https://github.com/evilcorpltd/aTox/releases
12 |
--------------------------------------------------------------------------------
/atox/src/main/res/values-v29/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Неизпратените съобщения се запазват като чернови
2 | Поддръжка на прокси
3 | Възможност за автоматично маркиране като отсъстващи
4 | Възможност за промяна на използваните начални възли
5 | Отговаряте директно от известията
6 | Поддръжка на автоматично приемане за прехвърляне на файлове
7 | Нови аватари
8 | Изчистването на чат изтрива свързаните файлове
9 | Коригирано разделяне на съобщения
10 | Преведен на бразилски португалски, руски и немски език
11 |
12 | Пълен списък с промените: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Mensajes no enviados se guardan como borradores
2 | Soporte de proxy
3 | Opción para marcarse autom. como ausente
4 | Opción para anular los nodos de arranque
5 | Se puede responder desde las notificaciones
6 | Soporte de aceptación automática para transferencias de archivos
7 | Bonitos marcadores de posición de avatar
8 | Al eliminar un chat se eliminan las transferencias de archivos asociadas
9 | Corregido división de mensajes con caracteres de varios bytes
10 |
11 | Full changelog: https://github.com/evilcorpltd/aTox/releases
12 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | پیام های ارسال نشده به عنوان پیش نویس ذخیره می شوند
2 | پشتیبانی پروکسی
3 | گزینه ای برای علامت گذاری خودکار به عنوان دور
4 | گزینه ای برای نادیده گرفتن گره های راه انداز مورد استفاده
5 | اکنون می توانید مستقیماً از طریق اعلان ها پاسخ دهید
6 | پذیرش خودکار پشتیبانی از انتقال فایل
7 | متغیرهایی از مکان نمای آواتار زیبا
8 | با پاکسازی چت ، انتقال فایل مربوطه حذف می شود
9 | رفع تقسیم پیامها با کاراکترهای چند بایتی
10 | به پرتغالی برزیلی ، روسی و آلمانی ترجمه شده است
11 |
12 | تغییرات کامل: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Neposlané správy sú uložené ako drafts
2 | Podpora proxy
3 | Možnosť byť automaticky označený ako vzdialený
4 | Možnosť zrušiť bootstrap nodes
5 | Teraz môžete odpovedať priamo z notifikácií
6 | Podpora automatického prijatia pri prenose súborov
7 | Pekné náhrady avatarov
8 | Vyčistenie chat-u teraz zmaže asociované prenesené súbory
9 | Opravené rozdelenie správ, ktoré obsahujú multi-byte znaky
10 | Preložené do Brazílskej Portugalčiny, Ruštiny, a Nemčiny
11 |
12 | Úplný zoznam zmien: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Gönderilmeyen mesajlar taslak olarak kaydedilir
2 | Vekil sunucu desteği
3 | Otomatik olarak uzakta olarak işaretlenme seçeneği
4 | Kullanılan önyükleme düğümlerini geçersiz kılma seçeneği
5 | Artık doğrudan bildirimlerden yanıt verebilirsiniz
6 | Dosya aktarımları için otomatik kabul desteği
7 | Güzel avatar yer tutucuları
8 | Bir sohbeti temizlemek artık ilişkili dosya aktarımlarını siler
9 | Çok baytlı karakterlerle mesajların bölünmesi düzeltildi
10 |
11 | Tam değişiklik günlüğü: https://github.com/evilcorpltd/aTox/releases
12 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_speakerphone.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/atox/src/main/res/values-night-v29/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Speichern von ungesendete Nachrichten als Entwurf
2 | Proxy-Support
3 | Option, automatisch als Abwesend markiert zu werden
4 | Option, Bootstrap-Knoten zu überschreiben
5 | Antworten über Benachrichtigungen
6 | Option für automatisches Annehmen von Dateien
7 | Schöne Avatar-Platzhalter
8 | Löschen von Chats löscht zugehörige Dateiübertragungen
9 | Behebung von Aufteilen von Nachrichten mit Multi-Byte-Zeichen
10 | Übersetzungen: Portugiesisch, Russisch, Deutsch
11 |
12 | Kompletter Changelog: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Ne poslane poruke spremaju se kao skice
2 | Podrška za poslužitelje
3 | Automatsko označivanje odsutnosti
4 | Zaobilaženje korištenih bootstrap čvorova
5 | Sada je moguće odgovoriti izravno iz obavijesti
6 | Automatsko prihvaćanje prijenosa datoteka
7 | Rezervirana mjesta za avatare
8 | Brisanjem razgovora sada se brišu pridruženi prijenosi datoteka
9 | Ispravljanje dijeljenja poruka s višebajtnim znakovima
10 | Prevedeno na brazilski portugalski, ruski i njemački
11 |
12 | Dnevnik promjena: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Niewysłane wiadomości są zapisywane jako szkice
2 | Obsługa proxy
3 | Automatyczne oznaczanie jako zajęty/a
4 | Możliwość zastąpnienia używanych węzłów startowych
5 | Odpowiadanie bezpośrednio z powiadomienia
6 | Automatycznego akceptowania plików
7 | Ładne placeholdery awatarów
8 | Czyszczenie czatu usuwa też transefy plików
9 | Poprawiono dzielenie wiadomości zawierających znaki wielobajtowe
10 | Przetłumaczono na brazylijski portugalski, rosyjski oraz niemiecki
11 |
12 | Pełny changelog: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Mensagens não enviadas são salvas como rascunhos
2 | Suporte a proxy
3 | Opção de ser autom. marcado como ausente
4 | Opção de alterar os nós de bootstrap usados
5 | Agora você pode responder mensagens direto das notificações
6 | Suporte a auto-aceitação de transferência de arquivos
7 | Lindos avatares marcadores de posição
8 | Limpar a conversa agora apaga as transferências de arquivos associadas
9 | Corrigido a divisão de mensagens com caracteres multi-byte
10 |
11 | Changelog completo: https://github.com/evilcorpltd/aTox/releases
12 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Неотправленные сообщения сохраняются как черновики
2 | Поддержка прокси
3 | Опция автоматической установки статуса "Отошёл"
4 | Поддержка внешних списков начальных узлов
5 | Ответы на сообщения из уведомлений
6 | Автоматическое принятие файлов
7 | Красивые стандартные аватарки
8 | Очистка чата теперь удаляет переданные в нём файлы
9 | Исправлено разделение сообщений с многобайтными символами
10 | Переведено на бразильский португальский, русский и немецкий
11 |
12 | Полный список изменений: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Невідправлені повідомлення зберігаються як чернетки
2 | Підтримка проксі
3 | Автоматична зміна статусу на "Відійшов"
4 | Підтримка зовнішніх списків початкових вузлів
5 | Тепер можна відповідати прямо у сповіщеннях
6 | Автоматичний прийом файлів
7 | Гарні стандартні аватарки
8 | Очитка чату тепер видаляє пов'язані з ним файли
9 | Виправлено розділення повідомлень із багатобайтними символами
10 | Перекладено на бразильску португальську, російську та німецьку мови
11 |
12 | Повний перелік змін: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Neišsiųsti pranešimai išsaugomi juodraščiuose
2 | Proxy palaikymas
3 | Galimybė automatiškai pažymėti "laikinai nepasiekiamas"
4 | Galimybė nepaisyti naudojamų bootstrap mazgų
5 | Jau galite atsakyti tiesiai iš notifikacijų
6 | Auto-tvirtinimas perkeliant failus
7 | Gražūs avataro vietaženkliai
8 | Išvalius pokalbį, ištrinami ir susiję failų perkėlimai
9 | Fiksuotas pranešimų su daugiabaičiais simboliais dalijimas
10 | Išversta į brazilų, rusų, vokiečių kalbas
11 |
12 | Visas pakeitimų žurnalas: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_mic.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/he/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox היא אפליקציית צ'אטים חינמית ובעלת קוד פתוח בשביל הפרוטוקול Tox.
2 |
3 | למה aTox?
4 | * קוד פתוח: חופש ללשתף, לבדוק ולשנות כרצונך.
5 | * סבירה: ברירות מחדל סבירות, ללא ניחושים של מה שחשוב לך ולא מתעלמת ממה שאת/ה רוצה.
6 | * מוצפנת מקצה לקצה: האנשים היחידים שיכולים לראות את השיחות שלך הם האנשים איתם את/ה מדבר/ת.
7 | * מופץ: ללא שרתים מרכזיים שניתן להפילם או להכריח אותם למסור מידע.
8 | * קל: ללא טלמטריה, פרסומות או דרכים אחרות לעקוב אחריך.
9 |
10 | מידע נוסף: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_attach_file.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/nb-NO/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox er et fritt sludreprogram for Tox-protokollen.
2 |
3 | Hvorfor aTox?
4 | * Fritt. Del, studer og endre som du vil.
5 | * Formålstjenlig: Bra forvalg, gjetter seg ikke til hva du liker, ignorerer ikke hva du ønsker.
6 | * Ende-til-ende -kryptert: De eneste som kan se samtalene dine er dem du snakker med.
7 | * Distribuert: Ingen sentrale tjenere som kan tas ned, eller overtales til å gi fra seg data.
8 | * Lett: Ingen telemetri, reklame, eller andre typer overvåkning.
9 |
10 | Mer info: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/bazel/opus/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@rules_cc//cc:defs.bzl", "cc_library")
2 |
3 | genrule(
4 | name = "platform_header",
5 | srcs = select({
6 | "@atox//bazel/tools/config:android_aarch64": ["android_arm/config.h"],
7 | "@atox//bazel/tools/config:android_arm": ["android_arm/config.h"],
8 | "@atox//bazel/tools/config:android_x86_32": ["android_x86/config.h"],
9 | "@atox//bazel/tools/config:android_x86_64": ["android_x86/config.h"],
10 | }),
11 | outs = ["config.h"],
12 | cmd = "cp $< $@",
13 | )
14 |
15 | cc_library(
16 | name = "config",
17 | hdrs = [":platform_header"],
18 | visibility = ["@opus//:__pkg__"],
19 | )
20 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/tox/ToxTypes.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2025 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.tox
6 |
7 | import ltd.evilcorp.core.vo.PublicKey
8 |
9 | @JvmInline
10 | value class ToxID(private val value: String) {
11 | fun bytes() = value.hexToBytes()
12 | fun string() = value
13 |
14 | fun toPublicKey() = PublicKey(value.dropLast(12))
15 |
16 | companion object {
17 | fun fromBytes(toxId: ByteArray) = ToxID(toxId.bytesToHex())
18 | }
19 | }
20 |
21 | data class BootstrapNode(val address: String, val port: Int, val publicKey: PublicKey)
22 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_not_interested.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox is a free open-source messaging app for the Tox protocol.
2 |
3 | Why aTox?
4 | * Open-source: free to share, inspect, and change as you like.
5 | * Reasonable: sane defaults, no guesses about what you care about, doesn't ignore what you want.
6 | * End-to-end encrypted: the only people who can see your conversations are the people you're talking to.
7 | * Distributed: no central servers that can be taken down or compelled to turn over data.
8 | * Lightweight: no telemetry, ads, or other forms of monitoring.
9 |
10 | More info: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pl/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox to wolny, otwartoźródłowy komunikator oparty na protokole Tox.
2 |
3 | Dlaczego aTox?
4 | * Otwartoźródłowy: przeglądaj, dziel się i modyfikuj kod do woli.
5 | * Rozsądne ustawienia: domyślna prostota, nie zgaduje na czym Ci zależy ani nie ignoruje Twoich potrzeb.
6 | * Szyfrowanie End-to-end: tylko osoby z którymi rozmawiasz widzą konwersację.
7 | * Rozproszony: brak centralnie zarządzanych serwerów które można zamknąć lub zmusić do przekazania danych.
8 | * Lekki: brak telemetrii, reklam i innych form nadzoru.
9 |
10 | Więcej na: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/App.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2025 Robin Lindén
2 | // SPDX-FileCopyrightText: 2019 aTox contributors
3 | //
4 | // SPDX-License-Identifier: GPL-3.0-only
5 |
6 | package ltd.evilcorp.atox
7 |
8 | import android.app.Application
9 | import androidx.annotation.VisibleForTesting
10 | import ltd.evilcorp.atox.di.AppComponent
11 | import ltd.evilcorp.atox.di.DaggerAppComponent
12 |
13 | class App : Application() {
14 | val component: AppComponent by lazy {
15 | componentOverride ?: DaggerAppComponent.factory().create(applicationContext)
16 | }
17 |
18 | @VisibleForTesting
19 | var componentOverride: AppComponent? = null
20 | }
21 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | As mensagens não enviadas são guardadas como rascunhos
2 | Suporte de proxy
3 | Opção para ser automaticamente marcado como ausente
4 | Opção para substituir os nós de arranque utilizados
5 | Agora é possível responder diretamente a partir das notificações
6 | Suporte de aceitação automática para transferências de ficheiros
7 | Marcadores de lugar de avatar bonitos
8 | A limpeza de uma conversa elimina agora as transferências de ficheiros associadas
9 | Corrigida a divisão de mensagens com caracteres multi-byte
10 | Traduzido para português do Brasil, russo e alemão
11 |
12 | Registo de alterações completo: https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/bazel/jvm-toxcore-api.BUILD:
--------------------------------------------------------------------------------
1 | load("@io_bazel_rules_scala//scala:scala.bzl", "scala_library")
2 | load("@rules_java//java:defs.bzl", "java_library")
3 |
4 | scala_library(
5 | name = "jvm-toxcore-api",
6 | srcs = glob([
7 | "src/main/java/**/*.java",
8 | "src/main/java/**/*.scala",
9 | ]),
10 | visibility = ["//visibility:public"],
11 | deps = ["@maven//:org_jetbrains_annotations"],
12 | )
13 |
14 | java_library(
15 | name = "jvm-toxcore-api-java",
16 | srcs = glob(["src/main/java/**/*.java"]),
17 | visibility = ["//visibility:public"],
18 | deps = [
19 | ":jvm-toxcore-api",
20 | "@maven//:org_jetbrains_annotations",
21 | ],
22 | )
23 |
--------------------------------------------------------------------------------
/domain/src/test/kotlin/tox/ToxTypesTest.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2025 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.tox
6 |
7 | import kotlin.test.Test
8 | import kotlin.test.assertEquals
9 | import ltd.evilcorp.core.vo.PublicKey
10 |
11 | class ToxTypesTest {
12 | @Test
13 | fun `converting tox ids to public keys works`() {
14 | val id = ToxID("76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39218F515C39A6")
15 | val publicKey = PublicKey("76518406F6A9F2217E8DC487CC783C25CC16A15EB36FF32E335A235342C48A39")
16 | assertEquals(publicKey, id.toPublicKey())
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fa/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox یک برنامه پیام رسانی منبع باز رایگان برای پروتکل Tox است.
2 |
3 | چرا aTox؟
4 | * منبع باز: رایگان برای اشتراک گذاری ، بازرسی و تغییر به دلخواه.
5 | * منطقی: پیش فرض های عاقلانه ، هیچ حدسی در مورد آنچه برای شما اهمیت دارد ، نمی گذارد آنچه شما می خواهید را نادیده می گیرد.
6 | * رمزگذاری سر به سر: تنها افرادی که می توانند مکالمات شما را ببینند افرادی هستند که با آنها صحبت می کنید.
7 | * توزیع شده: هیچ سرور مرکزی وجود ندارد که بتوان آن را حذف یا مجبور به تحویل داده ها کرد.
8 | * سبک وزن: بدون تله متری ، تبلیغات یا سایر اشکال نظارت.
9 |
10 | اطلاعات بیشتر: aTox ، Tox .
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/changelogs/9.txt:
--------------------------------------------------------------------------------
1 | Les messages non envoyés sont enregistrés comme brouillons
2 | Prise en charge des proxys
3 | Option pour être automatiquement marqué comme absent
4 | Option pour remplacer les nœuds d'amorçage utilisés
5 | Tu peux désormais répondre directement depuis les notifications
6 | Prise en charge de l'acceptation automatique des transferts de fichiers
7 | Jolis espaces réservés aux avatars
8 | Effacer un chat supprime désormais les transferts de fichiers associés
9 | Correction du fractionnement des messages avec des caractères multi-octets
10 | Traduit en portugais brésilien, russe et allemand
11 |
12 | Journal des modifications complet : https://github.com/evilcorpltd/aTox/releases
13 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/is/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox er skilaboðaforrit fyrir Tox og opinn hugbúnaður.
2 |
3 | Af hverju aTox?
4 | * Opinn hugbúnaður: frjálst að deila, skoða og breyta eins og þú vilt.
5 | * Skynsamlegt: skynsamlegar sjálfgefnar stillingar, engar getgátur um hvað þér þykir vænt um, hunsar ekki það sem þú vilt.
6 | * Dulkóðað frá enda til enda: eina fólkið sem getur séð samtölin þín er fólkið sem þú ert að tala við.
7 | * Dreift: Engir aðal netþjónar sem hægt er að taka niður eða neyða til að afhenda gögnum.
8 | * Létt: engin fjarmæling, auglýsingar eða annars konar eftirlit.
9 |
10 | Frekari upplýsingar: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sr/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox је слободна апликација за чет отвореног изворног кода која користи Tox протокол.
2 |
3 | Зашто aTox?
4 | * Отворени изворни код: слобода за дељење, проучавање и мењање по жељи.
5 | * Разуман: разумне подразумеване вредности, без претпоставки о томе шта вам је важно, без игнорисања онога шта ви желите.
6 | * End-to-end шифровање: једине особе које виде ваше разговоре су ваши саговорници.
7 | * Децентрализован: без централних сервера који се могу угасити или приморати да предају податке.
8 | * Лаган: без телеметрије, огласа и других облика праћења.
9 |
10 | Више информација: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tum/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox ni lusko laulele ilo waliyose wangasintha lakutumizgilana ma uthenga gha Tox protocol.
2 |
3 | Chifukwa kusankha aTox?
4 | * Open-source: free to share, inspect, and change as you like.
5 | * Reasonable: sane defaults, no guesses about what you care about, doesn't ignore what you want.
6 | * End-to-end encrypted: the only people who can see your conversations are the people you're talking to.
7 | * Distributed: no central servers that can be taken down or compelled to turn over data.
8 | * Lightweight: no telemetry, ads, or other forms of monitoring.
9 |
10 | More info: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/bazel/libvpx/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@rules_cc//cc:defs.bzl", "cc_library")
2 |
3 | licenses(["notice"])
4 |
5 | exports_files(
6 | srcs = [
7 | "vpx_config.mk",
8 | "vpx_version.h",
9 | ],
10 | visibility = ["@libvpx//:__pkg__"],
11 | )
12 |
13 | cc_library(
14 | name = "platform_asm_header",
15 | hdrs = ["vpx_config.asm"],
16 | visibility = ["@libvpx//:__pkg__"],
17 | )
18 |
19 | cc_library(
20 | name = "vpx_config",
21 | hdrs = ["vpx_config.h"],
22 | includes = ["."],
23 | visibility = ["@libvpx//:__pkg__"],
24 | )
25 |
26 | cc_library(
27 | name = "vpx_version",
28 | hdrs = ["vpx_version.h"],
29 | includes = ["."],
30 | visibility = ["@libvpx//:__pkg__"],
31 | )
32 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/vo/PublicKey.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2025 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.vo
6 |
7 | private fun hexToBytes(hex: String) = hex.chunked(2).map { it.uppercase().toInt(radix = 16).toByte() }.toByteArray()
8 | private fun bytesToHex(bytes: ByteArray) = bytes.joinToString(separator = "") { "%02X".format(it) }
9 |
10 | @JvmInline
11 | value class PublicKey(private val value: String) {
12 | fun bytes() = hexToBytes(value)
13 | fun string() = value
14 | fun fingerprint() = value.take(8)
15 |
16 | companion object {
17 | fun fromBytes(publicKey: ByteArray) = PublicKey(bytesToHex(publicKey))
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ro/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox este o aplicație de mesagerie gratuită și open-source pentru protocolul Tox.
2 |
3 | De ce aTox?
4 | * Open-source: liber de partajat, inspectat și modificat după bunul plac.
5 | * Rezonabil: setări implicite sănătoase, fără păreri și presupuneri despre ce îți pasă, tu alegi ce vrei.
6 | * Criptare de la un capăt la altul: doar tu și persoana cu care vorbești puteți vedea conversațiile.
7 | * Distribuit: fără servere centrale care pot fi demontate sau care pot fi obligate să predea date.
8 | * Ușor: fără telemetrie, anunțuri sau alte forme de monitorizare.
9 |
10 | Află mai mult: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bs/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox je slobodan program otvorenog koda za razmjenu poruka pomoću Tox protokola.
2 |
3 | Zašto aTox?
4 | * Otvoreni kod: slobodno dijeli, pregledaj i mijenjaj po volji.
5 | * Primjerenost: normalne standardne postavke, bez nagađanja o tome do čega ti je stalo, ne zanemaruje ono što ti želiš.
6 | * Obostrano šifriranje: jedini ljudi koji mogu vidjeti tvoje razgovore su ljudi s kojima razgovaraš.
7 | * Distribucija: nema središnjih poslužitelja koji se mogu srušiti ili prisiliti da prikazuju podatke.
8 | * Jednostavnost: bez telemetrije, oglasa ili drugih oblika praćenja.
9 |
10 | Više informacija: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hr/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox je slobodan program otvorenog koda za razmjenu poruka pomoću Tox protokola.
2 |
3 | Zašto aTox?
4 | * Otvoreni kod: slobodno dijeli, pregledaj i mijenjaj po volji.
5 | * Primjerenost: normalne standardne postavke, bez nagađanja o tome do čega ti je stalo, ne zanemaruje ono što ti želiš.
6 | * Obostrano šifriranje: jedini ljudi koji mogu vidjeti tvoje razgovore su ljudi s kojima razgovaraš.
7 | * Distribucija: nema središnjih poslužitelja koji se mogu srušiti ili prisiliti da prikazuju podatke.
8 | * Jednostavnost: bez telemetrije, oglasa ili drugih oblika praćenja.
9 |
10 | Više informacija: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/sk/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox je bezplatná aplikácia pre zasielanie a prijímanie správ cez Tox protokol.
2 |
3 | Prečo použiť aTox?
4 | * Je open-source: má otvorený zdrojový kód, čo umožňuje zdieľať, prezrieť si a prispieť k jeho vylepšeniam.
5 | * Je rozumný: má rozumné základné nastavenie, nemusíte hádať či spĺňa vaše požiadavky.
6 | * Je "end-to-end" šifrovaný: vašu konverzáciu vidia iba ľudia s ktorými komunikujete.
7 | * Je distribuovaný: bez použitia centrálnych serverov, ktoré by mohli odovzdať vaše dáta alebo skolabovať.
8 | * Je odľahčený: bez telemetrie a iných foriem monitorovania.
9 |
10 | Viac informácií: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/lt/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox yra nemokama atvirojo kodo pranešimų siuntimo programa, skirta Tox protokolui.
2 |
3 | Kodėl aTox?
4 | * Atvirasis kodas: galite laisvai dalytis, tikrinti ir keisti, kaip jums patinka.
5 | * Protinga: sveikos numatytuosius nustatymus, jokių spėlionių apie tai, kas jums rūpi, neignoruoja to, ko jūs norite.
6 | * Užšifruota nuo galo iki galo: jūsų pokalbius gali matyti tik tie žmonės, su kuriais kalbate.
7 | * Paskirstytas: nėra centrinių serverių, kuriuos galima pašalinti arba priversti perduoti duomenis.
8 | * Lengvas: nėra telemetrijos, reklamų ar kitų stebėjimo formų.
9 |
10 | Daugiau informacijos: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/tr/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox, Tox protokolü için özgür ve açık kaynaklı bir mesajlaşma uygulamasıdır.
2 |
3 | Neden aTox?
4 | * Açık kaynaklı: istediğiniz gibi paylaşmakta, incelemekte ve değiştirmekte özgürsünüz.
5 | * Makul: aklı başında öntanımlı değerler, neye önem verdiğiniz hakkında hiçbir tahminde bulunmaz, sizin ne istediğinizi göz ardı etmez.
6 | * Uçtan uca şifreli: konuşmalarınızı görebilen tek kişi, konuştuğunuz kişilerdir.
7 | * Dağıtık: kapatılabilecek veya verileri devretmeye zorlanabilecek merkezi sunucular yoktur.
8 | * Hafif: uzaktan izleme, reklam veya diğer izleme biçimleri yok.
9 |
10 | Daha fazla bilgi için: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_call.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_speakerphone_off.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox é uma app de mensagens gratuita e de código aberto para o protocolo Tox.
2 |
3 | Por que usar o aTox?
4 | * Código aberto: gratuito para compartilhar, inspecionar e modificar ao seu gosto.
5 | * Sensato: padrões sensatos, sem tentar advinhar o que gosta e não ignora o que você quer.
6 | * Criptografia de ponta a ponta: as únicas pessoas que podem ver as suas conversas são as pessoas com quem conversar.
7 | * Descentralizado: sem servidores centrais que podem ser derrubados ou forçados a entregar dados.
8 | * Leve: sem telemetria, propaganda, ou quaisquer formas de monitoramento.
9 |
10 | Para mais informações: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/de/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox ist eine freie und Open-Source Messaging-App für das Tox-Protokoll.
2 |
3 | Warum aTox?
4 | * Open-Source: du kannst die App teilen, den Code untersuchen oder verändern.
5 | * Vernünftig: gute Standardeinstellungen, kein Raten, was du willst, ignoriert nicht, was du willst.
6 | * Ende-zu-Ende-verschlüsselt: die einzigen Leute, die deine Nachrichten sehen können, sind die, mit denen du schreibst.
7 | * Verteilt: es gibt keine zentralen Server, die vom Netz genommen werden können oder gezwungen werden, Daten weiterzugeben.
8 | * Leichtgewichtig: keine Telemetrie, Werbung oder andere Formen des Trackings.
9 |
10 | Mehr Info: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/pt-BR/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox é um app de mensagens gratuito e de código aberto para o protocolo Tox.
2 |
3 | Por que usar o aTox?
4 | * Código aberto: gratuito para compartilhar, inspecionar e modificar ao seu gosto.
5 | * Sensato: padrões sensatos, sem tentar advinhar o que você gosta e não ignora o que você quer.
6 | * Criptografia de ponta a ponta: as únicas pessoas que podem ver suas conversas são as pessoas com quem você conversar.
7 | * Descentralizado: sem servidores centrais que podem ser derrubados ou forçados a entregar dados.
8 | * Leve: sem telemetria, propaganda, ou quaisquer formas de monitoramento.
9 |
10 | Para mais informações: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/ui/contactprofile/ContactProfileViewModel.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2025 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.ui.contactprofile
6 |
7 | import androidx.lifecycle.LiveData
8 | import androidx.lifecycle.ViewModel
9 | import androidx.lifecycle.asLiveData
10 | import javax.inject.Inject
11 | import ltd.evilcorp.core.vo.Contact
12 | import ltd.evilcorp.core.vo.PublicKey
13 | import ltd.evilcorp.domain.feature.ContactManager
14 |
15 | class ContactProfileViewModel @Inject constructor(contactManager: ContactManager) : ViewModel() {
16 | var publicKey: PublicKey = PublicKey("")
17 | val contact: LiveData by lazy { contactManager.get(publicKey).asLiveData() }
18 | }
19 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/bg/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox е безплатно приложение за съобщения с отворен код за протокола Tox.
2 |
3 | Защо aTox?
4 | * С отворен код: безплатно за споделяне, проверка и промяна, както желаете.
5 | * Разумно: нормални настройки по подразбиране, без предположения за това, което ви интересува, не пренебрегва това, което вие искате.
6 | * Шифровани данни от край до край: единствените хора, които могат да виждат вашите разговори, са хората, с които говорите.
7 | * Разпределени: няма централни сървъри, които могат да бъдат свалени или принудени да прехвърлят данни.
8 | * Лек: без телеметрия, реклами или други форми на наблюдение.
9 |
10 | Повече информация: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/uk/full_description.txt:
--------------------------------------------------------------------------------
1 | Tox - це безкоштовний месенджер із відкритим початковим кодом, що використовує протокол Tox.
2 |
3 | Чому aTox?
4 | * Відкритий початковий код: доступність коду для поширення, перевірки та змін за вашим бажанням.
5 | * Помірність: розумні базові налаштування, які не мають намірів вгадувати, але не ігнорують того, що ви хочете.
6 | * Наскрізне шифрування: лише ви та ваш співрозмовник можуть побачити спільну переписку.
7 | * Розподіленість: відстуні центральні сервери, що можуть вийти з ладу або передати ваші дані комусь сторонньому.
8 | * Легкість: свобода від телеметрії, реклами та інших форм стеження за вами.
9 |
10 | Детальніше: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/es/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox es una aplicación de mensajería gratuita de código abierto para el protocolo Tox.
2 |
3 | ¿Por qué aTox?
4 | * Código abierto: libre para compartir, inspeccionar y cambiarlo como quieras.
5 | * Razonable: valores predeterminados lógicos, sin especular sobre lo que importa, no ignora lo que tú quieres.
6 | * Encriptación de extremo a extremo: las únicas personas que pueden ver tus conversaciones son las personas con las que estás hablando.
7 | * Distribuido: no hay servidores centrales que puedan ser eliminados u obligados a entregar datos.
8 | * Liviano: no hay telemetría, publicidad y otras formas de monitoreo.
9 |
10 | Más info: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/hu/full_description.txt:
--------------------------------------------------------------------------------
1 | Az aTox egy szabad, nyílt forráskódú üzenetküldő alkalmazás a Tox protokollhoz.
2 |
3 | Miért az aTox?
4 | * Nyílt forráskódú: szabadon megosztható, átvizsgálható és megváltoztatható igény szerint.
5 | * Megfelelő: ésszerű alapbeállítások, nem próbálja kitalálni mit szeretnél, nem hagyja figyelmen kívül amit te akarsz.
6 | * Végponttól-végpontig titkosítás: csak azok láthatják a beszélgetést akikkel beszélsz.
7 | * Elosztott: nincsenek központi szerverek amiket le lehetne állítani vagy ahol az adatokat át lehetne irányítani máshová.
8 | * Pehelysúlyú: nincs telemetria, reklám vagy bármilyen egyéb nyomkövetés.
9 |
10 | További információ: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/it/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox è un'app di messaggistica open source gratuita per il protocollo Tox.
2 |
3 | Perché aTox?
4 | * Open-source: sei libero di condividerlo, controllarlo e modificarlo a tuo piacimento.
5 | * Ragionevole: impostazioni predefinite pulite, nessuna ipotesi su ciò che ti interessa, che non ignora ciò che tu davvero desideri.
6 | * Crittografato end-to-end: le uniche persone che possono vedere le tue conversazioni sono le persone con cui stai parlando.
7 | * Distribuito: nessun server centrale che può essere rimosso o costretto a consegnare i tuoi dati.
8 | * Leggero: nessuna telemetria, pubblicità o qualsiasi forma di monitoraggio.
9 |
10 | Ulteriori informazioni: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_call_end.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/scripts/common.mk:
--------------------------------------------------------------------------------
1 | SRCDIR := $(CURDIR)/_git
2 | DESTDIR := $(CURDIR)/_install
3 | BUILDDIR := $(CURDIR)/_build/$(TARGET)
4 |
5 | export CFLAGS := -O3 -pipe
6 | export CXXFLAGS := -O3 -pipe
7 | export LDFLAGS :=
8 |
9 | export PATH := $(DESTDIR)/host/bin:$(PATH)
10 |
11 | # Android NDK
12 | NDK_DIR := android-ndk-r21e
13 | NDK_PACKAGE := $(NDK_DIR)-$(shell perl -e 'print $$^O')-x86_64.zip
14 | NDK_URL := http://dl.google.com/android/repository/$(NDK_PACKAGE)
15 |
16 | NDK_COMMON_FILES := \
17 | sources/android/cpufeatures \
18 | toolchains/llvm/prebuilt/linux-x86_64/bin/clang \
19 | toolchains/llvm/prebuilt/linux-x86_64/bin/clang++ \
20 | toolchains/llvm/prebuilt/linux-x86_64/lib/lib64 \
21 | toolchains/llvm/prebuilt/linux-x86_64/lib64 \
22 | toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include
23 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_mic_off.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/fr/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox est une application de messagerie gratuite à code source ouvert pour le protocole Tox.
2 |
3 | Pourquoi aTox ?
4 | * Code source ouvert : libre de partager, inspecter et modifier comme vous le souhaitez.
5 | * Raisonnable : valeurs par défaut raisonnables, pas de suppositions sur ce qui vous intéresse, n'ignore pas ce que vous voulez.
6 | * Chiffré de bout en bout : les seules personnes qui peuvent voir vos conversations sont celles à qui vous parlez.
7 | * Distribué : pas de serveurs centraux qui peuvent être mis hors service ou contraints de fournir des données.
8 | * Léger : pas de télémétrie, de publicité ou d'autres formes de surveillance.
9 |
10 | Plus d'informations : aTox, Tox.
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/el/full_description.txt:
--------------------------------------------------------------------------------
1 | Το aTox είναι μια δωρεάν εφαρμογή ανταλλαγής μηνυμάτων ανοιχτού κώδικα για το πρωτόκολλο Tox.
2 |
3 | Γιατί το aTox;
4 | * Ανοιχτός κώδικας: ελεύθερο να το μοιραστείτε, να το επιθεωρήσετε και να το αλλάξετε όπως θέλετε.
5 | * Λογικό: λογικές προεπιλογές, χωρίς εικασίες για το τι σας ενδιαφέρει, δεν αγνοεί αυτό που θέλετε.
6 | * Κρυπτογραφημένο από άκρο σε άκρο: οι μόνοι άνθρωποι που μπορούν να δουν τις συνομιλίες σας είναι αυτοί με τους οποίους μιλάτε.
7 | * Κατανεμημένο: δεν υπάρχουν κεντρικοί διακομιστές που μπορούν να καταστραφούν ή να εξαναγκαστούν να παραδώσουν δεδομένα.
8 | * Ελαφρύ: δεν υπάρχει τηλεμετρία, διαφημίσεις ή άλλες μορφές παρακολούθησης.
9 |
10 | Περισσότερες πληροφορίες: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | indent_style = space
5 |
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = true
10 |
11 | ktlint_code_style=android_studio
12 |
13 | [*.{kt,kts,gradle}]
14 | indent_size = 4
15 | max_line_length = 120
16 |
17 | ij_kotlin_allow_trailing_comma = true
18 | ij_kotlin_allow_trailing_comma_on_call_site = true
19 |
20 | [*.{yml,yaml}]
21 | indent_size = 2
22 |
23 | [*.xml]
24 | insert_final_newline = false
25 |
26 | # Extensions.kt: We don't want 1 file per extension, or to rename the file when we have 1 extension.
27 | # ToxSaveTester.kt: Named after the testToxSave-function it contains. ktlint wants it to be named after the enum it returns.
28 | [{domain/src/main/kotlin/Extensions.kt,domain/src/main/kotlin/tox/ToxSaveTester.kt}]
29 | ktlint_standard_filename = disabled
30 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/ru/full_description.txt:
--------------------------------------------------------------------------------
1 | aTox это бесплатный мессенджер с открытым исходным кодом, использующий протокол Tox.
2 |
3 | Почему aTox?
4 | * Открытый исходный код: возможность распространять, изучать и изменять код по вашему желанию.
5 | * Рациональность: рациональные настройки по умолчанию, прямо говорящие о своём назначении, и не игнорирующие то, что вы хотите.
6 | * Сквозное шифрование: единственные люди, которые могут увидеть ваши беседы — это люди, с которыми вы общаетесь.
7 | * Распределённость: отсутствие центральных серверов, которые могут быть выключены, или с которых ваши данные могут быть переданы кому-либо постороннему.
8 | * Легковесность: нет телеметрии, рекламы, или других форм наблюдения за вами.
9 |
10 | Больше информации: aTox, Tox.
11 |
--------------------------------------------------------------------------------
/atox/src/main/res/menu/activity_contact_list_drawer.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/db/BUILD.bazel:
--------------------------------------------------------------------------------
1 | load("@io_bazel_rules_kotlin//kotlin:android.bzl", "kt_android_library")
2 | load("@io_bazel_rules_kotlin//kotlin:core.bzl", "kt_ksp_plugin")
3 |
4 | kt_android_library(
5 | name = "db",
6 | srcs = glob(["*.kt"]),
7 | custom_package = "ltd.evilcorp.core.db",
8 | plugins = [":androidx_room_room_compiler_plugin"],
9 | visibility = ["//core:__subpackages__"],
10 | deps = [
11 | "//core/src/main/kotlin/vo",
12 | "@maven//:androidx_room_room_ktx",
13 | "@maven//:androidx_room_room_runtime",
14 | "@maven//:org_jetbrains_kotlinx_kotlinx_coroutines_core",
15 | ],
16 | )
17 |
18 | kt_ksp_plugin(
19 | name = "androidx_room_room_compiler_plugin",
20 | generates_java = True,
21 | processor_class = "androidx.room.RoomKspProcessor",
22 | deps = ["@maven//:androidx_room_room_compiler"],
23 | )
24 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/di/ViewModelFactory.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.di
6 |
7 | import androidx.lifecycle.ViewModel
8 | import androidx.lifecycle.ViewModelProvider
9 | import javax.inject.Inject
10 | import javax.inject.Provider
11 | import javax.inject.Singleton
12 |
13 | @Suppress("UNCHECKED_CAST")
14 | @Singleton
15 | class ViewModelFactory @Inject constructor(
16 | private val creators: Map, @JvmSuppressWildcards Provider>,
17 | ) : ViewModelProvider.Factory {
18 | override fun create(modelClass: Class): T {
19 | val creator = creators[modelClass] ?: creators.entries.first {
20 | modelClass.isAssignableFrom(it.key)
21 | }.value
22 |
23 | return creator.get() as T
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/tox/ToxIdValidator.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.tox
6 |
7 | private const val CHECKSUM_BLOCK_SIZE = 4
8 |
9 | class ToxIdValidator {
10 | enum class Result {
11 | NO_ERROR,
12 | INCORRECT_LENGTH,
13 | INVALID_CHECKSUM,
14 | NOT_HEX,
15 | }
16 |
17 | companion object {
18 | fun validate(toxID: ToxID) = when {
19 | !toxID.string().matches(Regex("[0-9A-Fa-f]*")) -> Result.NOT_HEX
20 | toxID.string().length != TOX_ID_LENGTH -> Result.INCORRECT_LENGTH
21 | toxID.string().chunked(CHECKSUM_BLOCK_SIZE).map {
22 | it.toInt(radix = 16)
23 | }.fold(0) { b1, b2 -> b1 xor b2 } != 0 -> Result.INVALID_CHECKSUM
24 | else -> Result.NO_ERROR
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/vo/User.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.vo
6 |
7 | import androidx.room.ColumnInfo
8 | import androidx.room.Entity
9 | import androidx.room.PrimaryKey
10 |
11 | @Entity(tableName = "users")
12 | data class User(
13 | @PrimaryKey
14 | @ColumnInfo(name = "public_key")
15 | val publicKey: String,
16 |
17 | @ColumnInfo(name = "name")
18 | var name: String = "aTox user",
19 |
20 | @ColumnInfo(name = "status_message")
21 | var statusMessage: String = "Brought to you live, by aTox",
22 |
23 | @ColumnInfo(name = "status")
24 | var status: UserStatus = UserStatus.None,
25 |
26 | @ColumnInfo(name = "connection_status")
27 | var connectionStatus: ConnectionStatus = ConnectionStatus.None,
28 |
29 | @ColumnInfo(name = "password")
30 | var password: String = "",
31 | )
32 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/ui/friendrequest/FriendRequestViewModel.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020-2025 Robin Lindén
2 | // SPDX-FileCopyrightText: 2022 aTox contributors
3 | //
4 | // SPDX-License-Identifier: GPL-3.0-only
5 |
6 | package ltd.evilcorp.atox.ui.friendrequest
7 |
8 | import androidx.lifecycle.LiveData
9 | import androidx.lifecycle.ViewModel
10 | import androidx.lifecycle.asLiveData
11 | import javax.inject.Inject
12 | import ltd.evilcorp.core.vo.FriendRequest
13 | import ltd.evilcorp.core.vo.PublicKey
14 | import ltd.evilcorp.domain.feature.FriendRequestManager
15 |
16 | class FriendRequestViewModel @Inject constructor(private val friendRequests: FriendRequestManager) : ViewModel() {
17 | fun byId(pk: PublicKey): LiveData = friendRequests.get(pk).asLiveData()
18 | fun accept(request: FriendRequest) = friendRequests.accept(request)
19 | fun reject(request: FriendRequest) = friendRequests.reject(request)
20 | }
21 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/ui/BaseFragment.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.ui
6 |
7 | import android.os.Bundle
8 | import android.view.LayoutInflater
9 | import android.view.View
10 | import android.view.ViewGroup
11 | import androidx.fragment.app.Fragment
12 | import androidx.viewbinding.ViewBinding
13 |
14 | abstract class BaseFragment(private val inflate: (LayoutInflater, ViewGroup?, Boolean) -> T) :
15 | Fragment() {
16 | private var _binding: T? = null
17 | val binding get() = _binding!!
18 |
19 | override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
20 | _binding = inflate(inflater, container, false)
21 | return binding.root
22 | }
23 |
24 | override fun onDestroyView() {
25 | _binding = null
26 | super.onDestroyView()
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/atox/src/androidTest/kotlin/ui/AvatarFactoryTest.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.ui
6 |
7 | import androidx.test.ext.junit.runners.AndroidJUnit4
8 | import androidx.test.platform.app.InstrumentationRegistry
9 | import kotlin.test.Test
10 | import org.junit.runner.RunWith
11 |
12 | @RunWith(AndroidJUnit4::class)
13 | class AvatarFactoryTest {
14 | @Test
15 | fun emptyName() {
16 | AvatarFactory.create(
17 | InstrumentationRegistry.getInstrumentation().targetContext.resources,
18 | name = "",
19 | publicKey = "123",
20 | )
21 | }
22 |
23 | @Test
24 | fun nameEndingInSpace() {
25 | AvatarFactory.create(
26 | InstrumentationRegistry.getInstrumentation().targetContext.resources,
27 | name = "a ",
28 | publicKey = "123",
29 | )
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_notification.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/repository/FriendRequestRepository.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2024 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.repository
6 |
7 | import javax.inject.Inject
8 | import javax.inject.Singleton
9 | import kotlinx.coroutines.flow.Flow
10 | import ltd.evilcorp.core.db.FriendRequestDao
11 | import ltd.evilcorp.core.vo.FriendRequest
12 |
13 | @Singleton
14 | class FriendRequestRepository @Inject internal constructor(private val friendRequestDao: FriendRequestDao) {
15 | fun add(friendRequest: FriendRequest) = friendRequestDao.save(friendRequest)
16 |
17 | fun delete(friendRequest: FriendRequest) = friendRequestDao.delete(friendRequest)
18 |
19 | fun getAll(): Flow> = friendRequestDao.loadAll()
20 |
21 | fun get(publicKey: String): Flow = friendRequestDao.load(publicKey)
22 |
23 | fun count(): Int = friendRequestDao.count()
24 | }
25 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/di/AppModule.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021-2022 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.di
6 |
7 | import android.content.Context
8 | import dagger.Module
9 | import dagger.Provides
10 | import kotlinx.coroutines.CoroutineScope
11 | import kotlinx.coroutines.Dispatchers
12 | import ltd.evilcorp.atox.tox.BootstrapNodeRegistryImpl
13 | import ltd.evilcorp.domain.tox.AndroidSaveManager
14 | import ltd.evilcorp.domain.tox.BootstrapNodeRegistry
15 | import ltd.evilcorp.domain.tox.SaveManager
16 |
17 | @Module
18 | class AppModule {
19 | @Provides
20 | fun provideBootstrapNodeRegistry(nodeRegistry: BootstrapNodeRegistryImpl): BootstrapNodeRegistry = nodeRegistry
21 |
22 | @Provides
23 | fun provideCoroutineScope(): CoroutineScope = CoroutineScope(Dispatchers.Default)
24 |
25 | @Provides
26 | fun provideSaveManager(ctx: Context): SaveManager = AndroidSaveManager(ctx)
27 | }
28 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/db/Database.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.db
6 |
7 | import androidx.room.Database
8 | import androidx.room.RoomDatabase
9 | import androidx.room.TypeConverters
10 | import ltd.evilcorp.core.vo.Contact
11 | import ltd.evilcorp.core.vo.FileTransfer
12 | import ltd.evilcorp.core.vo.FriendRequest
13 | import ltd.evilcorp.core.vo.Message
14 | import ltd.evilcorp.core.vo.User
15 |
16 | @Database(
17 | entities = [Contact::class, FileTransfer::class, FriendRequest::class, Message::class, User::class],
18 | version = 5,
19 | )
20 | @TypeConverters(Converters::class)
21 | abstract class Database : RoomDatabase() {
22 | abstract fun contactDao(): ContactDao
23 | abstract fun fileTransferDao(): FileTransferDao
24 | abstract fun friendRequestDao(): FriendRequestDao
25 | abstract fun messageDao(): MessageDao
26 | abstract fun userDao(): UserDao
27 | }
28 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/Extensions.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox
6 |
7 | import android.content.Context
8 | import android.content.pm.PackageManager
9 | import androidx.core.content.ContextCompat
10 | import androidx.fragment.app.Fragment
11 | import ltd.evilcorp.atox.di.ViewModelFactory
12 |
13 | fun Context.hasPermission(permission: String) =
14 | ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED
15 |
16 | val Fragment.vmFactory: ViewModelFactory
17 | get() = (requireActivity() as MainActivity).vmFactory
18 |
19 | class NoSuchArgumentException(arg: String) : Exception("No such argument: $arg")
20 |
21 | fun Fragment.requireStringArg(key: String) = arguments?.getString(key) ?: throw NoSuchArgumentException(key)
22 |
23 | fun String.truncated(length: Int): String = if (this.length > length) {
24 | this.take(length - 1) + "…"
25 | } else {
26 | this
27 | }
28 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/db/FriendRequestDao.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2024 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.db
6 |
7 | import androidx.room.Dao
8 | import androidx.room.Delete
9 | import androidx.room.Insert
10 | import androidx.room.OnConflictStrategy
11 | import androidx.room.Query
12 | import kotlinx.coroutines.flow.Flow
13 | import ltd.evilcorp.core.vo.FriendRequest
14 |
15 | @Dao
16 | interface FriendRequestDao {
17 | @Insert(onConflict = OnConflictStrategy.REPLACE)
18 | fun save(friendRequest: FriendRequest)
19 |
20 | @Delete
21 | fun delete(friendRequest: FriendRequest)
22 |
23 | @Query("SELECT * FROM friend_requests")
24 | fun loadAll(): Flow>
25 |
26 | @Query("SELECT * FROM friend_requests WHERE public_key == :publicKey")
27 | fun load(publicKey: String): Flow
28 |
29 | @Query("SELECT COUNT(public_key) FROM friend_requests")
30 | fun count(): Int
31 | }
32 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/repository/FileTransferRepository.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.repository
6 |
7 | import javax.inject.Inject
8 | import javax.inject.Singleton
9 | import kotlinx.coroutines.flow.Flow
10 | import ltd.evilcorp.core.db.FileTransferDao
11 | import ltd.evilcorp.core.vo.FileTransfer
12 |
13 | @Singleton
14 | class FileTransferRepository @Inject internal constructor(private val dao: FileTransferDao) {
15 | fun add(ft: FileTransfer): Long = dao.save(ft)
16 |
17 | fun delete(id: Int) = dao.delete(id)
18 |
19 | fun get(publicKey: String): Flow> = dao.load(publicKey)
20 |
21 | fun get(id: Int): Flow = dao.load(id)
22 |
23 | fun setDestination(id: Int, destination: String) = dao.setDestination(id, destination)
24 |
25 | fun updateProgress(id: Int, progress: Long) = dao.updateProgress(id, progress)
26 |
27 | fun resetTransientData() = dao.resetTransientData()
28 | }
29 |
--------------------------------------------------------------------------------
/bazel/opus.BUILD:
--------------------------------------------------------------------------------
1 | load("@rules_cc//cc:defs.bzl", "cc_library")
2 |
3 | cc_library(
4 | name = "opus",
5 | srcs = glob(
6 | include = [
7 | "celt/*.c",
8 | "silk/*.c",
9 | "silk/float/*.c",
10 | "**/*.h",
11 | ],
12 | exclude = ["celt/opus_custom_demo.c"],
13 | ) + [
14 | "src/analysis.c",
15 | "src/mlp.c",
16 | "src/mlp_data.c",
17 | "src/opus.c",
18 | "src/opus_decoder.c",
19 | "src/opus_encoder.c",
20 | "src/opus_multistream.c",
21 | "src/opus_multistream_decoder.c",
22 | "src/opus_multistream_encoder.c",
23 | "src/repacketizer.c",
24 | ],
25 | hdrs = glob(["include/*.h"]),
26 | copts = [
27 | "-DHAVE_CONFIG_H",
28 | "-I$(GENDIR)/bazel/opus",
29 | ],
30 | includes = [
31 | "celt",
32 | "include",
33 | "silk",
34 | "silk/float",
35 | ],
36 | visibility = ["//visibility:public"],
37 | deps = ["@atox//bazel/opus:config"],
38 | )
39 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/di/AppComponent.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.di
6 |
7 | import android.content.Context
8 | import dagger.BindsInstance
9 | import dagger.Component
10 | import javax.inject.Singleton
11 | import ltd.evilcorp.atox.ActionReceiver
12 | import ltd.evilcorp.atox.BootReceiver
13 | import ltd.evilcorp.atox.MainActivity
14 | import ltd.evilcorp.atox.ToxService
15 |
16 | @Singleton
17 | @Component(
18 | modules = [
19 | AndroidModule::class,
20 | AppModule::class,
21 | DatabaseModule::class,
22 | DaoModule::class,
23 | ViewModelModule::class,
24 | ],
25 | )
26 | interface AppComponent {
27 | @Component.Factory
28 | interface Factory {
29 | fun create(@BindsInstance appContext: Context): AppComponent
30 | }
31 |
32 | fun inject(activity: MainActivity)
33 | fun inject(service: ToxService)
34 | fun inject(receiver: BootReceiver)
35 | fun inject(receiver: ActionReceiver)
36 | }
37 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/ui/userprofile/UserProfileViewModel.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.ui.userprofile
6 |
7 | import androidx.lifecycle.LiveData
8 | import androidx.lifecycle.ViewModel
9 | import androidx.lifecycle.asLiveData
10 | import javax.inject.Inject
11 | import ltd.evilcorp.core.vo.User
12 | import ltd.evilcorp.core.vo.UserStatus
13 | import ltd.evilcorp.domain.feature.UserManager
14 | import ltd.evilcorp.domain.tox.Tox
15 |
16 | class UserProfileViewModel @Inject constructor(private val userManager: UserManager, private val tox: Tox) :
17 | ViewModel() {
18 | val publicKey by lazy { tox.publicKey }
19 | val toxId by lazy { tox.toxId }
20 | val user: LiveData = userManager.get(publicKey).asLiveData()
21 |
22 | fun setName(name: String) = userManager.setName(name)
23 | fun setStatusMessage(statusMessage: String) = userManager.setStatusMessage(statusMessage)
24 | fun setStatus(status: UserStatus) = userManager.setStatus(status)
25 | }
26 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/vo/Message.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.vo
6 |
7 | import androidx.room.ColumnInfo
8 | import androidx.room.Entity
9 | import androidx.room.PrimaryKey
10 |
11 | enum class Sender {
12 | Sent,
13 | Received,
14 | }
15 |
16 | enum class MessageType {
17 | Normal,
18 | Action,
19 | FileTransfer,
20 | }
21 |
22 | @Entity(tableName = "messages")
23 | data class Message(
24 | @ColumnInfo(name = "conversation")
25 | val publicKey: String,
26 |
27 | @ColumnInfo(name = "message")
28 | val message: String,
29 |
30 | @ColumnInfo(name = "sender")
31 | val sender: Sender,
32 |
33 | @ColumnInfo(name = "type")
34 | val type: MessageType,
35 |
36 | @ColumnInfo(name = "correlation_id")
37 | var correlationId: Int,
38 |
39 | @ColumnInfo(name = "timestamp")
40 | var timestamp: Long = 0,
41 | ) {
42 | @PrimaryKey(autoGenerate = true)
43 | @ColumnInfo(name = "id")
44 | var id: Long = 0
45 | }
46 |
--------------------------------------------------------------------------------
/atox/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
18 |
19 |
--------------------------------------------------------------------------------
/bazel/tools/config/BUILD.bazel:
--------------------------------------------------------------------------------
1 | config_setting(
2 | name = "linux",
3 | constraint_values = ["@platforms//os:linux"],
4 | visibility = ["//visibility:public"],
5 | )
6 |
7 | config_setting(
8 | name = "osx",
9 | constraint_values = ["@platforms//os:osx"],
10 | visibility = ["//visibility:public"],
11 | )
12 |
13 | config_setting(
14 | name = "windows",
15 | constraint_values = ["@platforms//os:windows"],
16 | visibility = ["//visibility:public"],
17 | )
18 |
19 | config_setting(
20 | name = "android_x86_32",
21 | values = {"android_cpu": "x86"},
22 | visibility = ["//visibility:public"],
23 | )
24 |
25 | config_setting(
26 | name = "android_x86_64",
27 | values = {"android_cpu": "x86_64"},
28 | visibility = ["//visibility:public"],
29 | )
30 |
31 | config_setting(
32 | name = "android_arm",
33 | values = {"android_cpu": "armeabi-v7a"},
34 | visibility = ["//visibility:public"],
35 | )
36 |
37 | config_setting(
38 | name = "android_aarch64",
39 | values = {"android_cpu": "aarch64"},
40 | visibility = ["//visibility:public"],
41 | )
42 |
--------------------------------------------------------------------------------
/atox/src/main/res/layout/friend_request_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
17 |
18 |
25 |
26 |
--------------------------------------------------------------------------------
/scripts/patches/libvpx.patch:
--------------------------------------------------------------------------------
1 | diff --git a/build/make/configure.sh b/build/make/configure.sh
2 | index 81d30a1..ac128f9 100644
3 | --- a/build/make/configure.sh
4 | +++ b/build/make/configure.sh
5 | @@ -1089,9 +1089,6 @@ EOF
6 | ;;
7 |
8 | android*)
9 | - echo "Assuming standalone build with NDK toolchain."
10 | - echo "See build/make/Android.mk for details."
11 | - check_add_ldflags -static
12 | soft_enable unit_tests
13 | ;;
14 |
15 | @@ -1249,6 +1246,7 @@ EOF
16 | case ${tgt_os} in
17 | android)
18 | soft_enable realtime_only
19 | + add_asflags -D__ANDROID__
20 | ;;
21 | win*)
22 | enabled gcc && add_cflags -fno-common
23 | @@ -1418,6 +1416,14 @@ EOF
24 | log "Warning: Unknown os $tgt_os while setting up $AS flags"
25 | ;;
26 | esac
27 | + ;;
28 | + x86_64*)
29 | + case ${tgt_os} in
30 | + android)
31 | + soft_enable realtime_only
32 | + add_asflags -D__ANDROID__
33 | + ;;
34 | + esac
35 | ;;
36 | *-gcc|generic-gnu)
37 | link_with_cc=gcc
38 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
6 |
8 |
12 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.github/workflows/detekt.yaml:
--------------------------------------------------------------------------------
1 | name: detekt
2 |
3 | on:
4 | pull_request:
5 | branches: [master]
6 | push:
7 | branches: [master]
8 |
9 | env:
10 | DETEKT_RELEASE: 1.23.8
11 |
12 | jobs:
13 | detekt:
14 | runs-on: ubuntu-24.04
15 | steps:
16 | - uses: actions/checkout@v4
17 |
18 | - name: Setup
19 | run: |
20 | curl \
21 | --request GET \
22 | --url https://github.com/detekt/detekt/releases/download/v${DETEKT_RELEASE}/detekt-cli-${DETEKT_RELEASE}-all.jar \
23 | --silent \
24 | --location \
25 | --output detekt
26 | chmod a+x detekt
27 |
28 | - name: Run
29 | continue-on-error: true
30 | run: |
31 | java -jar detekt \
32 | --build-upon-default-config \
33 | --config detekt.yml \
34 | --input ${{ github.workspace }} \
35 | --base-path ${{ github.workspace }} \
36 | --report sarif:${{ github.workspace }}/detekt.sarif.json
37 |
38 | - uses: github/codeql-action/upload-sarif@v3
39 | with:
40 | sarif_file: ${{ github.workspace }}/detekt.sarif.json
41 | checkout_path: ${{ github.workspace }}
42 |
--------------------------------------------------------------------------------
/atox/src/main/res/layout/chat_action_sent.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
17 |
18 |
25 |
26 |
--------------------------------------------------------------------------------
/bazel/libvpx/vpx_config.mk:
--------------------------------------------------------------------------------
1 | ## Copyright (c) 2011 The WebM project authors. All Rights Reserved.
2 | ##
3 | ## Use of this source code is governed by a BSD-style license
4 | ## that can be found in the LICENSE file in the root of the source
5 | ## tree. An additional intellectual property rights grant can be found
6 | ## in the file PATENTS. All contributing project authors may
7 | ## be found in the AUTHORS file in the root of the source tree.
8 | # This file automatically generated by configure. Do not edit!
9 | CONFIG_DEPENDENCY_TRACKING=yes
10 | CONFIG_INSTALL_BINS=yes
11 | CONFIG_INSTALL_LIBS=yes
12 | CONFIG_GCC=yes
13 | CONFIG_PIC=yes
14 | CONFIG_RUNTIME_CPU_DETECT=yes
15 | CONFIG_POSTPROC=yes
16 | CONFIG_VP9_POSTPROC=yes
17 | CONFIG_MULTITHREAD=yes
18 | CONFIG_INTERNAL_STATS=yes
19 | CONFIG_VP8_ENCODER=yes
20 | CONFIG_VP8_DECODER=yes
21 | CONFIG_VP9_ENCODER=yes
22 | CONFIG_VP9_DECODER=yes
23 | CONFIG_VP8=yes
24 | CONFIG_VP9=yes
25 | CONFIG_ENCODERS=yes
26 | CONFIG_DECODERS=yes
27 | CONFIG_SPATIAL_RESAMPLING=yes
28 | CONFIG_ERROR_CONCEALMENT=yes
29 | CONFIG_SHARED=yes
30 | CONFIG_STATIC=yes
31 | CONFIG_OS_SUPPORT=yes
32 | CONFIG_UNIT_TESTS=yes
33 | CONFIG_LIBYUV=yes
34 | CONFIG_TEMPORAL_DENOISING=yes
35 | CONFIG_VP9_TEMPORAL_DENOISING=yes
36 | CONFIG_VP9_HIGHBITDEPTH=yes
37 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/ProximityScreenOff.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 aTox contributors
2 | // SPDX-FileCopyrightText: 2025 Robin Lindén
3 | //
4 | // SPDX-License-Identifier: GPL-3.0-only
5 |
6 | package ltd.evilcorp.atox
7 |
8 | import android.annotation.SuppressLint
9 | import android.content.Context
10 | import android.os.PowerManager
11 | import javax.inject.Inject
12 | import javax.inject.Singleton
13 |
14 | private const val PROXIMITY_SCREEN_OFF_WAKELOCK_TAG = "atox:ProximityScreenOff"
15 |
16 | @Singleton
17 | class ProximityScreenOff @Inject constructor(context: Context) {
18 | private val powerManager: PowerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
19 | private var screenOffWakeLock: PowerManager.WakeLock? = null
20 |
21 | @SuppressLint("WakelockTimeout")
22 | fun acquire() {
23 | if (screenOffWakeLock == null) {
24 | screenOffWakeLock =
25 | powerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, PROXIMITY_SCREEN_OFF_WAKELOCK_TAG)
26 | screenOffWakeLock?.acquire()
27 | }
28 | }
29 |
30 | fun release() {
31 | screenOffWakeLock?.apply {
32 | if (isHeld) release()
33 | screenOffWakeLock = null
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/atox/src/main/res/layout/chat_action_received.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
18 |
19 |
26 |
27 |
--------------------------------------------------------------------------------
/atox/src/main/res/layout/chat_message_sent.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
18 |
19 |
26 |
27 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/ui/createprofile/CreateProfileViewModel.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2025 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.ui.createprofile
6 |
7 | import android.content.ContentResolver
8 | import android.net.Uri
9 | import androidx.lifecycle.ViewModel
10 | import javax.inject.Inject
11 | import ltd.evilcorp.atox.tox.ToxStarter
12 | import ltd.evilcorp.core.vo.PublicKey
13 | import ltd.evilcorp.core.vo.User
14 | import ltd.evilcorp.domain.feature.UserManager
15 | import ltd.evilcorp.domain.tox.Tox
16 | import ltd.evilcorp.domain.tox.ToxSaveStatus
17 |
18 | class CreateProfileViewModel @Inject constructor(
19 | private val resolver: ContentResolver,
20 | private val userManager: UserManager,
21 | private val tox: Tox,
22 | private val toxStarter: ToxStarter,
23 | ) : ViewModel() {
24 | val publicKey: PublicKey by lazy { tox.publicKey }
25 |
26 | fun startTox(save: ByteArray? = null, password: String? = null): ToxSaveStatus = toxStarter.startTox(save, password)
27 | fun tryImportToxSave(uri: Uri): ByteArray? = resolver.openInputStream(uri)?.use { it.readBytes() }
28 | fun create(user: User) = userManager.create(user)
29 | fun verifyUserExists(publicKey: PublicKey) = userManager.verifyExists(publicKey)
30 | }
31 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/repository/UserRepository.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.repository
6 |
7 | import javax.inject.Inject
8 | import javax.inject.Singleton
9 | import kotlinx.coroutines.flow.Flow
10 | import ltd.evilcorp.core.db.UserDao
11 | import ltd.evilcorp.core.vo.ConnectionStatus
12 | import ltd.evilcorp.core.vo.User
13 | import ltd.evilcorp.core.vo.UserStatus
14 |
15 | @Singleton
16 | class UserRepository @Inject constructor(private val userDao: UserDao) {
17 | fun exists(publicKey: String): Boolean = userDao.exists(publicKey)
18 |
19 | fun add(user: User) = userDao.save(user)
20 |
21 | fun update(user: User) = userDao.update(user)
22 |
23 | fun get(publicKey: String): Flow = userDao.load(publicKey)
24 |
25 | fun updateName(publicKey: String, name: String) = userDao.updateName(publicKey, name)
26 |
27 | fun updateStatusMessage(publicKey: String, statusMessage: String) =
28 | userDao.updateStatusMessage(publicKey, statusMessage)
29 |
30 | fun updateConnection(publicKey: String, connectionStatus: ConnectionStatus) =
31 | userDao.updateConnection(publicKey, connectionStatus)
32 |
33 | fun updateStatus(publicKey: String, status: UserStatus) = userDao.updateStatus(publicKey, status)
34 | }
35 |
--------------------------------------------------------------------------------
/atox/src/main/res/layout/chat_message_received.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
19 |
20 |
27 |
28 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/repository/MessageRepository.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.repository
6 |
7 | import java.util.Date
8 | import javax.inject.Inject
9 | import javax.inject.Singleton
10 | import kotlinx.coroutines.flow.Flow
11 | import ltd.evilcorp.core.db.MessageDao
12 | import ltd.evilcorp.core.vo.Message
13 |
14 | @Singleton
15 | class MessageRepository @Inject internal constructor(
16 | private val messageDao: MessageDao,
17 | private val contactRepository: ContactRepository,
18 | ) {
19 | fun add(message: Message) {
20 | messageDao.save(message)
21 | contactRepository.setLastMessage(message.publicKey, Date().time)
22 | }
23 |
24 | fun get(conversation: String): Flow> = messageDao.load(conversation)
25 |
26 | fun getPending(conversation: String): List = messageDao.loadPending(conversation)
27 |
28 | fun setCorrelationId(id: Long, correlationId: Int) = messageDao.setCorrelationId(id, correlationId)
29 |
30 | fun delete(conversation: String) = messageDao.delete(conversation)
31 |
32 | fun deleteMessage(id: Long) = messageDao.deleteMessage(id)
33 |
34 | fun setReceipt(conversation: String, correlationId: Int, timestamp: Long) =
35 | messageDao.setReceipt(conversation, correlationId, timestamp)
36 | }
37 |
--------------------------------------------------------------------------------
/atox/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #1976D2
4 | #1565C0
5 | #0D47A1
6 | #D81B60
7 | #555
8 |
9 | @color/colorGray
10 | @android:color/holo_red_dark
11 | @android:color/holo_orange_light
12 | @android:color/holo_green_dark
13 |
14 | - #E0E0E0
15 |
16 | - #FFFFFF
17 |
18 | - #546E7A
19 | - #ECEFF1
20 | - #3E4651
21 |
22 | - #40000000
23 | - #00000000
24 |
25 |
26 | - #f16364
27 | - #f58559
28 | - #f9a43e
29 | - #e4c62e
30 | - #67bf74
31 | - #59a2be
32 | - #2093cd
33 | - #ad62a7
34 |
35 |
36 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/db/FileTransferDao.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.db
6 |
7 | import androidx.room.Dao
8 | import androidx.room.Insert
9 | import androidx.room.OnConflictStrategy
10 | import androidx.room.Query
11 | import kotlinx.coroutines.flow.Flow
12 | import ltd.evilcorp.core.vo.FT_REJECTED
13 | import ltd.evilcorp.core.vo.FileTransfer
14 |
15 | @Dao
16 | interface FileTransferDao {
17 | @Insert(onConflict = OnConflictStrategy.REPLACE)
18 | fun save(fileTransfer: FileTransfer): Long
19 |
20 | @Query("DELETE FROM file_transfers WHERE id == :id")
21 | fun delete(id: Int)
22 |
23 | @Query("SELECT * FROM file_transfers WHERE public_key == :publicKey")
24 | fun load(publicKey: String): Flow>
25 |
26 | @Query("SELECT * FROM file_transfers WHERE id == :id")
27 | fun load(id: Int): Flow
28 |
29 | @Query("UPDATE file_transfers SET progress = :progress WHERE id == :id AND progress != :rejected")
30 | fun updateProgress(id: Int, progress: Long, rejected: Long = FT_REJECTED)
31 |
32 | @Query("UPDATE file_transfers SET destination = :destination WHERE id == :id")
33 | fun setDestination(id: Int, destination: String)
34 |
35 | @Query("UPDATE file_transfers SET progress = :progress WHERE progress < file_size")
36 | fun resetTransientData(progress: Long = FT_REJECTED)
37 | }
38 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/PendingIntentCompat.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox
6 |
7 | import android.app.PendingIntent
8 | import android.content.Context
9 | import android.content.Intent
10 | import android.os.Build
11 |
12 | object PendingIntentCompat {
13 | fun getBroadcast(
14 | context: Context,
15 | requestCode: Int,
16 | intent: Intent,
17 | flags: Int,
18 | mutable: Boolean = false,
19 | ): PendingIntent = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
20 | PendingIntent.getBroadcast(context, requestCode, intent, flags)
21 | } else {
22 | val mutabilityFlag =
23 | if (mutable) {
24 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) PendingIntent.FLAG_MUTABLE else 0
25 | } else {
26 | PendingIntent.FLAG_IMMUTABLE
27 | }
28 | PendingIntent.getBroadcast(context, requestCode, intent, flags or mutabilityFlag)
29 | }
30 |
31 | fun getActivity(context: Context, requestCode: Int, intent: Intent, flags: Int): PendingIntent =
32 | if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
33 | PendingIntent.getActivity(context, requestCode, intent, flags)
34 | } else {
35 | PendingIntent.getActivity(context, requestCode, intent, flags or PendingIntent.FLAG_IMMUTABLE)
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/ui/Util.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2022 Robin Lindén
2 | // SPDX-FileCopyrightText: 2021-2022 aTox contributors
3 | //
4 | // SPDX-License-Identifier: GPL-3.0-only
5 |
6 | package ltd.evilcorp.atox.ui
7 |
8 | import android.content.Context
9 | import android.content.res.Resources
10 | import android.util.TypedValue
11 | import androidx.core.content.ContextCompat
12 | import ltd.evilcorp.atox.R
13 | import ltd.evilcorp.core.vo.ConnectionStatus
14 | import ltd.evilcorp.core.vo.Contact
15 | import ltd.evilcorp.core.vo.UserStatus
16 |
17 | internal fun colorFromStatus(context: Context, status: UserStatus) = when (status) {
18 | UserStatus.None -> ContextCompat.getColor(context, R.color.statusAvailable)
19 | UserStatus.Away -> ContextCompat.getColor(context, R.color.statusAway)
20 | UserStatus.Busy -> ContextCompat.getColor(context, R.color.statusBusy)
21 | }
22 |
23 | internal sealed interface Size
24 |
25 | @JvmInline
26 | internal value class Px(val px: Int) : Size
27 |
28 | @JvmInline
29 | internal value class Dp(val dp: Float) : Size {
30 | fun asPx(res: Resources): Px =
31 | Px(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, res.displayMetrics).toInt())
32 | }
33 |
34 | internal fun contactListSorter(contact: Contact) = when {
35 | contact.lastMessage != 0L -> contact.lastMessage
36 | contact.connectionStatus == ConnectionStatus.None -> -1000L
37 | else -> -contact.status.ordinal.toLong()
38 | }
39 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/tox/SaveManager.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2025 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.tox
6 |
7 | import android.content.Context
8 | import android.util.AtomicFile
9 | import android.util.Log
10 | import androidx.core.util.writeBytes
11 | import java.io.File
12 | import javax.inject.Inject
13 | import ltd.evilcorp.core.vo.PublicKey
14 |
15 | private const val TAG = "AndroidSaveManager"
16 |
17 | interface SaveManager {
18 | fun list(): List
19 | fun save(pk: PublicKey, saveData: ByteArray)
20 | fun load(pk: PublicKey): ByteArray?
21 | }
22 |
23 | class AndroidSaveManager @Inject constructor(val context: Context) : SaveManager {
24 | private val saveDir get() = context.filesDir
25 |
26 | override fun list(): List =
27 | saveDir.listFiles()?.filter { it.extension == "tox" }?.map(File::nameWithoutExtension) ?: listOf()
28 |
29 | override fun save(pk: PublicKey, saveData: ByteArray) = AtomicFile(fileFor(pk)).run {
30 | Log.i(TAG, "Saving profile to $baseFile")
31 | writeBytes(saveData)
32 | }
33 |
34 | override fun load(pk: PublicKey): ByteArray? = fileFor(pk).let { saveFile ->
35 | if (saveFile.exists()) {
36 | saveFile.readBytes()
37 | } else {
38 | null
39 | }
40 | }
41 |
42 | private fun fileFor(pk: PublicKey) = File("$saveDir/${pk.string()}.tox")
43 | }
44 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/vo/Contact.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.vo
6 |
7 | import androidx.room.ColumnInfo
8 | import androidx.room.Entity
9 | import androidx.room.PrimaryKey
10 |
11 | // These enums are 1:1 mappings of the enums in tox4j.
12 | enum class ConnectionStatus {
13 | None,
14 | TCP,
15 | UDP,
16 | }
17 |
18 | enum class UserStatus {
19 | None,
20 | Away,
21 | Busy,
22 | }
23 |
24 | @Entity(tableName = "contacts")
25 | data class Contact(
26 | @PrimaryKey
27 | @ColumnInfo(name = "public_key")
28 | val publicKey: String,
29 |
30 | @ColumnInfo(name = "name")
31 | var name: String = "",
32 |
33 | @ColumnInfo(name = "status_message")
34 | var statusMessage: String = "...",
35 |
36 | @ColumnInfo(name = "last_message")
37 | var lastMessage: Long = 0,
38 |
39 | @ColumnInfo(name = "status")
40 | var status: UserStatus = UserStatus.None,
41 |
42 | @ColumnInfo(name = "connection_status")
43 | var connectionStatus: ConnectionStatus = ConnectionStatus.None,
44 |
45 | @ColumnInfo(name = "typing")
46 | var typing: Boolean = false,
47 |
48 | @ColumnInfo(name = "avatar_uri")
49 | var avatarUri: String = "",
50 |
51 | @ColumnInfo(name = "has_unread_messages")
52 | var hasUnreadMessages: Boolean = false,
53 |
54 | @ColumnInfo(name = "draft_message")
55 | var draftMessage: String = "",
56 | )
57 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/db/MessageDao.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.db
6 |
7 | import androidx.room.Dao
8 | import androidx.room.Insert
9 | import androidx.room.OnConflictStrategy
10 | import androidx.room.Query
11 | import kotlinx.coroutines.flow.Flow
12 | import ltd.evilcorp.core.vo.Message
13 |
14 | @Dao
15 | interface MessageDao {
16 | @Insert(onConflict = OnConflictStrategy.REPLACE)
17 | fun save(message: Message)
18 |
19 | @Query("SELECT * FROM messages WHERE conversation == :conversation")
20 | fun load(conversation: String): Flow>
21 |
22 | @Query("SELECT * FROM messages WHERE conversation == :conversation AND timestamp == 0")
23 | fun loadPending(conversation: String): List
24 |
25 | @Query("UPDATE messages SET correlation_id = :correlationId WHERE id == :id")
26 | fun setCorrelationId(id: Long, correlationId: Int)
27 |
28 | @Query("DELETE FROM messages WHERE conversation == :conversation")
29 | fun delete(conversation: String)
30 |
31 | @Suppress("ktlint:standard:max-line-length")
32 | @Query(
33 | "UPDATE messages SET timestamp = :timestamp WHERE conversation == :conversation AND correlation_id == :correlationId AND timestamp == 0",
34 | )
35 | fun setReceipt(conversation: String, correlationId: Int, timestamp: Long)
36 |
37 | @Query("DELETE FROM messages WHERE id = :id")
38 | fun deleteMessage(id: Long)
39 | }
40 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/vo/FileTransfer.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2020 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.vo
6 |
7 | import androidx.room.ColumnInfo
8 | import androidx.room.Entity
9 | import androidx.room.PrimaryKey
10 |
11 | enum class FileKind {
12 | Data,
13 | Avatar,
14 | }
15 |
16 | // Since the progress can't be negative, I'm reusing that part for some markers.
17 | const val FT_STARTED = 0L
18 | const val FT_NOT_STARTED = -1L
19 | const val FT_REJECTED = -2L
20 |
21 | @Entity(tableName = "file_transfers")
22 | data class FileTransfer(
23 | @ColumnInfo(name = "public_key")
24 | val publicKey: String,
25 |
26 | @ColumnInfo(name = "file_number")
27 | val fileNumber: Int,
28 |
29 | @ColumnInfo(name = "file_kind")
30 | val fileKind: Int,
31 |
32 | @ColumnInfo(name = "file_size")
33 | val fileSize: Long,
34 |
35 | @ColumnInfo(name = "file_name")
36 | val fileName: String,
37 |
38 | @ColumnInfo(name = "outgoing")
39 | val outgoing: Boolean,
40 |
41 | @ColumnInfo(name = "progress")
42 | var progress: Long = FT_NOT_STARTED,
43 |
44 | @ColumnInfo(name = "destination")
45 | var destination: String = "",
46 | ) {
47 | @PrimaryKey(autoGenerate = true)
48 | @ColumnInfo(name = "id")
49 | var id: Int = 0
50 | }
51 |
52 | fun FileTransfer.isComplete() = progress >= fileSize
53 | fun FileTransfer.isStarted() = progress >= FT_STARTED
54 | fun FileTransfer.isRejected() = progress == FT_REJECTED
55 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/feature/ContactManager.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2025 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.feature
6 |
7 | import java.util.Date
8 | import javax.inject.Inject
9 | import kotlinx.coroutines.CoroutineScope
10 | import kotlinx.coroutines.launch
11 | import ltd.evilcorp.core.repository.ContactRepository
12 | import ltd.evilcorp.core.vo.Contact
13 | import ltd.evilcorp.core.vo.PublicKey
14 | import ltd.evilcorp.domain.tox.Tox
15 | import ltd.evilcorp.domain.tox.ToxID
16 |
17 | class ContactManager @Inject constructor(
18 | private val scope: CoroutineScope,
19 | private val contactRepository: ContactRepository,
20 | private val tox: Tox,
21 | ) {
22 | fun get(publicKey: PublicKey) = contactRepository.get(publicKey.string())
23 | fun getAll() = contactRepository.getAll()
24 |
25 | fun add(toxID: ToxID, message: String) = scope.launch {
26 | val publicKeyTxt = toxID.toPublicKey().string()
27 | tox.addContact(toxID, message)
28 | contactRepository.add(Contact(publicKeyTxt))
29 | contactRepository.setLastMessage(publicKeyTxt, Date().time)
30 | }
31 |
32 | fun delete(publicKey: PublicKey) = scope.launch {
33 | tox.deleteContact(publicKey)
34 | contactRepository.delete(Contact(publicKey.string()))
35 | }
36 |
37 | fun setDraft(pk: PublicKey, draft: String) = scope.launch {
38 | contactRepository.setDraftMessage(pk.string(), draft)
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/core/src/test/kotlin/db/ConvertersTest.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2020-2024 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.db
6 |
7 | import kotlin.test.Test
8 | import kotlin.test.assertEquals
9 | import ltd.evilcorp.core.vo.ConnectionStatus
10 | import ltd.evilcorp.core.vo.MessageType
11 | import ltd.evilcorp.core.vo.Sender
12 | import ltd.evilcorp.core.vo.UserStatus
13 |
14 | class ConvertersTest {
15 | @Test
16 | fun `user status can be converted`() {
17 | UserStatus.entries.forEach {
18 | assertEquals(it.ordinal, Converters.fromStatus(it))
19 | assertEquals(it, Converters.toStatus(it.ordinal))
20 | }
21 | }
22 |
23 | @Test
24 | fun `connection status can be converted`() {
25 | ConnectionStatus.entries.forEach {
26 | assertEquals(it.ordinal, Converters.fromConnection(it))
27 | assertEquals(it, Converters.toConnection(it.ordinal))
28 | }
29 | }
30 |
31 | @Test
32 | fun `sender can be converted`() {
33 | Sender.entries.forEach {
34 | assertEquals(it.ordinal, Converters.fromSender(it))
35 | assertEquals(it, Converters.toSender(it.ordinal))
36 | }
37 | }
38 |
39 | @Test
40 | fun `message type can be converted`() {
41 | MessageType.entries.forEach {
42 | assertEquals(it.ordinal, Converters.fromMessageType(it))
43 | assertEquals(it, Converters.toMessageType(it.ordinal))
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/db/Converters.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2024 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.db
6 |
7 | import androidx.room.TypeConverter
8 | import ltd.evilcorp.core.vo.ConnectionStatus
9 | import ltd.evilcorp.core.vo.MessageType
10 | import ltd.evilcorp.core.vo.Sender
11 | import ltd.evilcorp.core.vo.UserStatus
12 |
13 | class Converters private constructor() {
14 | companion object {
15 | @TypeConverter
16 | @JvmStatic
17 | fun toStatus(status: Int): UserStatus = UserStatus.entries[status]
18 |
19 | @TypeConverter
20 | @JvmStatic
21 | fun fromStatus(status: UserStatus): Int = status.ordinal
22 |
23 | @TypeConverter
24 | @JvmStatic
25 | fun toConnection(connection: Int): ConnectionStatus = ConnectionStatus.entries[connection]
26 |
27 | @TypeConverter
28 | @JvmStatic
29 | fun fromConnection(connection: ConnectionStatus): Int = connection.ordinal
30 |
31 | @TypeConverter
32 | @JvmStatic
33 | fun toSender(sender: Int): Sender = Sender.entries[sender]
34 |
35 | @TypeConverter
36 | @JvmStatic
37 | fun fromSender(sender: Sender): Int = sender.ordinal
38 |
39 | @TypeConverter
40 | @JvmStatic
41 | fun toMessageType(type: Int): MessageType = MessageType.entries[type]
42 |
43 | @TypeConverter
44 | @JvmStatic
45 | fun fromMessageType(type: MessageType): Int = type.ordinal
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/core/src/main/kotlin/db/UserDao.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.core.db
6 |
7 | import androidx.room.Dao
8 | import androidx.room.Insert
9 | import androidx.room.OnConflictStrategy
10 | import androidx.room.Query
11 | import androidx.room.Update
12 | import kotlinx.coroutines.flow.Flow
13 | import ltd.evilcorp.core.vo.ConnectionStatus
14 | import ltd.evilcorp.core.vo.User
15 | import ltd.evilcorp.core.vo.UserStatus
16 |
17 | @Dao
18 | interface UserDao {
19 | @Insert(onConflict = OnConflictStrategy.ABORT)
20 | fun save(user: User)
21 |
22 | @Update
23 | fun update(user: User)
24 |
25 | @Query("UPDATE users SET name = :name WHERE public_key == :publicKey")
26 | fun updateName(publicKey: String, name: String)
27 |
28 | @Query("UPDATE users SET status_message = :statusMessage WHERE public_key == :publicKey")
29 | fun updateStatusMessage(publicKey: String, statusMessage: String)
30 |
31 | @Query("UPDATE users SET connection_status = :connectionStatus WHERE public_key == :publicKey")
32 | fun updateConnection(publicKey: String, connectionStatus: ConnectionStatus)
33 |
34 | @Query("UPDATE users SET status = :status WHERE public_key == :publicKey")
35 | fun updateStatus(publicKey: String, status: UserStatus)
36 |
37 | @Query("SELECT COUNT(*) FROM users WHERE public_key = :publicKey")
38 | fun exists(publicKey: String): Boolean
39 |
40 | @Query("SELECT * FROM users WHERE public_key = :publicKey")
41 | fun load(publicKey: String): Flow
42 | }
43 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/tox/BootstrapNodeJsonParser.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021-2025 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.domain.tox
6 |
7 | import android.util.Log
8 | import javax.inject.Inject
9 | import ltd.evilcorp.core.vo.PublicKey
10 | import org.json.JSONObject
11 |
12 | private const val TAG = "BootstrapNodeJsonParser"
13 |
14 | // Parses a json string containing json formatted the way it is on https://nodes.tox.chat/json
15 | class BootstrapNodeJsonParser @Inject constructor() {
16 | fun parse(jsonString: String): List = try {
17 | val nodes = mutableListOf()
18 |
19 | val json = JSONObject(jsonString)
20 | val jsonNodes = json.getJSONArray("nodes")
21 | for (i in 0 until jsonNodes.length()) {
22 | val jsonNode = jsonNodes.getJSONObject(i)
23 | if (!jsonNode.getBoolean("status_udp") || !jsonNode.getBoolean("status_tcp")) {
24 | continue
25 | }
26 |
27 | if (jsonNode.getString("ipv4") == "-") {
28 | continue
29 | }
30 |
31 | nodes.add(
32 | BootstrapNode(
33 | address = jsonNode.getString("ipv4"),
34 | port = jsonNode.getInt("port"),
35 | publicKey = PublicKey(jsonNode.getString("public_key")),
36 | ),
37 | )
38 | }
39 |
40 | nodes
41 | } catch (e: Exception) {
42 | Log.e(TAG, e.toString())
43 | listOf()
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/core/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | alias(libs.plugins.androidLibrary)
3 | alias(libs.plugins.kotlinAndroid)
4 | alias(libs.plugins.kotlinKsp)
5 | }
6 |
7 | kotlin {
8 | jvmToolchain(17)
9 | }
10 |
11 | android {
12 | namespace = "ltd.evilcorp.core"
13 | compileSdk = libs.versions.sdk.target.get().toInt()
14 | defaultConfig {
15 | minSdk = libs.versions.sdk.min.get().toInt()
16 | testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
17 | ksp {
18 | arg("room.schemaLocation", "$projectDir/schemas")
19 | }
20 | }
21 | buildTypes {
22 | getByName("release") {
23 | isMinifyEnabled = false
24 | proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"))
25 | }
26 | }
27 | sourceSets["androidTest"].assets.srcDir("$projectDir/schemas")
28 | }
29 |
30 | dependencies {
31 | implementation(libs.javax.inject)
32 | api(libs.kotlinx.coroutines.core)
33 | api(libs.androidx.room.runtime)
34 | api(libs.androidx.room.ktx)
35 | ksp(libs.androidx.room.compiler)
36 |
37 | testImplementation(kotlin("test"))
38 |
39 | androidTestImplementation(kotlin("test"))
40 | androidTestImplementation(libs.test.runner)
41 | androidTestImplementation(libs.test.junit.ext)
42 | androidTestImplementation(libs.androidx.room.testing)
43 | androidTestImplementation(libs.kotlinx.coroutines.test) {
44 | // Conflicts with a lot of things due to having embedded "byte buddy" instead of depending on it.
45 | exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-debug")
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/di/DatabaseModule.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2019-2024 Robin Lindén
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox.di
6 |
7 | import android.content.Context
8 | import androidx.room.Room
9 | import dagger.Module
10 | import dagger.Provides
11 | import javax.inject.Singleton
12 | import ltd.evilcorp.core.db.ALL_MIGRATIONS
13 | import ltd.evilcorp.core.db.ContactDao
14 | import ltd.evilcorp.core.db.Database
15 | import ltd.evilcorp.core.db.FileTransferDao
16 | import ltd.evilcorp.core.db.FriendRequestDao
17 | import ltd.evilcorp.core.db.MessageDao
18 | import ltd.evilcorp.core.db.UserDao
19 |
20 | @Module
21 | class DatabaseModule {
22 | @Singleton
23 | @Provides
24 | fun provideDatabase(appContext: Context): Database =
25 | Room.databaseBuilder(appContext, Database::class.java, "core_db")
26 | .addMigrations(*ALL_MIGRATIONS)
27 | .build()
28 | }
29 |
30 | @Module
31 | class DaoModule {
32 | @Singleton
33 | @Provides
34 | internal fun provideContactDao(db: Database): ContactDao = db.contactDao()
35 |
36 | @Singleton
37 | @Provides
38 | internal fun provideFileTransferDao(db: Database): FileTransferDao = db.fileTransferDao()
39 |
40 | @Singleton
41 | @Provides
42 | internal fun provideFriendRequestDao(db: Database): FriendRequestDao = db.friendRequestDao()
43 |
44 | @Singleton
45 | @Provides
46 | internal fun provideMessageDao(db: Database): MessageDao = db.messageDao()
47 |
48 | @Singleton
49 | @Provides
50 | internal fun provideUserDao(db: Database): UserDao = db.userDao()
51 | }
52 |
--------------------------------------------------------------------------------
/domain/src/main/kotlin/feature/ExportManager.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2022 Akito
2 | // SPDX-FileCopyrightText: 2023-2024 Robin Lindén
3 | //
4 | // SPDX-License-Identifier: GPL-3.0-only
5 |
6 | package ltd.evilcorp.domain.feature
7 |
8 | import java.text.SimpleDateFormat
9 | import java.util.Date
10 | import java.util.Locale
11 | import javax.inject.Inject
12 | import kotlinx.coroutines.flow.first
13 | import kotlinx.coroutines.runBlocking
14 | import ltd.evilcorp.core.repository.MessageRepository
15 | import org.json.JSONArray
16 | import org.json.JSONObject
17 |
18 | class ExportManager @Inject constructor(private val messageRepository: MessageRepository) {
19 | fun generateExportMessagesJString(publicKey: String): String {
20 | val messages = runBlocking { messageRepository.get(publicKey).first() }
21 | val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.getDefault())
22 |
23 | val root = JSONObject()
24 | root.put("version", 1)
25 | root.put("timestamp", dateFormat.format(Date()))
26 | root.put("contact_public_key", publicKey)
27 |
28 | val entries = JSONArray()
29 | for (message in messages) {
30 | val jsonMessage = JSONObject().apply {
31 | put("message", message.message)
32 | put("sender", message.sender.toString())
33 | put("type", message.type.toString())
34 | put("timestamp", dateFormat.format(Date(message.timestamp)))
35 | }
36 | entries.put(jsonMessage)
37 | }
38 | root.put("entries", entries)
39 | return root.toString(2)
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/atox/src/main/res/drawable/ic_qr_code.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
13 |
16 |
19 |
22 |
25 |
28 |
31 |
34 |
37 |
40 |
41 |
--------------------------------------------------------------------------------
/atox/src/main/res/values-ur/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | پیغام
4 | مجھ سے aTox پر ایک مہذب انسان کی طرح بات کریں۔
5 | بنائیں
6 | ٹائپ کیا جا رہا ہے…
7 | ایک ٹوکس پروفائل بنائیں
8 | آنے والے پیغامات
9 | منسلک ہو رہا ہے…
10 | نیویگیشن خانہ بند کریں
11 | نیویگیشن خانہ کھولیں
12 | اسٹیٹس کا پیغام
13 | نام
14 | رابطہ ڈیلیٹ کریں
15 | نقل کیا گیا
16 | بھیجیں
17 | پروفائل تصویر
18 | رابطہ شامل کریں
19 | بھیجنے سے قبل کچھ لکھیں
20 | آپ کس چیز کا انتظار کر رہے ہیں؟ شروع کرنے کے لیے ایک رابطہ شامل کریں!
21 | تصدیق کریں
22 | بھیج رہے ہیں…
23 | پیغامات
24 | نقل کریں
25 | ترتیبات
26 | اسٹیٹس کا اشارہ
27 | نا منظور
28 | منظور
29 | aTox صارف
30 | شامل کریں
31 |
--------------------------------------------------------------------------------
/atox/src/main/kotlin/AutoAway.kt:
--------------------------------------------------------------------------------
1 | // SPDX-FileCopyrightText: 2021 aTox contributors
2 | //
3 | // SPDX-License-Identifier: GPL-3.0-only
4 |
5 | package ltd.evilcorp.atox
6 |
7 | import android.util.Log
8 | import java.util.Timer
9 | import javax.inject.Inject
10 | import javax.inject.Singleton
11 | import kotlin.concurrent.schedule
12 | import kotlinx.coroutines.CoroutineScope
13 | import kotlinx.coroutines.launch
14 | import ltd.evilcorp.atox.settings.Settings
15 | import ltd.evilcorp.core.vo.UserStatus
16 | import ltd.evilcorp.domain.feature.UserManager
17 | import ltd.evilcorp.domain.tox.Tox
18 |
19 | private const val TAG = "AutoAway"
20 |
21 | @Singleton
22 | class AutoAway @Inject constructor(
23 | private val scope: CoroutineScope,
24 | private val settings: Settings,
25 | private val userManager: UserManager,
26 | private val tox: Tox,
27 | ) {
28 | private var awayTimer = Timer()
29 | private var autoAway = false
30 |
31 | fun onBackground() {
32 | if (!settings.autoAwayEnabled) return
33 |
34 | Log.i(TAG, "In background, scheduling away")
35 | awayTimer.schedule(settings.autoAwaySeconds * 1_000) {
36 | scope.launch {
37 | if (tox.getStatus() != UserStatus.None) return@launch
38 | Log.i(TAG, "Setting away")
39 | userManager.setStatus(UserStatus.Away)
40 | autoAway = true
41 | }
42 | }
43 | }
44 |
45 | fun onForeground() {
46 | if (!settings.autoAwayEnabled) return
47 | Log.i(TAG, "In foreground, canceling away")
48 | awayTimer.cancel()
49 | awayTimer = Timer()
50 | if (autoAway) {
51 | Log.i(TAG, "Restoring status")
52 | userManager.setStatus(UserStatus.None)
53 | autoAway = false
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------