├── .bazelrc ├── .bazelversion ├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ ├── ci.yaml │ └── detekt.yaml ├── .gitignore ├── BUILD.bazel ├── LICENSE ├── PRIVACY ├── README.md ├── WORKSPACE ├── atox ├── .gitignore ├── BUILD.bazel ├── build.gradle.kts ├── debug.keystore ├── proguard-tox4j.pro └── src │ ├── androidTest │ └── kotlin │ │ ├── IntegrationTest.kt │ │ └── ui │ │ └── AvatarFactoryTest.kt │ ├── debug │ └── res │ │ └── values │ │ └── strings.xml │ └── main │ ├── AndroidManifest.xml │ ├── kotlin │ ├── ActionReceiver.kt │ ├── App.kt │ ├── AutoAway.kt │ ├── BootReceiver.kt │ ├── Extensions.kt │ ├── MainActivity.kt │ ├── PendingIntentCompat.kt │ ├── ProximityScreenOff.kt │ ├── ToxService.kt │ ├── di │ │ ├── AndroidModule.kt │ │ ├── AppComponent.kt │ │ ├── AppModule.kt │ │ ├── DatabaseModule.kt │ │ ├── ViewModelFactory.kt │ │ └── ViewModelModule.kt │ ├── settings │ │ └── Settings.kt │ ├── tox │ │ ├── BootstrapNodeRegistryImpl.kt │ │ ├── EventListenerCallbacks.kt │ │ └── ToxStarter.kt │ └── ui │ │ ├── AvatarFactory.kt │ │ ├── AvatarImageView.kt │ │ ├── BaseFragment.kt │ │ ├── NotificationHelper.kt │ │ ├── ReceiveShareDialogFragment.kt │ │ ├── StatusDialog.kt │ │ ├── Util.kt │ │ ├── addcontact │ │ ├── AddContactFragment.kt │ │ └── AddContactViewModel.kt │ │ ├── call │ │ ├── CallFragment.kt │ │ └── CallViewModel.kt │ │ ├── chat │ │ ├── ChatAdapter.kt │ │ ├── ChatFragment.kt │ │ └── ChatViewModel.kt │ │ ├── contactlist │ │ ├── ContactAdapter.kt │ │ ├── ContactListFragment.kt │ │ └── ContactListViewModel.kt │ │ ├── contactprofile │ │ ├── ContactProfileFragment.kt │ │ └── ContactProfileViewModel.kt │ │ ├── createprofile │ │ ├── CreateProfileFragment.kt │ │ └── CreateProfileViewModel.kt │ │ ├── friendrequest │ │ ├── FriendRequestFragment.kt │ │ └── FriendRequestViewModel.kt │ │ ├── settings │ │ ├── SettingsFragment.kt │ │ └── SettingsViewModel.kt │ │ └── userprofile │ │ ├── UserProfileFragment.kt │ │ └── UserProfileViewModel.kt │ ├── launcher_icon-playstore.png │ └── res │ ├── anim │ ├── fade_in.xml │ ├── fade_out.xml │ ├── slide_in_bottom.xml │ ├── slide_in_right.xml │ ├── slide_out_bottom.xml │ └── slide_out_right.xml │ ├── drawable │ ├── border.xml │ ├── circle.xml │ ├── disable_ripple_effect.xml │ ├── gradient_contacts.xml │ ├── ic_attach_file.xml │ ├── ic_back.xml │ ├── ic_call.xml │ ├── ic_call_end.xml │ ├── ic_chat.xml │ ├── ic_launcher_foreground.xml │ ├── ic_mic.xml │ ├── ic_mic_off.xml │ ├── ic_not_interested.xml │ ├── ic_notification.xml │ ├── ic_qr_code.xml │ ├── ic_send.xml │ ├── ic_speakerphone.xml │ ├── ic_speakerphone_off.xml │ ├── message_divider.xml │ ├── received_message_bubble.xml │ ├── sent_message_bubble.xml │ ├── side_nav_bar_background.xml │ └── status_background.xml │ ├── layout │ ├── activity_main.xml │ ├── chat_action_received.xml │ ├── chat_action_sent.xml │ ├── chat_filetransfer.xml │ ├── chat_message_received.xml │ ├── chat_message_sent.xml │ ├── contact_list_view_item.xml │ ├── dialog_receive_share.xml │ ├── dialog_status.xml │ ├── fragment_add_contact.xml │ ├── fragment_call.xml │ ├── fragment_chat.xml │ ├── fragment_contact_list.xml │ ├── fragment_contact_profile.xml │ ├── fragment_friend_request.xml │ ├── fragment_profile.xml │ ├── fragment_settings.xml │ ├── fragment_user_profile.xml │ ├── friend_request_item.xml │ ├── nav_header_contact_list.xml │ ├── profile_options.xml │ └── view_ongoing_call.xml │ ├── menu │ ├── activity_contact_list_drawer.xml │ ├── chat_message_context_menu.xml │ ├── chat_options_menu.xml │ ├── chat_send_long_press_menu.xml │ ├── contact_list_context_menu.xml │ ├── friend_request_context_menu.xml │ ├── ft_message_context_menu.xml │ └── user_profile_share_id_context_menu.xml │ ├── mipmap-anydpi-v26 │ ├── ic_launcher.xml │ └── ic_launcher_round.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 │ ├── navigation │ └── nav_graph.xml │ ├── raw │ └── nodes.json │ ├── values-ar │ └── strings.xml │ ├── values-bg │ └── strings.xml │ ├── values-bs │ └── strings.xml │ ├── values-cs │ └── strings.xml │ ├── values-de │ └── strings.xml │ ├── values-el │ └── strings.xml │ ├── values-es │ └── strings.xml │ ├── values-et │ └── strings.xml │ ├── values-eu │ └── strings.xml │ ├── values-fa │ └── strings.xml │ ├── values-fi │ └── strings.xml │ ├── values-fr │ └── strings.xml │ ├── values-hi │ └── strings.xml │ ├── values-hr │ └── strings.xml │ ├── values-hu │ └── strings.xml │ ├── values-hy │ └── strings.xml │ ├── values-in │ └── strings.xml │ ├── values-is │ └── strings.xml │ ├── values-it │ └── strings.xml │ ├── values-iw │ └── strings.xml │ ├── values-kmr │ └── strings.xml │ ├── values-ko │ └── strings.xml │ ├── values-lt │ └── strings.xml │ ├── values-nb-rNO │ └── strings.xml │ ├── values-night-v29 │ └── styles.xml │ ├── values-night │ └── styles.xml │ ├── values-nl │ └── strings.xml │ ├── values-ny │ └── strings.xml │ ├── values-pl │ └── strings.xml │ ├── values-pt-rBR │ └── strings.xml │ ├── values-pt │ └── strings.xml │ ├── values-ro │ └── strings.xml │ ├── values-ru │ └── strings.xml │ ├── values-sk │ └── strings.xml │ ├── values-sr │ └── strings.xml │ ├── values-sv │ └── strings.xml │ ├── values-tr │ └── strings.xml │ ├── values-uk │ └── strings.xml │ ├── values-ur │ └── strings.xml │ ├── values-uz │ └── strings.xml │ ├── values-v29 │ └── styles.xml │ ├── values-zh-rCN │ └── strings.xml │ ├── values-zh-rTW │ └── strings.xml │ ├── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── ic_launcher_background.xml │ ├── integers.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ └── file_paths.xml ├── bazel ├── BUILD.bazel ├── jvm-macros.BUILD ├── jvm-toxcore-api.BUILD ├── jvm-toxcore-c.BUILD ├── libsodium.BUILD ├── libvpx.BUILD ├── libvpx │ ├── BUILD.bazel │ ├── vpx_config.asm │ ├── vpx_config.h │ ├── vpx_config.mk │ └── vpx_version.h ├── opus.BUILD ├── opus │ ├── BUILD.bazel │ ├── android_arm │ │ └── config.h │ └── android_x86 │ │ └── config.h ├── psocket │ ├── BUILD.bazel │ └── WORKSPACE ├── pthread │ ├── BUILD.bazel │ └── WORKSPACE └── tools │ └── config │ └── BUILD.bazel ├── build.gradle.kts ├── core ├── .gitignore ├── BUILD.bazel ├── build.gradle.kts ├── schemas │ └── ltd.evilcorp.core.db.Database │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ └── 5.json └── src │ ├── androidTest │ └── kotlin │ │ └── db │ │ ├── ContactDaoTest.kt │ │ ├── DatabaseMigrationTest.kt │ │ └── UserDaoTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── kotlin │ │ ├── db │ │ ├── BUILD.bazel │ │ ├── ContactDao.kt │ │ ├── Converters.kt │ │ ├── Database.kt │ │ ├── FileTransferDao.kt │ │ ├── FriendRequestDao.kt │ │ ├── MessageDao.kt │ │ ├── Migration.kt │ │ └── UserDao.kt │ │ ├── repository │ │ ├── BUILD.bazel │ │ ├── ContactRepository.kt │ │ ├── FileTransferRepository.kt │ │ ├── FriendRequestRepository.kt │ │ ├── MessageRepository.kt │ │ └── UserRepository.kt │ │ └── vo │ │ ├── BUILD.bazel │ │ ├── Contact.kt │ │ ├── FileTransfer.kt │ │ ├── FriendRequest.kt │ │ ├── Message.kt │ │ ├── PublicKey.kt │ │ └── User.kt │ └── test │ └── kotlin │ └── db │ └── ConvertersTest.kt ├── detekt.yml ├── domain ├── .gitignore ├── BUILD.bazel ├── build.gradle.kts └── src │ ├── androidTest │ └── kotlin │ │ └── tox │ │ └── ToxTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── kotlin │ │ ├── av │ │ ├── AudioCapture.kt │ │ └── AudioPlayer.kt │ │ ├── feature │ │ ├── CallManager.kt │ │ ├── ChatManager.kt │ │ ├── ContactManager.kt │ │ ├── ExportManager.kt │ │ ├── FileTransferManager.kt │ │ ├── FriendRequestManager.kt │ │ └── UserManager.kt │ │ └── tox │ │ ├── BootstrapNodeJsonParser.kt │ │ ├── BootstrapNodeRegistry.kt │ │ ├── SaveManager.kt │ │ ├── SaveOptions.kt │ │ ├── Tox.kt │ │ ├── ToxAvEventListener.kt │ │ ├── ToxConstants.kt │ │ ├── ToxEventListener.kt │ │ ├── ToxIdValidator.kt │ │ ├── ToxSaveTester.kt │ │ ├── ToxTypes.kt │ │ ├── ToxUtil.kt │ │ └── ToxWrapper.kt │ └── test │ └── kotlin │ └── tox │ ├── ToxIdValidatorTest.kt │ ├── ToxTypesTest.kt │ └── ToxUtilTest.kt ├── fastlane └── metadata │ └── android │ ├── ar │ └── title.txt │ ├── bg │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── bs │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── de │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── el │ ├── changelogs │ │ └── 10.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── en-US │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── images │ │ ├── featureGraphic.png │ │ ├── icon.png │ │ └── phoneScreenshots │ │ │ ├── 1.jpg │ │ │ └── 2.png │ ├── short_description.txt │ └── title.txt │ ├── es │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── et │ └── title.txt │ ├── fa │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── fr │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── he │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── hi-IN │ ├── short_description.txt │ └── title.txt │ ├── hr │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── hu │ ├── changelogs │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── is │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── it │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── lt │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── nb-NO │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── pl │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── pt-BR │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── pt │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── ro │ ├── changelogs │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── ru │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── sk │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── sr │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── sv │ ├── short_description.txt │ └── title.txt │ ├── tr │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── tum │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── uk │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ ├── 14.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ ├── zh-CN │ ├── changelogs │ │ ├── 10.txt │ │ ├── 11.txt │ │ ├── 12.txt │ │ ├── 13.txt │ │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt │ └── zh-TW │ ├── changelogs │ ├── 10.txt │ ├── 11.txt │ ├── 12.txt │ ├── 13.txt │ ├── 14.txt │ └── 9.txt │ ├── full_description.txt │ ├── short_description.txt │ └── title.txt ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── img ├── get-it-on-fdroid.png └── get-it-on-google-play.png ├── scripts ├── Darwin.mk ├── Linux.mk ├── android.mk ├── build-aarch64-linux-android ├── build-arm-linux-androideabi ├── build-host ├── build-i686-linux-android ├── build-x86_64-linux-android ├── common.mk ├── dependencies.mk ├── patches │ └── libvpx.patch └── release.mk └── settings.gradle.kts /.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 | -------------------------------------------------------------------------------- /.bazelversion: -------------------------------------------------------------------------------- 1 | 7.6.1 2 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text eol=lf 2 | 3 | # Windows wants .bat-files to use CRLF. 4 | *.bat text eof=crlf 5 | 6 | *.png binary 7 | *.jpg binary 8 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: robinlinden 2 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /.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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /atox/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | libs/ 3 | release/ 4 | src/main/jniLibs/ 5 | -------------------------------------------------------------------------------- /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/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/debug.keystore -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | aTox debug 4 | 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /atox/src/main/launcher_icon-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/launcher_icon-playstore.png -------------------------------------------------------------------------------- /atox/src/main/res/anim/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /atox/src/main/res/anim/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /atox/src/main/res/anim/slide_in_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /atox/src/main/res/anim/slide_in_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /atox/src/main/res/anim/slide_out_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /atox/src/main/res/anim/slide_out_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/border.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/disable_ripple_effect.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/gradient_contacts.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_attach_file.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_call.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_call_end.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_chat.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 6 | 8 | 12 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_mic.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_mic_off.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_not_interested.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_notification.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /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/drawable/ic_send.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_speakerphone.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/ic_speakerphone_off.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/message_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/side_nav_bar_background.xml: -------------------------------------------------------------------------------- 1 | 3 | 9 | 10 | -------------------------------------------------------------------------------- /atox/src/main/res/drawable/status_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /atox/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 18 | 19 | -------------------------------------------------------------------------------- /atox/src/main/res/layout/chat_action_received.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /atox/src/main/res/layout/chat_action_sent.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 17 | 18 | 25 | 26 | -------------------------------------------------------------------------------- /atox/src/main/res/layout/chat_message_received.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 19 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /atox/src/main/res/layout/chat_message_sent.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 18 | 19 | 26 | 27 | -------------------------------------------------------------------------------- /atox/src/main/res/layout/friend_request_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 17 | 18 | 25 | 26 | -------------------------------------------------------------------------------- /atox/src/main/res/menu/activity_contact_list_drawer.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /atox/src/main/res/menu/chat_message_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /atox/src/main/res/menu/chat_options_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /atox/src/main/res/menu/chat_send_long_press_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /atox/src/main/res/menu/contact_list_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /atox/src/main/res/menu/friend_request_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /atox/src/main/res/menu/ft_message_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /atox/src/main/res/menu/user_profile_share_id_context_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /atox/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/atox/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /atox/src/main/res/values-night-v29/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | -------------------------------------------------------------------------------- /atox/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | -------------------------------------------------------------------------------- /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/res/values-v29/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | -------------------------------------------------------------------------------- /atox/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /atox/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #4F83DC 4 | 5 | -------------------------------------------------------------------------------- /atox/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 128 4 | 5 | -------------------------------------------------------------------------------- /atox/src/main/res/xml/file_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /bazel/BUILD.bazel: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/bazel/BUILD.bazel -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /bazel/psocket/WORKSPACE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/bazel/psocket/WORKSPACE -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /bazel/pthread/WORKSPACE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/bazel/pthread/WORKSPACE -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.kotlinAndroid) apply false 3 | alias(libs.plugins.androidLibrary) apply false 4 | alias(libs.plugins.androidApplication) apply false 5 | } 6 | 7 | tasks.register("clean").configure { 8 | delete("build") 9 | } 10 | -------------------------------------------------------------------------------- /core/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /domain/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | libs/ 3 | src/main/jniLibs/ 4 | -------------------------------------------------------------------------------- /domain/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/ar/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/bg/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | Фиксиран срив при обработката на завършващи входящи повиквания 2 | Фиксиран срив при изтриване на контакт 3 | 4 | Пълен регистър на промените: https://github.com/evilcorpltd/aTox/releases 5 | -------------------------------------------------------------------------------- /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/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/bg/full_description.txt: -------------------------------------------------------------------------------- 1 | aTox е безплатно приложение за съобщения с отворен код за протокола Tox. 2 | 3 | Защо aTox? 4 | * С отворен код: безплатно за споделяне, проверка и промяна, както желаете. 5 | * Разумно: нормални настройки по подразбиране, без предположения за това, което ви интересува, не пренебрегва това, което вие искате. 6 | * Шифровани данни от край до край: единствените хора, които могат да виждат вашите разговори, са хората, с които говорите. 7 | * Разпределени: няма централни сървъри, които могат да бъдат свалени или принудени да прехвърлят данни. 8 | * Лек: без телеметрия, реклами или други форми на наблюдение. 9 | 10 | Повече информация: aTox, Tox. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/bg/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, красив и модерен Tox клиент 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/bg/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/bs/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, preljep i moderan Tox client 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/bs/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/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/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/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/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/de/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, ein gut aussehender und moderner Tox-Client 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/de/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/el/full_description.txt: -------------------------------------------------------------------------------- 1 | Το aTox είναι μια δωρεάν εφαρμογή ανταλλαγής μηνυμάτων ανοιχτού κώδικα για το πρωτόκολλο Tox. 2 | 3 | Γιατί το aTox; 4 | * Ανοιχτός κώδικας: ελεύθερο να το μοιραστείτε, να το επιθεωρήσετε και να το αλλάξετε όπως θέλετε. 5 | * Λογικό: λογικές προεπιλογές, χωρίς εικασίες για το τι σας ενδιαφέρει, δεν αγνοεί αυτό που θέλετε. 6 | * Κρυπτογραφημένο από άκρο σε άκρο: οι μόνοι άνθρωποι που μπορούν να δουν τις συνομιλίες σας είναι αυτοί με τους οποίους μιλάτε. 7 | * Κατανεμημένο: δεν υπάρχουν κεντρικοί διακομιστές που μπορούν να καταστραφούν ή να εξαναγκαστούν να παραδώσουν δεδομένα. 8 | * Ελαφρύ: δεν υπάρχει τηλεμετρία, διαφημίσεις ή άλλες μορφές παρακολούθησης. 9 | 10 | Περισσότερες πληροφορίες: aTox, Tox. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/el/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, ένας όμορφος και μοντέρνος πελάτης Tox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/el/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/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/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 | -------------------------------------------------------------------------------- /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/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/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/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/fastlane/metadata/android/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/fastlane/metadata/android/en-US/images/icon.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, a beautiful and modern Tox client 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/en-US/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/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/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/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/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/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 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/es/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, un bello y moderno cliente de Tox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/es/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/et/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/fa/changelogs/11.txt: -------------------------------------------------------------------------------- 1 | aTox دیگر هنگام راه اندازی در اندروید کیت کت خراب نمی شود 2 | رد کردن تماس ورودی در حین تماس اکنون مطابق انتظار عمل می کند 3 | پشتیبانی برای به اشتراک گذاری Tox ID شما به عنوان یک تصویر کد QR اضافه شده است 4 | دکمه "علامت گذاری به عنوان خوانده شده" را به اعلان های پیام اضافه کرد 5 | 6 | تغییرات کامل: https://github.com/evilcorpltd/aTox/releases 7 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fa/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | رفع خرابی در رسیدگی به تماس‌های ورودی پایان‌یافته 2 | رفع خرابی در حذف مخاطب 3 | 4 | تغییرات کامل: https://github.com/evilcorpltd/aTox/releases 5 | -------------------------------------------------------------------------------- /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/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/fa/full_description.txt: -------------------------------------------------------------------------------- 1 | aTox یک برنامه پیام رسانی منبع باز رایگان برای پروتکل Tox است. 2 | 3 | چرا aTox؟ 4 | * منبع باز: رایگان برای اشتراک گذاری ، بازرسی و تغییر به دلخواه. 5 | * منطقی: پیش فرض های عاقلانه ، هیچ حدسی در مورد آنچه برای شما اهمیت دارد ، نمی گذارد آنچه شما می خواهید را نادیده می گیرد. 6 | * رمزگذاری سر به سر: تنها افرادی که می توانند مکالمات شما را ببینند افرادی هستند که با آنها صحبت می کنید. 7 | * توزیع شده: هیچ سرور مرکزی وجود ندارد که بتوان آن را حذف یا مجبور به تحویل داده ها کرد. 8 | * سبک وزن: بدون تله متری ، تبلیغات یا سایر اشکال نظارت. 9 | 10 | اطلاعات بیشتر: aTox ، Tox . 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fa/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox ، مشتری Tox زیبا و مدرن 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fa/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/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/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 | -------------------------------------------------------------------------------- /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/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/fr/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, un client Tox beau et moderne 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/fr/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/he/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/he/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | תוקנה קריסה בסיום שיחות נכנסות 2 | תוקנה קריסה במחיקת אנשי קשר 3 | 4 | יומן שינויים מלא: https://github.com/evilcorpltd/aTox/releases 5 | -------------------------------------------------------------------------------- /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/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/he/full_description.txt: -------------------------------------------------------------------------------- 1 | aTox היא אפליקציית צ'אטים חינמית ובעלת קוד פתוח בשביל הפרוטוקול Tox. 2 | 3 | למה aTox? 4 | * קוד פתוח: חופש ללשתף, לבדוק ולשנות כרצונך. 5 | * סבירה: ברירות מחדל סבירות, ללא ניחושים של מה שחשוב לך ולא מתעלמת ממה שאת/ה רוצה. 6 | * מוצפנת מקצה לקצה: האנשים היחידים שיכולים לראות את השיחות שלך הם האנשים איתם את/ה מדבר/ת. 7 | * מופץ: ללא שרתים מרכזיים שניתן להפילם או להכריח אותם למסור מידע. 8 | * קל: ללא טלמטריה, פרסומות או דרכים אחרות לעקוב אחריך. 9 | 10 | מידע נוסף: aTox, Tox. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/he/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, אפליקציית Tox יפה ומודרנית 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/he/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hi-IN/short_description.txt: -------------------------------------------------------------------------------- 1 | एटॉक्स, एक सुंदर और आधुनिक टॉक्स साधन है 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hi-IN/title.txt: -------------------------------------------------------------------------------- 1 | एटॉक्स 2 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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/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/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/hr/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, lijep i moderan Tox klijent 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hr/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/hu/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, a szép és modern Tox kliens 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/hu/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/is/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, fallegur og nútímalegur Tox biðlari 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/is/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, un meraviglioso nonché moderno client di Tox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/it/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/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/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/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 | -------------------------------------------------------------------------------- /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/lt/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, gražus ir modernus Tox klientas 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/lt/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /fastlane/metadata/android/nb-NO/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, en flott og moderne Tox-klient 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/nb-NO/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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/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/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/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 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, piękny i nowoczesny klient Tox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pl/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/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/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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pt-BR/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, um cliente Tox belo e moderno 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pt-BR/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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/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/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 | -------------------------------------------------------------------------------- /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/pt/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, um cliente Tox belo e moderno 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/pt/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/ro/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, un client Tox frumos și modern 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ro/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | Исправлен вылет при обработке завершения входящих звонков 2 | Исправлен вылет при удалении контактов 3 | 4 | Полный список изменений: https://github.com/evilcorpltd/aTox/releases 5 | -------------------------------------------------------------------------------- /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/ru/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/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/ru/full_description.txt: -------------------------------------------------------------------------------- 1 | aTox это бесплатный мессенджер с открытым исходным кодом, использующий протокол Tox. 2 | 3 | Почему aTox? 4 | * Открытый исходный код: возможность распространять, изучать и изменять код по вашему желанию. 5 | * Рациональность: рациональные настройки по умолчанию, прямо говорящие о своём назначении, и не игнорирующие то, что вы хотите. 6 | * Сквозное шифрование: единственные люди, которые могут увидеть ваши беседы — это люди, с которыми вы общаетесь. 7 | * Распределённость: отсутствие центральных серверов, которые могут быть выключены, или с которых ваши данные могут быть переданы кому-либо постороннему. 8 | * Легковесность: нет телеметрии, рекламы, или других форм наблюдения за вами. 9 | 10 | Больше информации: aTox, Tox. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, красивый и современный клиент Tox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/ru/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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/sk/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, pekný a moderný klient aplikácie Tox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sk/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/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/sr/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | Исправљено крахирање при руковању долазећим позивима 2 | Исправљено крахирање при брисању контакта 3 | 4 | Пун дневник измена: https://github.com/evilcorpltd/aTox/releases 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/sr/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, прелеп и модеран Tox клијент 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sr/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sv/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, en vacker och modern Tox-klient 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/sv/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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/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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /fastlane/metadata/android/tr/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, güzel ve modern bir Tox istemcisi 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/tr/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /fastlane/metadata/android/tum/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox, wupu wakutowa wasono wa Tox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/tum/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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/uk/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/uk/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | Випарвлено виліт під час відхилення дзвінків, що надходять 2 | Виправлено виліт під час видалення контактів 3 | 4 | Повний перелік змін: https://github.com/evilcorpltd/aTox/releases 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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/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/uk/full_description.txt: -------------------------------------------------------------------------------- 1 | Tox - це безкоштовний месенджер із відкритим початковим кодом, що використовує протокол Tox. 2 | 3 | Чому aTox? 4 | * Відкритий початковий код: доступність коду для поширення, перевірки та змін за вашим бажанням. 5 | * Помірність: розумні базові налаштування, які не мають намірів вгадувати, але не ігнорують того, що ви хочете. 6 | * Наскрізне шифрування: лише ви та ваш співрозмовник можуть побачити спільну переписку. 7 | * Розподіленість: відстуні центральні сервери, що можуть вийти з ладу або передати ваші дані комусь сторонньому. 8 | * Легкість: свобода від телеметрії, реклами та інших форм стеження за вами. 9 | 10 | Детальніше: aTox, Tox. 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox це гарний та сучасний клієнт Tox 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/uk/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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-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-CN/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | 修复了处理结束来电相关的崩溃 2 | 修复了删除联系人发生的崩溃 3 | 4 | 完整更新日志:https://github.com/evilcorpltd/aTox/releases 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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-CN/full_description.txt: -------------------------------------------------------------------------------- 1 | aTox 是基于 Tox 协议的免费开源的消息传递应用。 2 | 3 | 为什么使用aTox? 4 | * 开源:可以自由分享、检视代码和随意更改。 5 | * 合理:理智的默认设定,不去猜测您所关心的内容,也不忽略想要的。 6 | * 端到端加密:只有与您交谈的人才能看到您的对话。 7 | * 分布式:没有可以被关闭或强制上交数据的中央服务器。 8 | * 轻量:没有遥测、广告或其他形式的监控。 9 | 10 | 更多信息:aToxTox。 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox,一个美观现代的 Tox 客户端 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-CN/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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-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/zh-TW/changelogs/12.txt: -------------------------------------------------------------------------------- 1 | 修復了在處理掛斷來電時的程式崩潰問題 2 | 修復了在刪除聯絡人時的程式崩潰問題 3 | 4 | 完整更新日誌: https://github.com/evilcorpltd/aTox/releases 5 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-TW/full_description.txt: -------------------------------------------------------------------------------- 1 | aTox 是一款適用於 Tox 協議的免費開源訊息應用程式。 2 | 3 | 為何使用 aTox? 4 | 5 | * 開放原始碼:可自由分享、檢視和修改。 6 | * 端對端加密:只有和對話的對象才能看到你們的對話內容。 7 | * 分散式架構:沒有可被關閉或被迫交出數據的中央伺服器。 8 | * 輕量化:沒有遙測、廣告或其他形式的監控。 9 | 10 | 進一步瞭解:aTox, Tox。 11 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-TW/short_description.txt: -------------------------------------------------------------------------------- 1 | aTox - 功能強大,設計美觀的 Tox 客户端 2 | -------------------------------------------------------------------------------- /fastlane/metadata/android/zh-TW/title.txt: -------------------------------------------------------------------------------- 1 | aTox 2 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionSha256Sum=845952a9d6afa783db70bb3b0effaae45ae5542ca2bb7929619e8af49cb634cf 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.1-bin.zip 5 | networkTimeout=10000 6 | validateDistributionUrl=true 7 | zipStoreBase=GRADLE_USER_HOME 8 | zipStorePath=wrapper/dists 9 | -------------------------------------------------------------------------------- /img/get-it-on-fdroid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/img/get-it-on-fdroid.png -------------------------------------------------------------------------------- /img/get-it-on-google-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/evilcorpltd/aTox/f4cb19a7a104e3c66e6c3f9ca4bcdb9e9b3126b4/img/get-it-on-google-play.png -------------------------------------------------------------------------------- /scripts/Darwin.mk: -------------------------------------------------------------------------------- 1 | DLLEXT := .dylib 2 | -------------------------------------------------------------------------------- /scripts/Linux.mk: -------------------------------------------------------------------------------- 1 | DLLEXT := .so 2 | 3 | export CFLAGS += -fPIC 4 | export CXXFLAGS += -fPIC 5 | -------------------------------------------------------------------------------- /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-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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /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 | --------------------------------------------------------------------------------