Compare commits
36 commits
437002d189
...
4d011016db
Author | SHA1 | Date | |
---|---|---|---|
4d011016db | |||
|
865676e416 | ||
|
20b998f871 | ||
|
37232a2624 | ||
|
c30e83e097 | ||
|
7590e2a0ed | ||
|
699b198a62 | ||
|
d280327f16 | ||
|
ae671d0aef | ||
|
f62e9f1999 | ||
|
daa7b84e71 | ||
|
f00b31da14 | ||
|
74c0280080 | ||
|
66731f3f38 | ||
|
14ca6d54e6 | ||
|
afe257566b | ||
|
2db270cff4 | ||
|
7014e5e4f8 | ||
|
f1fcaeb3d8 | ||
|
23529c83e1 | ||
|
1b15f2c464 | ||
|
34abb2f06b | ||
|
536d92926a | ||
|
ed98860506 | ||
|
b418c4d896 | ||
|
ad48fe6cd9 | ||
|
7731a864fd | ||
|
1969a23726 | ||
|
f9acc3bf71 | ||
|
3c1550b208 | ||
|
99e4c3d2e0 | ||
|
78048bbd3d | ||
|
330980391c | ||
|
5c4eccec13 | ||
|
b1ec3a0e29 | ||
|
56f01c29b9 |
2
.github/workflows/android.yml
vendored
|
@ -19,7 +19,7 @@ jobs:
|
||||||
java-version: '11'
|
java-version: '11'
|
||||||
distribution: 'adopt'
|
distribution: 'adopt'
|
||||||
- name: Download WebRTC
|
- name: Download WebRTC
|
||||||
run: mkdir libs && wget -O libs/libwebrtc-m92.aar https://gultsch.de/files/libwebrtc-m92.aar
|
run: mkdir libs && wget -O libs/libwebrtc-m99.aar https://gultsch.de/files/libwebrtc-m99.aar
|
||||||
- name: Grant execute permission for gradlew
|
- name: Grant execute permission for gradlew
|
||||||
run: chmod +x gradlew
|
run: chmod +x gradlew
|
||||||
- name: Build Quicksy
|
- name: Build Quicksy
|
||||||
|
|
21
.tx/config
|
@ -1,21 +0,0 @@
|
||||||
[main]
|
|
||||||
host = https://www.transifex.com
|
|
||||||
lang_map = af_ZA: af-rZA, am_ET: am-rET, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, ar_EG: ar-rEG, ar_IQ: ar-rIQ, ar_JO: ar-rJO, ar_KW: ar-rKW, ar_LB: ar-rLB, ar_LY: ar-rLY, ar_MA: ar-rMA, ar_OM: ar-rOM, ar_QA: ar-rQA, ar_SA: ar-rSA, ar_SY: ar-rSY, ar_TN: ar-rTN, ar_YE: ar-rYE, arn_CL: arn-rCL, as_IN: as-rIN, az_AZ: az-rAZ, ba_RU: ba-rRU, be_BY: be-rBY, bg_BG: bg-rBG, bn_BD: bn-rBD, bn_IN: bn-rIN, bo_CN: bo-rCN, br_FR: br-rFR, bs_BA: bs-rBA, ca_ES: ca-rES, co_FR: co-rFR, cs_CZ: cs-rCZ, cy_GB: cy-rGB, da_DK: da-rDK, de_AT: de-rAT, de_CH: de-rCH, de_DE: de-rDE, de_LI: de-rLI, de_LU: de-rLU, dsb_DE: dsb-rDE, dv_MV: dv-rMV, el_GR: el-rGR, en_AU: en-rAU, en_BZ: en-rBZ, en_CA: en-rCA, en_GB: en-rGB, en_IE: en-rIE, en_IN: en-rIN, en_JM: en-rJM, en_MY: en-rMY, en_NZ: en-rNZ, en_PH: en-rPH, en_SG: en-rSG, en_TT: en-rTT, en_US: en-rUS, en_ZA: en-rZA, en_ZW: en-rZW, es_AR: es-rAR, es_BO: es-rBO, es_CL: es-rCL, es_CO: es-rCO, es_CR: es-rCR, es_DO: es-rDO, es_EC: es-rEC, es_ES: es-rES, es_GT: es-rGT, es_HN: es-rHN, es_MX: es-rMX, es_NI: es-rNI, es_PA: es-rPA, es_PE: es-rPE, es_PR: es-rPR, es_PY: es-rPY, es_SV: es-rSV, es_US: es-rUS, es_UY: es-rUY, es_VE: es-rVE, et_EE: et-rEE, eu_ES: eu-rES, fa_IR: fa-rIR, fi_FI: fi-rFI, fil_PH: fil-rPH, fo_FO: fo-rFO, fr_BE: fr-rBE, fr_CA: fr-rCA, fr_CH: fr-rCH, fr_FR: fr-rFR, fr_LU: fr-rLU, fr_MC: fr-rMC, fy_NL: fy-rNL, ga_IE: ga-rIE, gd_GB: gd-rGB, gl_ES: gl-rES, gsw_FR: gsw-rFR, gu_IN: gu-rIN, ha_NG: ha-rNG, hi_IN: hi-rIN, hr_BA: hr-rBA, hr_HR: hr-rHR, hsb_DE: hsb-rDE, hu_HU: hu-rHU, hy_AM: hy-rAM, id_ID: id-rID, ig_NG: ig-rNG, ii_CN: ii-rCN, is_IS: is-rIS, it_CH: it-rCH, it_IT: it-rIT, iu_CA: iu-rCA, ja_JP: ja-rJP, ka_GE: ka-rGE, kk_KZ: kk-rKZ, kl_GL: kl-rGL, km_KH: km-rKH, kn_IN: kn-rIN, ko_KR: ko-rKR, kok_IN: kok-rIN, ky_KG: ky-rKG, lb_LU: lb-rLU, lo_LA: lo-rLA, lt_LT: lt-rLT, lv_LV: lv-rLV, mi_NZ: mi-rNZ, mk_MK: mk-rMK, ml_IN: ml-rIN, mn_CN: mn-rCN, mn_MN: mn-rMN, moh_CA: moh-rCA, mr_IN: mr-rIN, ms_BN: ms-rBN, ms_MY: ms-rMY, mt_MT: mt-rMT, nb_NO: nb-rNO, ne_NP: ne-rNP, nl_BE: nl-rBE, nl_NL: nl-rNL, nn_NO: nn-rNO, nso_ZA: nso-rZA, oc_FR: oc-rFR, or_IN: or-rIN, pa_IN: pa-rIN, pl_PL: pl-rPL, prs_AF: prs-rAF, ps_AF: ps-rAF, pt_BR: pt-rBR, pt_PT: pt-rPT, qut_GT: qut-rGT, quz_BO: quz-rBO, quz_EC: quz-rEC, quz_PE: quz-rPE, rm_CH: rm-rCH, ro_RO: ro-rRO, ru_RU: ru-rRU, rw_RW: rw-rRW, sa_IN: sa-rIN, sah_RU: sah-rRU, se_FI: se-rFI, se_NO: se-rNO, se_SE: se-rSE, si_LK: si-rLK, sk_SK: sk-rSK, sl_SI: sl-rSI, sma_NO: sma-rNO, sma_SE: sma-rSE, smj_NO: smj-rNO, smj_SE: smj-rSE, smn_FI: smn-rFI, sms_FI: sms-rFI, sq_AL: sq-rAL, sr_BA: sr-rBA, sr_CS: sr-rCS, sr_ME: sr-rME, sr_RS: sr-rRS, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, te_IN: te-rIN, tg_TJ: tg-rTJ, th_TH: th-rTH, tk_TM: tk-rTM, tn_ZA: tn-rZA, tr_TR: tr-rTR, tt_RU: tt-rRU, tzm_DZ: tzm-rDZ, ug_CN: ug-rCN, uk_UA: uk-rUA, ur_PK: ur-rPK, uz_UZ: uz-rUZ, vi_VN: vi-rVN, wo_SN: wo-rSN, xh_ZA: xh-rZA, yo_NG: yo-rNG, zh_CN: zh-rCN, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA, no_NO: no-rNO, he_IL: iw-rIL, he: iw
|
|
||||||
|
|
||||||
[conversations.main-strings]
|
|
||||||
file_filter = src/main/res/values-<lang>/strings.xml
|
|
||||||
source_file = src/main/res/values/strings.xml
|
|
||||||
source_lang = en
|
|
||||||
|
|
||||||
[conversations.quicksy-strings]
|
|
||||||
file_filter = src/quicksy/res/values-<lang>/strings.xml
|
|
||||||
source_file = src/quicksy/res/values/strings.xml
|
|
||||||
source_lang = en
|
|
||||||
type = ANDROID
|
|
||||||
|
|
||||||
[conversations.conversations-strings]
|
|
||||||
file_filter = src/conversations/res/values-<lang>/strings.xml
|
|
||||||
source_file = src/conversations/res/values/strings.xml
|
|
||||||
source_lang = en
|
|
||||||
type = ANDROID
|
|
||||||
|
|
6
Gemfile
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
gem "fastlane"
|
||||||
|
gem "screengrab"
|
221
Gemfile.lock
Normal file
|
@ -0,0 +1,221 @@
|
||||||
|
GEM
|
||||||
|
remote: https://rubygems.org/
|
||||||
|
specs:
|
||||||
|
CFPropertyList (3.0.5)
|
||||||
|
rexml
|
||||||
|
addressable (2.8.0)
|
||||||
|
public_suffix (>= 2.0.2, < 5.0)
|
||||||
|
artifactory (3.0.15)
|
||||||
|
atomos (0.1.3)
|
||||||
|
aws-eventstream (1.2.0)
|
||||||
|
aws-partitions (1.566.0)
|
||||||
|
aws-sdk-core (3.130.0)
|
||||||
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
|
aws-partitions (~> 1, >= 1.525.0)
|
||||||
|
aws-sigv4 (~> 1.1)
|
||||||
|
jmespath (~> 1.0)
|
||||||
|
aws-sdk-kms (1.55.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.127.0)
|
||||||
|
aws-sigv4 (~> 1.1)
|
||||||
|
aws-sdk-s3 (1.113.0)
|
||||||
|
aws-sdk-core (~> 3, >= 3.127.0)
|
||||||
|
aws-sdk-kms (~> 1)
|
||||||
|
aws-sigv4 (~> 1.4)
|
||||||
|
aws-sigv4 (1.4.0)
|
||||||
|
aws-eventstream (~> 1, >= 1.0.2)
|
||||||
|
babosa (1.0.4)
|
||||||
|
claide (1.1.0)
|
||||||
|
colored (1.2)
|
||||||
|
colored2 (3.1.2)
|
||||||
|
commander (4.6.0)
|
||||||
|
highline (~> 2.0.0)
|
||||||
|
declarative (0.0.20)
|
||||||
|
digest-crc (0.6.4)
|
||||||
|
rake (>= 12.0.0, < 14.0.0)
|
||||||
|
domain_name (0.5.20190701)
|
||||||
|
unf (>= 0.0.5, < 1.0.0)
|
||||||
|
dotenv (2.7.6)
|
||||||
|
emoji_regex (3.2.3)
|
||||||
|
excon (0.91.0)
|
||||||
|
faraday (1.10.0)
|
||||||
|
faraday-em_http (~> 1.0)
|
||||||
|
faraday-em_synchrony (~> 1.0)
|
||||||
|
faraday-excon (~> 1.1)
|
||||||
|
faraday-httpclient (~> 1.0)
|
||||||
|
faraday-multipart (~> 1.0)
|
||||||
|
faraday-net_http (~> 1.0)
|
||||||
|
faraday-net_http_persistent (~> 1.0)
|
||||||
|
faraday-patron (~> 1.0)
|
||||||
|
faraday-rack (~> 1.0)
|
||||||
|
faraday-retry (~> 1.0)
|
||||||
|
ruby2_keywords (>= 0.0.4)
|
||||||
|
faraday-cookie_jar (0.0.7)
|
||||||
|
faraday (>= 0.8.0)
|
||||||
|
http-cookie (~> 1.0.0)
|
||||||
|
faraday-em_http (1.0.0)
|
||||||
|
faraday-em_synchrony (1.0.0)
|
||||||
|
faraday-excon (1.1.0)
|
||||||
|
faraday-httpclient (1.0.1)
|
||||||
|
faraday-multipart (1.0.3)
|
||||||
|
multipart-post (>= 1.2, < 3)
|
||||||
|
faraday-net_http (1.0.1)
|
||||||
|
faraday-net_http_persistent (1.2.0)
|
||||||
|
faraday-patron (1.0.0)
|
||||||
|
faraday-rack (1.0.0)
|
||||||
|
faraday-retry (1.0.3)
|
||||||
|
faraday_middleware (1.2.0)
|
||||||
|
faraday (~> 1.0)
|
||||||
|
fastimage (2.2.6)
|
||||||
|
fastlane (2.204.3)
|
||||||
|
CFPropertyList (>= 2.3, < 4.0.0)
|
||||||
|
addressable (>= 2.8, < 3.0.0)
|
||||||
|
artifactory (~> 3.0)
|
||||||
|
aws-sdk-s3 (~> 1.0)
|
||||||
|
babosa (>= 1.0.3, < 2.0.0)
|
||||||
|
bundler (>= 1.12.0, < 3.0.0)
|
||||||
|
colored
|
||||||
|
commander (~> 4.6)
|
||||||
|
dotenv (>= 2.1.1, < 3.0.0)
|
||||||
|
emoji_regex (>= 0.1, < 4.0)
|
||||||
|
excon (>= 0.71.0, < 1.0.0)
|
||||||
|
faraday (~> 1.0)
|
||||||
|
faraday-cookie_jar (~> 0.0.6)
|
||||||
|
faraday_middleware (~> 1.0)
|
||||||
|
fastimage (>= 2.1.0, < 3.0.0)
|
||||||
|
gh_inspector (>= 1.1.2, < 2.0.0)
|
||||||
|
google-apis-androidpublisher_v3 (~> 0.3)
|
||||||
|
google-apis-playcustomapp_v1 (~> 0.1)
|
||||||
|
google-cloud-storage (~> 1.31)
|
||||||
|
highline (~> 2.0)
|
||||||
|
json (< 3.0.0)
|
||||||
|
jwt (>= 2.1.0, < 3)
|
||||||
|
mini_magick (>= 4.9.4, < 5.0.0)
|
||||||
|
multipart-post (~> 2.0.0)
|
||||||
|
naturally (~> 2.2)
|
||||||
|
optparse (~> 0.1.1)
|
||||||
|
plist (>= 3.1.0, < 4.0.0)
|
||||||
|
rubyzip (>= 2.0.0, < 3.0.0)
|
||||||
|
security (= 0.1.3)
|
||||||
|
simctl (~> 1.6.3)
|
||||||
|
terminal-notifier (>= 2.0.0, < 3.0.0)
|
||||||
|
terminal-table (>= 1.4.5, < 2.0.0)
|
||||||
|
tty-screen (>= 0.6.3, < 1.0.0)
|
||||||
|
tty-spinner (>= 0.8.0, < 1.0.0)
|
||||||
|
word_wrap (~> 1.0.0)
|
||||||
|
xcodeproj (>= 1.13.0, < 2.0.0)
|
||||||
|
xcpretty (~> 0.3.0)
|
||||||
|
xcpretty-travis-formatter (>= 0.0.3)
|
||||||
|
gh_inspector (1.1.3)
|
||||||
|
google-apis-androidpublisher_v3 (0.16.0)
|
||||||
|
google-apis-core (>= 0.4, < 2.a)
|
||||||
|
google-apis-core (0.4.2)
|
||||||
|
addressable (~> 2.5, >= 2.5.1)
|
||||||
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
|
httpclient (>= 2.8.1, < 3.a)
|
||||||
|
mini_mime (~> 1.0)
|
||||||
|
representable (~> 3.0)
|
||||||
|
retriable (>= 2.0, < 4.a)
|
||||||
|
rexml
|
||||||
|
webrick
|
||||||
|
google-apis-iamcredentials_v1 (0.10.0)
|
||||||
|
google-apis-core (>= 0.4, < 2.a)
|
||||||
|
google-apis-playcustomapp_v1 (0.7.0)
|
||||||
|
google-apis-core (>= 0.4, < 2.a)
|
||||||
|
google-apis-storage_v1 (0.11.0)
|
||||||
|
google-apis-core (>= 0.4, < 2.a)
|
||||||
|
google-cloud-core (1.6.0)
|
||||||
|
google-cloud-env (~> 1.0)
|
||||||
|
google-cloud-errors (~> 1.0)
|
||||||
|
google-cloud-env (1.5.0)
|
||||||
|
faraday (>= 0.17.3, < 2.0)
|
||||||
|
google-cloud-errors (1.2.0)
|
||||||
|
google-cloud-storage (1.36.1)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
digest-crc (~> 0.4)
|
||||||
|
google-apis-iamcredentials_v1 (~> 0.1)
|
||||||
|
google-apis-storage_v1 (~> 0.1)
|
||||||
|
google-cloud-core (~> 1.6)
|
||||||
|
googleauth (>= 0.16.2, < 2.a)
|
||||||
|
mini_mime (~> 1.0)
|
||||||
|
googleauth (1.1.2)
|
||||||
|
faraday (>= 0.17.3, < 3.a)
|
||||||
|
jwt (>= 1.4, < 3.0)
|
||||||
|
memoist (~> 0.16)
|
||||||
|
multi_json (~> 1.11)
|
||||||
|
os (>= 0.9, < 2.0)
|
||||||
|
signet (>= 0.16, < 2.a)
|
||||||
|
highline (2.0.3)
|
||||||
|
http-cookie (1.0.4)
|
||||||
|
domain_name (~> 0.5)
|
||||||
|
httpclient (2.8.3)
|
||||||
|
jmespath (1.6.1)
|
||||||
|
json (2.6.1)
|
||||||
|
jwt (2.3.0)
|
||||||
|
memoist (0.16.2)
|
||||||
|
mini_magick (4.11.0)
|
||||||
|
mini_mime (1.1.2)
|
||||||
|
multi_json (1.15.0)
|
||||||
|
multipart-post (2.0.0)
|
||||||
|
nanaimo (0.3.0)
|
||||||
|
naturally (2.2.1)
|
||||||
|
optparse (0.1.1)
|
||||||
|
os (1.1.4)
|
||||||
|
plist (3.6.0)
|
||||||
|
public_suffix (4.0.6)
|
||||||
|
rake (13.0.6)
|
||||||
|
representable (3.1.1)
|
||||||
|
declarative (< 0.1.0)
|
||||||
|
trailblazer-option (>= 0.1.1, < 0.2.0)
|
||||||
|
uber (< 0.2.0)
|
||||||
|
retriable (3.1.2)
|
||||||
|
rexml (3.2.5)
|
||||||
|
rouge (2.0.7)
|
||||||
|
ruby2_keywords (0.0.5)
|
||||||
|
rubyzip (2.3.2)
|
||||||
|
screengrab (1.0.0)
|
||||||
|
fastlane (>= 2.0.0, < 3.0.0)
|
||||||
|
security (0.1.3)
|
||||||
|
signet (0.16.1)
|
||||||
|
addressable (~> 2.8)
|
||||||
|
faraday (>= 0.17.5, < 3.0)
|
||||||
|
jwt (>= 1.5, < 3.0)
|
||||||
|
multi_json (~> 1.10)
|
||||||
|
simctl (1.6.8)
|
||||||
|
CFPropertyList
|
||||||
|
naturally
|
||||||
|
terminal-notifier (2.0.0)
|
||||||
|
terminal-table (1.8.0)
|
||||||
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||||
|
trailblazer-option (0.1.2)
|
||||||
|
tty-cursor (0.7.1)
|
||||||
|
tty-screen (0.8.1)
|
||||||
|
tty-spinner (0.9.3)
|
||||||
|
tty-cursor (~> 0.7)
|
||||||
|
uber (0.1.0)
|
||||||
|
unf (0.1.4)
|
||||||
|
unf_ext
|
||||||
|
unf_ext (0.0.8)
|
||||||
|
unicode-display_width (1.8.0)
|
||||||
|
webrick (1.7.0)
|
||||||
|
word_wrap (1.0.0)
|
||||||
|
xcodeproj (1.21.0)
|
||||||
|
CFPropertyList (>= 2.3.3, < 4.0)
|
||||||
|
atomos (~> 0.1.3)
|
||||||
|
claide (>= 1.0.2, < 2.0)
|
||||||
|
colored2 (~> 3.1)
|
||||||
|
nanaimo (~> 0.3.0)
|
||||||
|
rexml (~> 3.2.4)
|
||||||
|
xcpretty (0.3.0)
|
||||||
|
rouge (~> 2.0.7)
|
||||||
|
xcpretty-travis-formatter (1.0.1)
|
||||||
|
xcpretty (~> 0.2, >= 0.0.7)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
x86_64-linux
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
fastlane
|
||||||
|
screengrab
|
||||||
|
|
||||||
|
BUNDLED WITH
|
||||||
|
2.2.5
|
40
README.md
|
@ -1,3 +1,43 @@
|
||||||
# Cheogram Android
|
# Cheogram Android
|
||||||
|
|
||||||
This is a fork of [Conversations](https://conversations.im) to implement features of use to the [Sopranica](https://soprani.ca) project.
|
This is a fork of [Conversations](https://conversations.im) to implement features of use to the [Sopranica](https://soprani.ca) project.
|
||||||
|
|
||||||
|
The Cheogram Android app allows you to join a worldwide communication network. It especially focuses on features useful to users who want to contact those on other networks as well, such as SMS-enabled phone numbers.
|
||||||
|
|
||||||
|
Based on the app Conversations, but with unique features:
|
||||||
|
|
||||||
|
* Messages with both media and text, including animated media
|
||||||
|
* Unobtrusive display of subject lines, where present
|
||||||
|
* Links to known contacts are shown with their name
|
||||||
|
* Integrates with gateways' add contact flows
|
||||||
|
* When using a gateway to the phone network, integrate with the native Android Phone app
|
||||||
|
* Address book integration
|
||||||
|
|
||||||
|
Where to get service:
|
||||||
|
|
||||||
|
Cheogram Android requires you have an account with a Jabber service. You can run your own service, or use one provided by someone else, for example: https://snikket.org/hosting/
|
||||||
|
|
||||||
|
Art in screenshots is from https://www.peppercarrot.com by David Revoy, CC-BY. Artwork has been modified to crop out sections for avatars and photos, and in some cases add transparency. Use of this artwork does not imply endorsement of this project by the artist.
|
||||||
|
|
||||||
|
## Getting Help
|
||||||
|
|
||||||
|
If you have any questions about this app, or wish to report a bug, please come by the chatroom at xmpp:discuss@conference.soprani.ca?join or [on the web](https://anonymous.cheogram.com/discuss@conference.soprani.ca).
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
If you have code or patches you wish to contribute, the maintainer's preferred mechanism is a git pull request. Push your changes to a git repository somewhere, for example:
|
||||||
|
|
||||||
|
git remote rename origin upstream
|
||||||
|
git remote add origin git@git.sr.ht:~yourname/cheogram-android
|
||||||
|
git push -u origin master
|
||||||
|
|
||||||
|
Then generate the pull request:
|
||||||
|
|
||||||
|
git fetch upstream master
|
||||||
|
git request-pull -p upstream/master origin
|
||||||
|
|
||||||
|
And copy-paste the result into a plain-text email to: dev@singpolyma.net
|
||||||
|
|
||||||
|
You may alternately use a patch-based approach as described on https://git-send-email.io
|
||||||
|
|
||||||
|
Contributions follow an inbound=outbound model -- you (or your employer) keep all copyright on your patches, but agree to license them according to this project's COPYING file.
|
||||||
|
|
|
@ -1,427 +1,25 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<svg width="128" height="128" viewBox="0 0 128 128" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
<g clip-path="url(#clip0)">
|
||||||
|
<rect width="128" height="128" fill="url(#paint0_linear)"/>
|
||||||
<svg
|
<path d="M-19.9999 67.9171C61.5424 78.7397 69.0585 19.8547 77.8688 -15.4586L-1.83026 -23.5237L-19.9999 67.9171Z" fill="url(#paint1_linear)"/>
|
||||||
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
|
<path d="M82.2373 56.2911C82.9773 33.3423 115.296 18.7894 138.494 35.1324L176.266 69.2758C142.064 112.363 69.2602 194.01 51.6603 175.903C29.6604 153.27 27.0391 109.448 49.9311 102.362C72.8231 95.2766 81.6097 75.7553 82.2373 56.2911Z" fill="#8F00FF" fill-opacity="0.8"/>
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
<ellipse cx="50.5422" cy="63.3697" rx="5.40571" ry="5.47375" fill="white"/>
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
<ellipse cx="65.986" cy="63.3697" rx="5.40571" ry="5.47375" fill="white"/>
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
<ellipse cx="81.4301" cy="63.3697" rx="5.40571" ry="5.47375" fill="white"/>
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M66.1035 25.9225C55.9806 26.0082 46.1247 29.5353 38.5158 35.9277C30.8923 42.3325 26.02 51.2163 25.1526 60.8896C24.2835 70.5818 27.529 80.071 34.0565 87.4338C34.9439 88.4347 35.8821 89.3857 36.8663 90.2851C35.7675 94.2504 33.7217 96.8257 31.8959 98.329C31.1495 98.9436 31.3126 100.392 32.2709 100.519C36.3346 101.058 42.2646 100.706 46.6509 96.8488C50.7471 98.8033 55.2012 100.106 59.8222 100.687C69.8441 101.946 80.1116 99.7459 88.6006 94.4548C94.0726 91.0441 98.617 87.0601 101.798 81.8868C102.659 80.4859 102.047 78.693 100.579 77.9545L94.8672 75.0811C93.376 74.3309 91.5755 74.9609 90.6107 76.3245C88.5253 79.272 85.6411 81.6003 82.1148 83.7982C76.072 87.5647 68.6337 89.1887 61.3293 88.2709C54.0268 87.3534 47.601 83.9941 43.2464 79.0822C38.9157 74.1974 36.9124 68.1144 37.4575 62.0356C38.0043 55.9378 41.1047 50.0188 46.4118 45.5601C51.7337 41.0891 58.8097 38.4959 66.2215 38.4331C73.6329 38.3704 80.6187 40.8423 85.8081 45.1703C87.7808 46.8156 89.453 49.0733 90.7789 51.307C91.6296 52.7402 93.4314 53.3566 94.9208 52.6068L100.619 49.7385C102.09 48.9979 102.698 47.205 101.884 45.7741C99.7422 42.0075 96.9533 38.2665 93.6563 35.5169C86.0808 29.1989 76.2268 25.8368 66.1035 25.9225Z" fill="white"/>
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
</g>
|
||||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
<defs>
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
<linearGradient id="paint0_linear" x1="64" y1="0" x2="64" y2="128" gradientUnits="userSpaceOnUse">
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
<stop stop-color="#6F00C7"/>
|
||||||
width="57mm"
|
<stop offset="1" stop-color="#8F00FF"/>
|
||||||
height="57mm"
|
</linearGradient>
|
||||||
viewBox="0 0 201.96849 201.96849"
|
<linearGradient id="paint1_linear" x1="1.10839" y1="-9.30531" x2="124.827" y2="44.6382" gradientUnits="userSpaceOnUse">
|
||||||
id="svg4211"
|
<stop stop-color="#8F00FF"/>
|
||||||
version="1.1"
|
<stop offset="1" stop-color="#8F00FF" stop-opacity="0"/>
|
||||||
inkscape:version="0.91 r13725"
|
<stop offset="1" stop-color="#8A01F6"/>
|
||||||
sodipodi:docname="conversations_baloon.svg">
|
</linearGradient>
|
||||||
<sodipodi:namedview
|
<clipPath id="clip0">
|
||||||
id="base"
|
<rect width="128" height="128" fill="white"/>
|
||||||
pagecolor="#ffffff"
|
</clipPath>
|
||||||
bordercolor="#666666"
|
</defs>
|
||||||
borderopacity="1.0"
|
|
||||||
showgrid="false"
|
|
||||||
fit-margin-top="0"
|
|
||||||
fit-margin-left="0"
|
|
||||||
fit-margin-right="0"
|
|
||||||
fit-margin-bottom="0"
|
|
||||||
showguides="false"
|
|
||||||
inkscape:zoom="2.2196812"
|
|
||||||
inkscape:cx="39.109276"
|
|
||||||
inkscape:cy="132.27753"
|
|
||||||
inkscape:window-width="1600"
|
|
||||||
inkscape:window-height="836"
|
|
||||||
inkscape:window-x="0"
|
|
||||||
inkscape:window-y="27"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="layer8" />
|
|
||||||
<defs
|
|
||||||
id="defs4213">
|
|
||||||
<linearGradient
|
|
||||||
osb:paint="solid"
|
|
||||||
id="linearGradient5393">
|
|
||||||
<stop
|
|
||||||
id="stop5395"
|
|
||||||
offset="0"
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;" />
|
|
||||||
</linearGradient>
|
|
||||||
<clipPath
|
|
||||||
id="clipPath4831"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<circle
|
|
||||||
style="display:inline;opacity:1;fill:#a00e00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle4833"
|
|
||||||
cx="883.16943"
|
|
||||||
cy="677.19611"
|
|
||||||
r="229.80969" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
id="clipPath4859"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<circle
|
|
||||||
style="display:inline;opacity:1;fill:#a00e00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle4861"
|
|
||||||
cx="883.16943"
|
|
||||||
cy="677.19611"
|
|
||||||
r="229.80969" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
id="clipPath5624"
|
|
||||||
clipPathUnits="userSpaceOnUse">
|
|
||||||
<g
|
|
||||||
style="display:inline"
|
|
||||||
id="g5626"
|
|
||||||
transform="matrix(0.3835576,0,0,0.3835576,-250.60108,-156.11014)">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="ccsssc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5628"
|
|
||||||
d="m 1120.8042,772.36056 -118.0025,103.66316 118.5792,46.01918 c 8.4859,3.29325 19.6524,7.94481 27.2622,0.71376 7.3868,-7.01907 5.6502,-14.13839 3.0935,-24.54095 z"
|
|
||||||
style="display:inline;fill:#4caf50;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
|
||||||
<circle
|
|
||||||
transform="matrix(1.0878566,0,0,1.0878566,-57.401992,-79.686482)"
|
|
||||||
clip-path="url(#clipPath4859)"
|
|
||||||
r="229.80969"
|
|
||||||
cy="677.19611"
|
|
||||||
cx="883.16943"
|
|
||||||
id="circle5630"
|
|
||||||
style="display:inline;opacity:1;fill:#4caf50;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath10653">
|
|
||||||
<g
|
|
||||||
style="display:inline"
|
|
||||||
id="g10655"
|
|
||||||
transform="matrix(0.3835576,0,0,0.3835576,-250.60108,-156.11015)"
|
|
||||||
inkscape:export-xdpi="100"
|
|
||||||
inkscape:export-ydpi="100">
|
|
||||||
<path
|
|
||||||
sodipodi:nodetypes="ccsssc"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path10657"
|
|
||||||
d="m 1120.8042,772.36056 -118.0025,103.66316 118.5792,46.01918 c 8.4859,3.29325 19.6524,7.94481 27.2622,0.71376 7.3868,-7.01907 5.6502,-14.13839 3.0935,-24.54095 z"
|
|
||||||
style="display:inline;fill:#4caf50;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
|
|
||||||
<circle
|
|
||||||
transform="matrix(1.0878566,0,0,1.0878566,-57.401992,-79.686482)"
|
|
||||||
clip-path="url(#clipPath4859)"
|
|
||||||
r="229.80969"
|
|
||||||
cy="677.19611"
|
|
||||||
cx="883.16943"
|
|
||||||
id="circle10659"
|
|
||||||
style="display:inline;opacity:1;fill:#4caf50;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</g>
|
|
||||||
</clipPath>
|
|
||||||
<radialGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
xlink:href="#linearGradient3913"
|
|
||||||
id="radialGradient3883"
|
|
||||||
gradientUnits="userSpaceOnUse"
|
|
||||||
gradientTransform="matrix(0.68662089,-0.30388739,0.24146012,0.54605188,-300.74233,-264.46964)"
|
|
||||||
cx="262.33273"
|
|
||||||
cy="945.23846"
|
|
||||||
fx="262.33273"
|
|
||||||
fy="945.23846"
|
|
||||||
r="185.49754" />
|
|
||||||
<linearGradient
|
|
||||||
inkscape:collect="always"
|
|
||||||
id="linearGradient3913">
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:1;"
|
|
||||||
offset="0"
|
|
||||||
id="stop3915" />
|
|
||||||
<stop
|
|
||||||
style="stop-color:#ffffff;stop-opacity:0;"
|
|
||||||
offset="1"
|
|
||||||
id="stop3917" />
|
|
||||||
</linearGradient>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath5315">
|
|
||||||
<g
|
|
||||||
inkscape:export-ydpi="100"
|
|
||||||
inkscape:export-xdpi="100"
|
|
||||||
transform="matrix(0.3835576,0,0,0.3835576,-246.60108,-156.11013)"
|
|
||||||
id="g5317"
|
|
||||||
style="display:inline;fill:#00a000;fill-opacity:1">
|
|
||||||
<path
|
|
||||||
style="display:inline;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
d="m 1120.8042,772.36056 -118.0025,103.66316 118.5792,46.01918 c 8.4859,3.29325 19.6524,7.94481 27.2622,0.71376 7.3868,-7.01907 5.6502,-14.13839 3.0935,-24.54095 z"
|
|
||||||
id="path5319"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccsssc" />
|
|
||||||
<circle
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
id="circle5321"
|
|
||||||
cx="883.16943"
|
|
||||||
cy="677.19611"
|
|
||||||
r="229.80969"
|
|
||||||
clip-path="url(#clipPath4859)"
|
|
||||||
transform="matrix(1.0878566,0,0,1.0878566,-57.401992,-79.686482)" />
|
|
||||||
</g>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6882">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6884"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6886">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6888"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6890">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6892"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6894">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6896"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6898">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6900"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6902">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6904"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6906">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6908"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath6910">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6912"
|
|
||||||
d="M 99.88867,-2.3837657e-4 A 95.889392,95.889392 0 0 0 4,95.888436 95.889392,95.889392 0 0 0 99.88867,191.77906 95.889392,95.889392 0 0 0 142.59375,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.7793,95.888466 95.889392,95.889392 0 0 0 99.88867,-2.0837657e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
<filter
|
|
||||||
inkscape:collect="always"
|
|
||||||
style="color-interpolation-filters:sRGB"
|
|
||||||
id="filter5640"
|
|
||||||
x="-0.012227737"
|
|
||||||
width="1.0244555"
|
|
||||||
y="-0.011780591"
|
|
||||||
height="1.0235612">
|
|
||||||
<feGaussianBlur
|
|
||||||
inkscape:collect="always"
|
|
||||||
stdDeviation="0.9782166"
|
|
||||||
id="feGaussianBlur5642" />
|
|
||||||
</filter>
|
|
||||||
<clipPath
|
|
||||||
clipPathUnits="userSpaceOnUse"
|
|
||||||
id="clipPath5745">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path5747"
|
|
||||||
d="M 99.908581,-2.3831968e-4 A 95.889392,95.889392 0 0 0 4.0199102,95.888436 95.889392,95.889392 0 0 0 99.908581,191.77906 95.889392,95.889392 0 0 0 142.61366,181.70093 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 L 183.8285,142.24002 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 195.79921,95.888466 95.889392,95.889392 0 0 0 99.908581,-2.0831968e-4 Z"
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
<metadata
|
|
||||||
id="metadata4216">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
<dc:title />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<g
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer9"
|
|
||||||
inkscape:label="shaddow"
|
|
||||||
transform="translate(-4,2.6816164)"
|
|
||||||
style="display:inline">
|
|
||||||
<path
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6914"
|
|
||||||
d="M 104.88867,0.06226191 A 95.889392,95.889392 0 0 0 8.9999996,95.950936 95.889392,95.889392 0 0 0 104.88867,191.84156 95.889392,95.889392 0 0 0 147.59375,181.76343 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 l -11.34766,-46.16797 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 200.7793,95.950966 95.889392,95.889392 0 0 0 104.88867,0.06229191 Z"
|
|
||||||
style="display:inline;opacity:0.4;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;filter:url(#filter5640)" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
style="display:inline"
|
|
||||||
inkscape:label="bubble"
|
|
||||||
id="layer4"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
transform="translate(-4,2.6816348)">
|
|
||||||
<path
|
|
||||||
style="display:inline;opacity:1;fill:#00a000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
|
|
||||||
d="M 104.88867,-1.9377566 A 95.889392,95.889392 0 0 0 8.9999996,93.950918 95.889392,95.889392 0 0 0 104.88867,189.84154 95.889392,95.889392 0 0 0 147.59375,179.76341 l 0.12695,0.0137 40.79297,15.83204 c 3.25479,1.26313 7.53628,3.04697 10.45508,0.27343 2.83326,-2.69222 2.16811,-5.42213 1.1875,-9.41211 L 188.80859,140.3025 a 95.889392,95.889392 0 0 1 -0.002,0.002 l 0,-0.008 0.002,0.006 A 95.889392,95.889392 0 0 0 200.7793,93.950948 95.889392,95.889392 0 0 0 104.88867,-1.9377266 Z"
|
|
||||||
id="circle6661"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
<text
|
|
||||||
xml:space="preserve"
|
|
||||||
style="font-style:normal;font-weight:normal;font-size:125px;line-height:1000%;font-family:Sans;letter-spacing:-10.89000034px;word-spacing:5px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
x="85.862968"
|
|
||||||
y="-55.271603"
|
|
||||||
id="text6634"
|
|
||||||
sodipodi:linespacing="1000%"><tspan
|
|
||||||
sodipodi:role="line"
|
|
||||||
id="tspan6636"
|
|
||||||
x="85.862968"
|
|
||||||
y="-55.271603" /></text>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer8"
|
|
||||||
inkscape:label="dotted line"
|
|
||||||
style="display:inline"
|
|
||||||
transform="translate(-4,2.6816164)">
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6910)"
|
|
||||||
d="m 145.16406,11.183594 -5.13232,9.649402 c -0.77924,1.465076 -0.65974,2.41396 0.66876,3.18097 9.66686,5.488467 18.12303,12.874168 24.86104,21.711122 1.05534,1.616079 2.08054,1.713076 3.67763,0.571565 L 178.04883,40 C 169.45271,27.990203 158.19857,18.128379 145.16406,11.183594 Z"
|
|
||||||
id="path7364"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="csccscc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6906)"
|
|
||||||
d="m 193.80469,75.615234 -9.62713,2.062751 c -2.66266,0.570512 -3.40763,1.172953 -2.90593,3.917433 0.85823,4.714633 1.30424,9.497137 1.33189,14.293254 -0.028,5.578758 -0.62194,11.137108 -1.77093,16.589918 -0.86591,3.23162 0.13682,3.77092 3.16149,4.58138 l 8.98639,2.30136 c 1.98177,-7.66828 3.00584,-15.55255 3.04883,-23.472658 -0.0187,-6.817681 -0.76446,-13.613926 -2.22461,-20.273438 z"
|
|
||||||
id="path7366"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="csccccccc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6902)"
|
|
||||||
d="m 14.264281,102.76512 -10.2076406,0.87943 c 1.2093798,14.83154 5.8540346,29.17808 13.5664056,41.90429 l 8.544301,-5.23239 c 2.394983,-1.46665 1.895406,-3.37834 0.986202,-5.04513 -5.118253,-9.40257 -8.359018,-19.71635 -9.536202,-30.36553 0,-2.09418 -1.881577,-2.26744 -3.353066,-2.14067 z"
|
|
||||||
id="path7372"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="sccsccs"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6898)"
|
|
||||||
d="m 51.504371,166.60235 -5.82273,8.50898 c 12.710503,8.71282 27.333669,14.23394 42.630859,16.0957 l 1.220329,-9.90843 c 0.355066,-2.88295 -1.085712,-3.52946 -3.332252,-3.90256 -10.402329,-1.73697 -20.373956,-5.45322 -29.373754,-10.94516 -1.647505,-1.06744 -3.639993,-2.30718 -5.322452,0.15147 z"
|
|
||||||
id="path7370"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="sccsccs"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6894)"
|
|
||||||
d="M 32.208984,27.683594 C 21.779177,38.079001 13.883707,50.736882 9.1347656,64.675781 L 19.33617,68.090365 c 1.658147,0.55501 2.832564,-0.120955 3.374272,-1.591979 3.777598,-10.021698 9.470788,-19.210103 16.759132,-27.052307 1.561136,-1.561136 1.567283,-2.960058 0.447507,-4.076606 z"
|
|
||||||
id="path7374"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccsccsc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="opacity:1;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6890)"
|
|
||||||
d="M 99.888672,-0.25 C 87.701045,-0.2239408 75.630114,2.1252837 64.322266,6.671875 l 3.530435,8.74898 c 1.063314,2.635062 1.616754,3.526314 4.973913,2.352259 8.692057,-3.031338 17.839027,-4.588849 27.062058,-4.599286 5.555828,0 6.486278,0.350026 6.780788,-3.4460223 l 0.74851,-9.64772758 C 104.9135,-0.12857239 102.40179,-0.23868346 99.888672,-0.25 Z"
|
|
||||||
id="path7376"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="ccsccscc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="display:inline;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6886)"
|
|
||||||
d="m 138.72416,168.48439 c -4.17634,2.25458 -8.55959,4.09055 -13.0504,5.63418 -1.00363,0.34498 -1.20742,1.18222 -0.8682,2.27372 l 3.44056,11.0706 c 4.92985,-1.53124 9.72799,-3.45808 14.34766,-5.76172 l 0.12695,0.0137 14.0293,5.44532 4.12174,-10.20577 c 0.7548,-1.86894 -0.0184,-2.7016 -1.59462,-3.31324 l -14.72114,-5.71251 c -1.86679,-0.7244 -3.68834,-0.60144 -5.83185,0.55572 z"
|
|
||||||
id="path5005"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cssccccsssc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
<path
|
|
||||||
style="display:inline;fill:#80d080;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
|
||||||
clip-path="url(#clipPath6882)"
|
|
||||||
d="m 186.53125,152.80469 -10.6386,2.70888 c -0.78879,0.20085 -1.67397,1.02386 -1.35494,2.33801 l 9.75918,40.15428 c 8.56713,5.97538 15.30408,3.06731 11.01563,-9.47266 z"
|
|
||||||
id="path5071"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
sodipodi:nodetypes="cssccc"
|
|
||||||
transform="translate(4.9999996,-1.9374999)" />
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
style="display:inline"
|
|
||||||
inkscape:label="dots"
|
|
||||||
id="layer2"
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
transform="translate(-4,2.6816348)">
|
|
||||||
<g
|
|
||||||
inkscape:export-ydpi="100"
|
|
||||||
inkscape:export-xdpi="100"
|
|
||||||
style="fill:#f5f5f5;fill-opacity:1"
|
|
||||||
transform="matrix(0.3835576,0,0,0.3835576,-248.17635,-138.86977)"
|
|
||||||
id="g5126">
|
|
||||||
<circle
|
|
||||||
r="27.299093"
|
|
||||||
style="opacity:1;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
|
||||||
id="path3047-4"
|
|
||||||
cx="799.11273"
|
|
||||||
cy="609.86285" />
|
|
||||||
<circle
|
|
||||||
r="27.299093"
|
|
||||||
style="opacity:1;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
|
||||||
id="path3047-1-2"
|
|
||||||
cx="918.91962"
|
|
||||||
cy="609.86285" />
|
|
||||||
<circle
|
|
||||||
r="27.299093"
|
|
||||||
style="opacity:1;fill:#f5f5f5;fill-opacity:1;fill-rule:evenodd;stroke:none"
|
|
||||||
id="path3047-1-8-6"
|
|
||||||
cx="1039.0352"
|
|
||||||
cy="609.86285" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g
|
|
||||||
inkscape:groupmode="layer"
|
|
||||||
id="layer1"
|
|
||||||
inkscape:label="light"
|
|
||||||
style="display:inline"
|
|
||||||
transform="translate(-4,2.6816164)">
|
|
||||||
<path
|
|
||||||
style="display:inline;opacity:0.19211821;fill:url(#radialGradient3883);fill-opacity:1;stroke:none"
|
|
||||||
d="m 192.44891,47.715674 c -61.69765,0 -111.704333,49.103472 -111.704333,109.668976 0,12.77573 2.228815,25.0414 6.321575,36.4393 5.069139,0.70557 10.251828,1.06876 15.514978,1.06876 18.80489,0 30.91434,7.28449 47.46533,1.26909 l 54.00234,6.06606 c 5.24363,2.11897 11.63381,1.37954 10.27166,-4.11162 l -14.23663,-57.56735 c 9.15073,-16.06873 12.27539,-34.36633 12.27539,-53.240271 0,-13.72556 -2.63167,-26.842322 -7.42478,-38.909717 -4.09925,-0.447474 -8.2658,-0.683228 -12.48553,-0.683228 z"
|
|
||||||
id="path3878"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
clip-path="url(#clipPath5745)"
|
|
||||||
transform="translate(4.9800894,-1.9374999)"
|
|
||||||
sodipodi:nodetypes="sscsccccscs" />
|
|
||||||
</g>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 2.6 KiB |
28
build.gradle
|
@ -40,7 +40,7 @@ configurations {
|
||||||
playstoreImplementation
|
playstoreImplementation
|
||||||
freeImplementation
|
freeImplementation
|
||||||
conversationsFreeImplementation
|
conversationsFreeImplementation
|
||||||
conversationsPlaystorImplementation
|
cheogramPlaystoreImplementation
|
||||||
conversationsPlaystoreImplementation
|
conversationsPlaystoreImplementation
|
||||||
quicksyPlaystoreImplementation
|
quicksyPlaystoreImplementation
|
||||||
quicksyPlaystoreImplementation
|
quicksyPlaystoreImplementation
|
||||||
|
@ -49,6 +49,13 @@ configurations {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
androidTestImplementation 'tools.fastlane:screengrab:2.1.1'
|
||||||
|
androidTestImplementation 'junit:junit:4.13.2'
|
||||||
|
androidTestImplementation 'androidx.test:runner:1.3.0'
|
||||||
|
androidTestImplementation 'androidx.test:rules:1.3.0'
|
||||||
|
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
|
||||||
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
|
||||||
|
|
||||||
implementation 'androidx.viewpager:viewpager:1.0.0'
|
implementation 'androidx.viewpager:viewpager:1.0.0'
|
||||||
|
|
||||||
playstoreImplementation('com.google.firebase:firebase-messaging:23.0.0') {
|
playstoreImplementation('com.google.firebase:firebase-messaging:23.0.0') {
|
||||||
|
@ -56,6 +63,7 @@ dependencies {
|
||||||
exclude group: 'com.google.firebase', module: 'firebase-analytics'
|
exclude group: 'com.google.firebase', module: 'firebase-analytics'
|
||||||
exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
|
exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
|
||||||
}
|
}
|
||||||
|
cheogramPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
|
||||||
conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
|
conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
|
||||||
quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1'
|
quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1'
|
||||||
implementation 'org.sufficientlysecure:openpgp-api:10.0'
|
implementation 'org.sufficientlysecure:openpgp-api:10.0'
|
||||||
|
@ -66,8 +74,8 @@ dependencies {
|
||||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
|
||||||
implementation 'com.google.android.material:material:1.4.0'
|
implementation 'com.google.android.material:material:1.4.0'
|
||||||
|
|
||||||
implementation "androidx.emoji2:emoji2:1.1.0-rc01"
|
implementation "androidx.emoji2:emoji2:1.1.0"
|
||||||
freeImplementation "androidx.emoji2:emoji2-bundled:1.1.0-rc01"
|
freeImplementation "androidx.emoji2:emoji2-bundled:1.1.0"
|
||||||
|
|
||||||
implementation 'org.bouncycastle:bcmail-jdk15on:1.64'
|
implementation 'org.bouncycastle:bcmail-jdk15on:1.64'
|
||||||
//zxing stopped supporting Java 7 so we have to stick with 3.3.3
|
//zxing stopped supporting Java 7 so we have to stick with 3.3.3
|
||||||
|
@ -80,8 +88,8 @@ dependencies {
|
||||||
implementation "com.wefika:flowlayout:0.4.1"
|
implementation "com.wefika:flowlayout:0.4.1"
|
||||||
implementation 'com.otaliastudios:transcoder:0.10.4'
|
implementation 'com.otaliastudios:transcoder:0.10.4'
|
||||||
|
|
||||||
implementation 'org.jxmpp:jxmpp-jid:1.0.2'
|
implementation 'org.jxmpp:jxmpp-jid:1.0.3'
|
||||||
implementation 'org.osmdroid:osmdroid-android:6.1.10'
|
implementation 'org.osmdroid:osmdroid-android:6.1.11'
|
||||||
implementation 'org.hsluv:hsluv:0.2'
|
implementation 'org.hsluv:hsluv:0.2'
|
||||||
implementation 'org.conscrypt:conscrypt-android:2.5.2'
|
implementation 'org.conscrypt:conscrypt-android:2.5.2'
|
||||||
implementation 'me.drakeet.support:toastcompat:1.1.0'
|
implementation 'me.drakeet.support:toastcompat:1.1.0'
|
||||||
|
@ -109,16 +117,16 @@ android {
|
||||||
compileSdkVersion 31
|
compileSdkVersion 31
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 24
|
minSdkVersion 21
|
||||||
targetSdkVersion 29
|
targetSdkVersion 30
|
||||||
versionCode 42024 + grgit.tag.list().size()
|
versionCode 42024 + grgit.tag.list().findAll { it.dateTime != null }.size()
|
||||||
versionName grgit.describe(tags: true, always: true)
|
versionName grgit.describe(always: true)
|
||||||
archivesBaseName += "-$versionName"
|
|
||||||
applicationId "eu.siacs.conversations"
|
applicationId "eu.siacs.conversations"
|
||||||
resValue "string", "applicationId", applicationId
|
resValue "string", "applicationId", applicationId
|
||||||
def appName = "Conversations"
|
def appName = "Conversations"
|
||||||
resValue "string", "app_name", appName
|
resValue "string", "app_name", appName
|
||||||
buildConfigField "String", "APP_NAME", "\"$appName\"";
|
buildConfigField "String", "APP_NAME", "\"$appName\"";
|
||||||
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
459
cheogram.doap
Normal file
|
@ -0,0 +1,459 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<?xml-stylesheet href="../style.xsl" type="text/xsl"?>
|
||||||
|
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||||
|
<Project xmlns="http://usefulinc.com/ns/doap#"
|
||||||
|
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
||||||
|
xmlns:xmpp="https://linkmauve.fr/ns/xmpp-doap#"
|
||||||
|
xmlns:schema="https://schema.org/">
|
||||||
|
<name>Cheogram Android</name>
|
||||||
|
|
||||||
|
<created>2021-06-12</created>
|
||||||
|
|
||||||
|
<shortdesc xml:lang="en">Android Jabber Client</shortdesc>
|
||||||
|
|
||||||
|
<description xml:lang="en">Cheogram is a freedomware client for the Jabber network (using the XMPP protocol) with a focus on features for gateway users.</description>
|
||||||
|
|
||||||
|
<homepage rdf:resource="https://cheogram.com/"/>
|
||||||
|
<bug-database rdf:resource="mailto:dev@singpolyma.net"/>
|
||||||
|
<!-- See https://github.com/ewilderj/doap/issues/53 -->
|
||||||
|
<developer-forum rdf:resource="xmpp:discuss@conference.soprani.ca?join"/>
|
||||||
|
<support-forum rdf:resource="xmpp:discuss@conference.soprani.ca?join"/>
|
||||||
|
|
||||||
|
<license rdf:resource="https://git.singpolyma.net/cheogram-android/tree/master/item/LICENSE"/>
|
||||||
|
|
||||||
|
<!-- See https://github.com/ewilderj/doap/issues/49 -->
|
||||||
|
<language>en</language>
|
||||||
|
|
||||||
|
<schema:logo rdf:resource="https://git.singpolyma.net/cheogram-android/blob/master/art/ic_launcher.svg"/>
|
||||||
|
<schema:screenshot rdf:resource='https://git.singpolyma.net/cheogram-android/blob/master/fastlane/metadata/android/en_US/images/phoneScreenshots/conversation.png'/>
|
||||||
|
<schema:screenshot rdf:resource='https://git.singpolyma.net/cheogram-android/blob/master/fastlane/metadata/android/en_US/images/phoneScreenshots/dialler.png'/>
|
||||||
|
<schema:screenshot rdf:resource='https://git.singpolyma.net/cheogram-android/blob/master/fastlane/metadata/android/en_US/images/phoneScreenshots/startConversation.png'/>
|
||||||
|
<schema:screenshot rdf:resource='https://git.singpolyma.net/cheogram-android/blob/master/fastlane/metadata/android/en_US/images/phoneScreenshots/startConversationOptions.png'/>
|
||||||
|
|
||||||
|
<programming-language>Java</programming-language>
|
||||||
|
|
||||||
|
<os>Android</os>
|
||||||
|
|
||||||
|
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-xmpp"/>
|
||||||
|
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-jabber"/>
|
||||||
|
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-client"/>
|
||||||
|
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-sms"/>
|
||||||
|
|
||||||
|
<maintainer>
|
||||||
|
<Project>
|
||||||
|
<name>Soprani.ca</name>
|
||||||
|
<homepage rdf:resource="https://soprani.ca/"/>
|
||||||
|
</Project>
|
||||||
|
</maintainer>
|
||||||
|
|
||||||
|
<repository>
|
||||||
|
<GitRepository>
|
||||||
|
<browse rdf:resource="https://git.singpolyma.net/cheogram-android"/>
|
||||||
|
<location rdf:resource="https://git.singpolyma.net/cheogram-android"/>
|
||||||
|
</GitRepository>
|
||||||
|
</repository>
|
||||||
|
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc6120.html"/>
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc6121.html"/>
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc6122.html"/>
|
||||||
|
<implements rdf:resource="https://xmpp.org/rfcs/rfc7590.html"/>
|
||||||
|
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0027.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.4</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>2.5rc3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0045.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.32.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0049.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html"/>
|
||||||
|
<xmpp:status>partial</xmpp:status>
|
||||||
|
<xmpp:version>1.2</xmpp:version>
|
||||||
|
<xmpp:note xml:lang='en'>Avatars only</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0084.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>2.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0092.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.5.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html"/>
|
||||||
|
<xmpp:status>partial</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
<xmpp:note xml:lang='en'>Read only. Publication via XEP-0398</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0163.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2.1</xmpp:version>
|
||||||
|
<xmpp:note>Avatar, Nick, OMEMO</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0166.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1.2</xmpp:version>
|
||||||
|
<xmpp:note>File transfer + A/V calls</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0167.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0172.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
<xmpp:note>read only</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0176.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0184.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.4.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.6</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>2.0.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>2.0.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0215.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.7</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0223.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0234.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.19.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0237.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0245.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0249.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0260.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0261.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.13.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0293.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0294.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0308.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.2.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0313.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.6.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0319.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.2</xmpp:version>
|
||||||
|
<xmpp:note>opt-in</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0320.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0333.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.3</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0338.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0339.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.3.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0353.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.3.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0357.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.4.0</xmpp:version>
|
||||||
|
<xmpp:note>Only available in the version distributed over Google Play</xmpp:note>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0377.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.2</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0384.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.3.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0391.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.1.2</xmpp:version>
|
||||||
|
<xmpp:since>2.5.8</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0392.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.6.0</xmpp:version>
|
||||||
|
<xmpp:since>2.3.1</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0393.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.1.4</xmpp:version>
|
||||||
|
<xmpp:since>1.22.0</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0396.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.1</xmpp:version>
|
||||||
|
<xmpp:since>2.5.8</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0398.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.2.1</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0410.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>1.0.1</xmpp:version>
|
||||||
|
<xmpp:since>2.5.4</xmpp:since>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0411.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.2.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
<implements>
|
||||||
|
<xmpp:SupportedXep>
|
||||||
|
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0454.html"/>
|
||||||
|
<xmpp:status>complete</xmpp:status>
|
||||||
|
<xmpp:version>0.1.0</xmpp:version>
|
||||||
|
</xmpp:SupportedXep>
|
||||||
|
</implements>
|
||||||
|
</Project>
|
||||||
|
</rdf:RDF>
|
|
@ -1,472 +0,0 @@
|
||||||
<?xml version="1.0"?>
|
|
||||||
<?xml-stylesheet href="../style.xsl" type="text/xsl"?>
|
|
||||||
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
|
||||||
<Project xmlns="http://usefulinc.com/ns/doap#"
|
|
||||||
xmlns:foaf="http://xmlns.com/foaf/0.1/"
|
|
||||||
xmlns:xmpp="https://linkmauve.fr/ns/xmpp-doap#"
|
|
||||||
xmlns:schema="https://schema.org/">
|
|
||||||
<name>Conversations</name>
|
|
||||||
|
|
||||||
<created>2014-01-14</created>
|
|
||||||
|
|
||||||
<shortdesc xml:lang="en">Android XMPP Client</shortdesc>
|
|
||||||
|
|
||||||
<description xml:lang="en">Conversations is an open source XMPP/Jabber client for the Android platform</description>
|
|
||||||
|
|
||||||
<homepage rdf:resource="https://conversations.im/"/>
|
|
||||||
<download-page rdf:resource="https://play.google.com/store/apps/details?id=eu.siacs.conversations"/>
|
|
||||||
<bug-database rdf:resource="https://github.com/iNPUTmice/Conversations/issues"/>
|
|
||||||
<!-- See https://github.com/ewilderj/doap/issues/53 -->
|
|
||||||
<developer-forum rdf:resource="xmpp:conversations@siacs.conference.eu?join"/>
|
|
||||||
<support-forum rdf:resource="xmpp:conversations@siacs.conference.eu?join"/>
|
|
||||||
|
|
||||||
<license rdf:resource="https://github.com/iNPUTmice/Conversations/blob/master/LICENSE"/>
|
|
||||||
|
|
||||||
<!-- See https://github.com/ewilderj/doap/issues/49 -->
|
|
||||||
<language>en</language>
|
|
||||||
|
|
||||||
<schema:logo rdf:resource="https://raw.githubusercontent.com/iNPUTmice/Conversations/master/art/ic_launcher.svg"/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/08.png'/>
|
|
||||||
<schema:screenshot rdf:resource='https://raw.githubusercontent.com/iNPUTmice/Conversations/master/fastlane/metadata/android/en-US/images/phoneScreenshots/09.png'/>
|
|
||||||
|
|
||||||
<programming-language>Java</programming-language>
|
|
||||||
|
|
||||||
<os>Android</os>
|
|
||||||
|
|
||||||
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-xmpp"/>
|
|
||||||
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-jabber"/>
|
|
||||||
<category rdf:resource="https://linkmauve.fr/ns/xmpp-doap#category-client"/>
|
|
||||||
|
|
||||||
<maintainer>
|
|
||||||
<foaf:Person>
|
|
||||||
<foaf:name>Daniel Gultsch</foaf:name>
|
|
||||||
<foaf:homepage rdf:resource="https://gultsch.de/"/>
|
|
||||||
</foaf:Person>
|
|
||||||
</maintainer>
|
|
||||||
|
|
||||||
<repository>
|
|
||||||
<GitRepository>
|
|
||||||
<browse rdf:resource="https://github.com/iNPUTmice/Conversations"/>
|
|
||||||
<location rdf:resource="https://github.com/iNPUTmice/Conversations.git"/>
|
|
||||||
</GitRepository>
|
|
||||||
</repository>
|
|
||||||
|
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc6120.html"/>
|
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc6121.html"/>
|
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc6122.html"/>
|
|
||||||
<implements rdf:resource="https://xmpp.org/rfcs/rfc7590.html"/>
|
|
||||||
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0027.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.4</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0030.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>2.5rc3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0045.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.32.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0048.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0049.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0054.html"/>
|
|
||||||
<xmpp:status>partial</xmpp:status>
|
|
||||||
<xmpp:version>1.2</xmpp:version>
|
|
||||||
<xmpp:note xml:lang='en'>Avatars only</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0084.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0085.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>2.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0092.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0115.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.5.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0153.html"/>
|
|
||||||
<xmpp:status>partial</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
<xmpp:note xml:lang='en'>Read only. Publication via XEP-0398</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0163.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2.1</xmpp:version>
|
|
||||||
<xmpp:note>Avatar, Nick, OMEMO</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0166.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1.2</xmpp:version>
|
|
||||||
<xmpp:note>File transfer + A/V calls</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0167.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0172.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
<xmpp:note>read only</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0176.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0184.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.4.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0191.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0198.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.6</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>2.0.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0199.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>2.0.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0215.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.7</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0223.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0234.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.19.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0237.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0245.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0249.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0260.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0261.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0280.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.13.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0293.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0294.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0308.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.2.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0313.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.6.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0319.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.2</xmpp:version>
|
|
||||||
<xmpp:note>opt-in</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0320.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0333.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.3</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0338.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0339.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0352.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.3.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0353.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.3.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0357.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.4.0</xmpp:version>
|
|
||||||
<xmpp:note>Only available in the version distributed over Google Play</xmpp:note>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0363.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0368.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0377.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.2</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0384.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.3.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0391.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.1.2</xmpp:version>
|
|
||||||
<xmpp:since>2.5.8</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0392.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.6.0</xmpp:version>
|
|
||||||
<xmpp:since>2.3.1</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0393.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.1.4</xmpp:version>
|
|
||||||
<xmpp:since>1.22.0</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0396.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.1</xmpp:version>
|
|
||||||
<xmpp:since>2.5.8</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0398.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.2.1</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0410.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>1.0.1</xmpp:version>
|
|
||||||
<xmpp:since>2.5.4</xmpp:since>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0411.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.2.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
<implements>
|
|
||||||
<xmpp:SupportedXep>
|
|
||||||
<xmpp:xep rdf:resource="https://xmpp.org/extensions/xep-0454.html"/>
|
|
||||||
<xmpp:status>complete</xmpp:status>
|
|
||||||
<xmpp:version>0.1.0</xmpp:version>
|
|
||||||
</xmpp:SupportedXep>
|
|
||||||
</implements>
|
|
||||||
|
|
||||||
<release>
|
|
||||||
<Version>
|
|
||||||
<revision>2.9.13</revision>
|
|
||||||
<created>2021-05-03</created>
|
|
||||||
<file-release rdf:resource="https://github.com/iNPUTmice/Conversations/archive/2.9.13.tar.gz"/>
|
|
||||||
</Version>
|
|
||||||
</release>
|
|
||||||
</Project>
|
|
||||||
</rdf:RDF>
|
|
2
fastlane/Appfile
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
|
||||||
|
package_name("com.cheogram.android") # e.g. com.krausefx.app
|
38
fastlane/Fastfile
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
# This file contains the fastlane.tools configuration
|
||||||
|
# You can find the documentation at https://docs.fastlane.tools
|
||||||
|
#
|
||||||
|
# For a list of all available actions, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/actions
|
||||||
|
#
|
||||||
|
# For a list of all available plugins, check out
|
||||||
|
#
|
||||||
|
# https://docs.fastlane.tools/plugins/available-plugins
|
||||||
|
#
|
||||||
|
|
||||||
|
# Uncomment the line if you want fastlane to automatically update itself
|
||||||
|
# update_fastlane
|
||||||
|
|
||||||
|
default_platform(:android)
|
||||||
|
|
||||||
|
platform :android do
|
||||||
|
desc "Build debug and test APK for screenshots"
|
||||||
|
lane :build_for_screengrab do
|
||||||
|
build_android_app(
|
||||||
|
task: 'assemble',
|
||||||
|
flavor: 'CheogramFree',
|
||||||
|
build_type: 'Debug'
|
||||||
|
)
|
||||||
|
build_android_app(
|
||||||
|
task: 'assemble',
|
||||||
|
flavor: 'CheogramFree',
|
||||||
|
build_type: 'DebugAndroidTest'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Build and take screenshots"
|
||||||
|
lane :build_and_screengrab do
|
||||||
|
build_for_screengrab
|
||||||
|
capture_android_screenshots
|
||||||
|
end
|
||||||
|
end
|
5
fastlane/Screengrabfile
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
locales ['en-US']
|
||||||
|
clear_previous_screenshots true
|
||||||
|
tests_apk_path 'build/outputs/apk/androidTest/cheogramFree/debug/Conversations-cheogram-free-debug-androidTest.apk'
|
||||||
|
app_apk_path 'build/outputs/apk/cheogramFree/debug/Conversations-cheogram-free-debug.apk'
|
||||||
|
test_instrumentation_runner 'androidx.test.runner.AndroidJUnitRunner'
|
|
@ -1,4 +0,0 @@
|
||||||
* Introduce expert setting to perform channel discovery on local server instead of search.jabber.network
|
|
||||||
* Enable delivery check marks by default and remove setting
|
|
||||||
* Enable ‘Send button indicates status’ by default and remove setting
|
|
||||||
* Move Backup and Foreground Service settings to main screen
|
|
|
@ -1,3 +0,0 @@
|
||||||
* fixes for Jingle IBB file transfer
|
|
||||||
* fixes for repeated corrections filling up the database
|
|
||||||
* switched to Last Message Correction v1.1
|
|
|
@ -1,4 +0,0 @@
|
||||||
* let users set their own nick name
|
|
||||||
* resume download of OMEMO encrypted files
|
|
||||||
* Channels now use '#' as symbol in avatar
|
|
||||||
* Quicksy uses 'always' as OMEMO encryption default (hides lock icon)
|
|
|
@ -1 +0,0 @@
|
||||||
* Support for ?register and ?register;preauth XMPP uri parameters
|
|
|
@ -1 +0,0 @@
|
||||||
* Support automatic theme switching on Android 10
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Provide PDF preview on Android 5+
|
|
||||||
* Use 12 byte IVs for OMEMO
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Fix avatar selection on some Android 10 devices
|
|
||||||
* Fix file transfer for larger files
|
|
|
@ -1 +0,0 @@
|
||||||
* Audio/Video calls (Requires server support in form of STUN and TURN servers discoverable via XEP-0215)
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Audible feedback (dialing, call started, call ended) for voice calls.
|
|
||||||
* Fixed issue with retrying failed video call
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Add button to switch camea during video call
|
|
||||||
* Fixed voice calls on tablets
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Move call icon to the left in order to keep other toolbar icons in a consistent place
|
|
||||||
* Show call duration during audio calls
|
|
||||||
* Tie breaking for A/V calls (the same two people calling each other at the same time)
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Rework Login with certificate UI
|
|
||||||
* Add ability to pin chats on top (add to favorites)
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Reduce echo during calls on some devices
|
|
||||||
* Fix login when passwords contains special characters
|
|
||||||
* Play dial and busy tones on speaker during video calls
|
|
|
@ -1 +0,0 @@
|
||||||
* Offer to record voice message when callee is busy
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Show help button if A/V call fails
|
|
||||||
* Fixed some annoying crashes
|
|
||||||
* Fixed Jingle connections (file transfer + calls) with bare JIDs
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Fixed notifications not showing up under certain conditions
|
|
||||||
* Fixed compatibility issues and crashes related to A/V calls
|
|
|
@ -1,3 +0,0 @@
|
||||||
* add 'Return to chat' to audio call screen
|
|
||||||
* Improve keyboard shortcuts
|
|
||||||
* bug fixes
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Handle GPX files
|
|
||||||
* Improve performance for backup restore
|
|
||||||
* bug fixes
|
|
|
@ -1,4 +0,0 @@
|
||||||
* Search individual conversations
|
|
||||||
* Notify user if message delivery fails
|
|
||||||
* Remember display names (nicks) from Quicksy users across restarts
|
|
||||||
* Add button to start Orbot (Tor) from notification if necessary
|
|
|
@ -1,3 +0,0 @@
|
||||||
* fixed search on Android <= 5
|
|
||||||
* optimize memory consumption
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Offer Easy Invite generation on supporting servers
|
|
||||||
* Display GIFs send from Movim
|
|
||||||
* store avatars in cache
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Fixed connectivity issues when different accounts used different SCRAM mechanisms
|
|
||||||
* Add support for SCRAM-SHA-512
|
|
||||||
* Allow P2P (Jingle) file transfer with self contact
|
|
|
@ -1 +0,0 @@
|
||||||
* minor stability improvements for A/V calls
|
|
|
@ -1 +0,0 @@
|
||||||
* Quicksy: Automatically receive verification SMS
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Show call button for offline contacts if they previously announced support
|
|
||||||
* Back button no longer ends call when call is connected
|
|
||||||
* bug fixes
|
|
|
@ -1,4 +0,0 @@
|
||||||
* Ability to select incoming call ringtone
|
|
||||||
* Fix OpenPGP key id discovery for OpenKeychain 5.6+
|
|
||||||
* Properly verify punycode TLS certificates
|
|
||||||
* Improve stability of RTP session establishment (calling)
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Verify A/V calls with preexisting OMEMO sessions
|
|
||||||
* Improve compatibility with non libwebrtc WebRTC implementations
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Various bug fixes around Tor support
|
|
||||||
* Improve call compatibility with Dino
|
|
|
@ -1 +0,0 @@
|
||||||
* fix HTTP up/download for users that don’t trust system CAs
|
|
|
@ -1 +0,0 @@
|
||||||
* Fixed 'No Connectivity' issues on Android 7.1
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Always verify domain name. No user overwrite
|
|
||||||
* Support roster pre authentication
|
|
|
@ -1 +0,0 @@
|
||||||
* minor A/V improvements
|
|
|
@ -1,3 +0,0 @@
|
||||||
* Show black bars when remote video does not match aspect ratio of screen
|
|
||||||
* Improve search performance
|
|
||||||
* Add setting to prevent screenshots
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Fix issue with some videos not being compressed
|
|
||||||
* Fix rare crash when opening notification
|
|
|
@ -1,2 +0,0 @@
|
||||||
* Fix crash when rendering some quotes
|
|
||||||
* Fix crash in welcome screen
|
|
|
@ -1,39 +1,18 @@
|
||||||
Easy to use, reliable, battery friendly. With built-in support for images, group chats and e2e encryption.
|
The Cheogram Android app allows you to join a worldwide communication network. It especially focuses on features useful to users who want to contact those on other networks as well, such as SMS-enabled phone numbers.
|
||||||
|
|
||||||
Design principles:
|
Based on the app Conversations, but with unique features:
|
||||||
|
|
||||||
* Be as beautiful and easy to use as possible without sacrificing security or privacy
|
* Messages with both media and text, including animated media
|
||||||
* Rely on existing, well established protocols
|
* Unobtrusive display of subject lines, where present
|
||||||
* Do not require a Google Account or specifically Google Cloud Messaging (GCM)
|
* Links to known contacts are shown with their name
|
||||||
* Require as few permissions as possible
|
* Show timestamps for calls
|
||||||
|
* Missed call notifications
|
||||||
Features:
|
* Integrates with gateways' add contact flows
|
||||||
|
* When using a gateway to the phone network, integrate with the native Android Phone app
|
||||||
* End-to-end encryption with either <a href="http://conversations.im/omemo/">OMEMO</a> or <a href="http://openpgp.org/about/">OpenPGP</a>
|
|
||||||
* Sending and receiving images
|
|
||||||
* Encrypted audio and video calls (DTLS-SRTP)
|
|
||||||
* Intuitive UI that follows Android Design guidelines
|
|
||||||
* Pictures / Avatars for your Contacts
|
|
||||||
* Syncs with desktop client
|
|
||||||
* Conferences (with support for bookmarks)
|
|
||||||
* Address book integration
|
* Address book integration
|
||||||
* Multiple accounts / unified inbox
|
|
||||||
* Very low impact on battery life
|
|
||||||
|
|
||||||
Conversations makes it very easy to create an account on the conversations.im server. Using that server comes with an annual fee of 8 Euro after a 6 month trial period. However Conversations will work with any other XMPP server as well. A lot of XMPP servers are run by volunteers and are free of charge.
|
Where to get service:
|
||||||
|
|
||||||
XMPP Features:
|
Cheogram Android requires you have an account with a Jabber service. You can run your own service, or use one provided by someone else, for example: https://snikket.org/hosting/
|
||||||
|
|
||||||
Conversations works with every XMPP server out there. However XMPP is an extensible protocol. These extensions are standardized as well in so called XEP’s. Conversations supports a couple of those to make the overall user experience better. There is a chance that your current XMPP server does not support these extensions. Therefore to get the most out of Conversations you should consider either switching to an XMPP server that does or - even better - run your own XMPP server for you and your friends.
|
Art in screenshots is from https://www.peppercarrot.com by David Revoy, CC-BY. Artwork has been modified to crop out sections for avatars and photos, and in some cases add transparency. Use of this artwork does not imply endorsement of this project by the artist.
|
||||||
|
|
||||||
These XEPs are - as of now:
|
|
||||||
|
|
||||||
* XEP-0065: SOCKS5 Bytestreams (or mod_proxy65). Will be used to transfer files if both parties are behind a firewall (NAT).
|
|
||||||
* XEP-0163: Personal Eventing Protocol for avatars
|
|
||||||
* XEP-0191: Blocking command lets you blacklist spammers or block contacts without removing them from your roster.
|
|
||||||
* XEP-0198: Stream Management allows XMPP to survive small network outages and changes of the underlying TCP connection.
|
|
||||||
* XEP-0280: Message Carbons which automatically syncs the messages you send to your desktop client and thus allows you to switch seamlessly from your mobile client to your desktop client and back within one conversation.
|
|
||||||
* XEP-0237: Roster Versioning mainly to save bandwidth on poor mobile connections
|
|
||||||
* XEP-0313: Message Archive Management synchronize message history with the server. Catch up with messages that were sent while Conversations was offline.
|
|
||||||
* XEP-0352: Client State Indication lets the server know whether or not Conversations is in the background. Allows the server to save bandwidth by withholding unimportant packages.
|
|
||||||
* XEP-0363: HTTP File Upload allows you to share files in conferences and with offline contacts. Requires an additional component on your server.
|
|
||||||
|
|
Before Width: | Height: | Size: 525 KiB |
Before Width: | Height: | Size: 449 KiB |
Before Width: | Height: | Size: 612 KiB |
Before Width: | Height: | Size: 475 KiB |
Before Width: | Height: | Size: 339 KiB |
Before Width: | Height: | Size: 364 KiB |
Before Width: | Height: | Size: 284 KiB |
Before Width: | Height: | Size: 168 KiB |
Before Width: | Height: | Size: 418 KiB |
After Width: | Height: | Size: 654 KiB |
After Width: | Height: | Size: 246 KiB |
After Width: | Height: | Size: 185 KiB |
After Width: | Height: | Size: 252 KiB |
Before Width: | Height: | Size: 433 KiB |
Before Width: | Height: | Size: 424 KiB |
Before Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 462 KiB |
|
@ -1 +1 @@
|
||||||
An encrypted, user friendly XMPP instant messaging client optimized for mobile
|
Chat on the Jabber network (XMPP protocol); focus on features for gateway users
|
||||||
|
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,6 +1,6 @@
|
||||||
#Sat Nov 14 09:59:55 CET 2020
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
|
distributionSha256Sum=a8da5b02437a60819cad23e10fc7e9cf32bcb57029d9cb277e26eeff76ce014b
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
|
||||||
|
|
302
gradlew
vendored
|
@ -1,79 +1,129 @@
|
||||||
#!/usr/bin/env bash
|
#!/bin/sh
|
||||||
|
|
||||||
|
#
|
||||||
|
# Copyright © 2015-2021 the original authors.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
##
|
#
|
||||||
## Gradle start up script for UN*X
|
# Gradle start up script for POSIX generated by Gradle.
|
||||||
##
|
#
|
||||||
|
# Important for running:
|
||||||
|
#
|
||||||
|
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||||
|
# noncompliant, but you have some other compliant shell such as ksh or
|
||||||
|
# bash, then to run this script, type that shell name before the whole
|
||||||
|
# command line, like:
|
||||||
|
#
|
||||||
|
# ksh Gradle
|
||||||
|
#
|
||||||
|
# Busybox and similar reduced shells will NOT work, because this script
|
||||||
|
# requires all of these POSIX shell features:
|
||||||
|
# * functions;
|
||||||
|
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||||
|
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||||
|
# * compound commands having a testable exit status, especially «case»;
|
||||||
|
# * various built-in commands including «command», «set», and «ulimit».
|
||||||
|
#
|
||||||
|
# Important for patching:
|
||||||
|
#
|
||||||
|
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||||
|
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||||
|
#
|
||||||
|
# The "traditional" practice of packing multiple parameters into a
|
||||||
|
# space-separated string is a well documented source of bugs and security
|
||||||
|
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||||
|
# options in "$@", and eventually passing that to Java.
|
||||||
|
#
|
||||||
|
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||||
|
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||||
|
# see the in-line comments for details.
|
||||||
|
#
|
||||||
|
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||||
|
# Darwin, MinGW, and NonStop.
|
||||||
|
#
|
||||||
|
# (3) This script is generated from the Groovy template
|
||||||
|
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||||
|
# within the Gradle project.
|
||||||
|
#
|
||||||
|
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||||
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
# Attempt to set APP_HOME
|
||||||
DEFAULT_JVM_OPTS=""
|
|
||||||
|
# Resolve links: $0 may be a link
|
||||||
|
app_path=$0
|
||||||
|
|
||||||
|
# Need this for daisy-chained symlinks.
|
||||||
|
while
|
||||||
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
|
[ -h "$app_path" ]
|
||||||
|
do
|
||||||
|
ls=$( ls -ld "$app_path" )
|
||||||
|
link=${ls#*' -> '}
|
||||||
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
APP_NAME="Gradle"
|
||||||
APP_BASE_NAME=`basename "$0"`
|
APP_BASE_NAME=${0##*/}
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD="maximum"
|
MAX_FD=maximum
|
||||||
|
|
||||||
warn ( ) {
|
warn () {
|
||||||
echo "$*"
|
echo "$*"
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
die ( ) {
|
die () {
|
||||||
echo
|
echo
|
||||||
echo "$*"
|
echo "$*"
|
||||||
echo
|
echo
|
||||||
exit 1
|
exit 1
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
# OS specific support (must be 'true' or 'false').
|
||||||
cygwin=false
|
cygwin=false
|
||||||
msys=false
|
msys=false
|
||||||
darwin=false
|
darwin=false
|
||||||
case "`uname`" in
|
nonstop=false
|
||||||
CYGWIN* )
|
case "$( uname )" in #(
|
||||||
cygwin=true
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
;;
|
Darwin* ) darwin=true ;; #(
|
||||||
Darwin* )
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
darwin=true
|
NONSTOP* ) nonstop=true ;;
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
|
||||||
if $cygwin ; then
|
|
||||||
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
|
||||||
# Resolve links: $0 may be a link
|
|
||||||
PRG="$0"
|
|
||||||
# Need this for relative symlinks.
|
|
||||||
while [ -h "$PRG" ] ; do
|
|
||||||
ls=`ls -ld "$PRG"`
|
|
||||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
|
||||||
if expr "$link" : '/.*' > /dev/null; then
|
|
||||||
PRG="$link"
|
|
||||||
else
|
|
||||||
PRG=`dirname "$PRG"`"/$link"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
SAVED="`pwd`"
|
|
||||||
cd "`dirname \"$PRG\"`/" >&-
|
|
||||||
APP_HOME="`pwd -P`"
|
|
||||||
cd "$SAVED" >&-
|
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
else
|
else
|
||||||
JAVACMD="$JAVA_HOME/bin/java"
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
fi
|
fi
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||||
|
@ -82,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
|
||||||
location of your Java installation."
|
location of your Java installation."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
JAVACMD="java"
|
JAVACMD=java
|
||||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
|
||||||
Please set the JAVA_HOME variable in your environment to match the
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
|
@ -90,75 +140,95 @@ location of your Java installation."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
case $MAX_FD in #(
|
||||||
if [ $? -eq 0 ] ; then
|
max*)
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
MAX_FD="$MAX_FD_LIMIT"
|
warn "Could not query maximum file descriptor limit"
|
||||||
fi
|
esac
|
||||||
ulimit -n $MAX_FD
|
case $MAX_FD in #(
|
||||||
if [ $? -ne 0 ] ; then
|
'' | soft) :;; #(
|
||||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
*)
|
||||||
fi
|
ulimit -n "$MAX_FD" ||
|
||||||
else
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Darwin, add options to specify how the application appears in the dock
|
|
||||||
if $darwin; then
|
|
||||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
|
||||||
fi
|
|
||||||
|
|
||||||
# For Cygwin, switch paths to Windows format before running java
|
|
||||||
if $cygwin ; then
|
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
|
||||||
SEP=""
|
|
||||||
for dir in $ROOTDIRSRAW ; do
|
|
||||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
|
||||||
SEP="|"
|
|
||||||
done
|
|
||||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
|
||||||
# Add a user-defined pattern to the cygpath arguments
|
|
||||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
|
||||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
|
||||||
fi
|
|
||||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
|
||||||
i=0
|
|
||||||
for arg in "$@" ; do
|
|
||||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
|
||||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
|
||||||
|
|
||||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
|
||||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
|
||||||
else
|
|
||||||
eval `echo args$i`="\"$arg\""
|
|
||||||
fi
|
|
||||||
i=$((i+1))
|
|
||||||
done
|
|
||||||
case $i in
|
|
||||||
(0) set -- ;;
|
|
||||||
(1) set -- "$args0" ;;
|
|
||||||
(2) set -- "$args0" "$args1" ;;
|
|
||||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
|
||||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
|
||||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
|
||||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
|
||||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
|
||||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
|
||||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
function splitJvmOpts() {
|
# * args from the command line
|
||||||
JVM_OPTS=("$@")
|
# * the main class name
|
||||||
}
|
# * -classpath
|
||||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
# * -D...appname settings
|
||||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
# * --module-path (only if needed)
|
||||||
|
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||||
|
|
||||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||||
|
if "$cygwin" || "$msys" ; then
|
||||||
|
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||||
|
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||||
|
|
||||||
|
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||||
|
|
||||||
|
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||||
|
for arg do
|
||||||
|
if
|
||||||
|
case $arg in #(
|
||||||
|
-*) false ;; # don't mess with options #(
|
||||||
|
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||||
|
[ -e "$t" ] ;; #(
|
||||||
|
*) false ;;
|
||||||
|
esac
|
||||||
|
then
|
||||||
|
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||||
|
fi
|
||||||
|
# Roll the args list around exactly as many times as the number of
|
||||||
|
# args, so each arg winds up back in the position where it started, but
|
||||||
|
# possibly modified.
|
||||||
|
#
|
||||||
|
# NB: a `for` loop captures its iteration list before it begins, so
|
||||||
|
# changing the positional parameters here affects neither the number of
|
||||||
|
# iterations, nor the values presented in `arg`.
|
||||||
|
shift # remove old arg
|
||||||
|
set -- "$@" "$arg" # push replacement arg
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Collect all arguments for the java command;
|
||||||
|
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||||
|
# shell script including quotes and variable substitutions, so put them in
|
||||||
|
# double quotes to make sure that they get re-expanded; and
|
||||||
|
# * put everything else in single quotes, so that it's not re-expanded.
|
||||||
|
|
||||||
|
set -- \
|
||||||
|
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||||
|
-classpath "$CLASSPATH" \
|
||||||
|
org.gradle.wrapper.GradleWrapperMain \
|
||||||
|
"$@"
|
||||||
|
|
||||||
|
# Use "xargs" to parse quoted args.
|
||||||
|
#
|
||||||
|
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||||
|
#
|
||||||
|
# In Bash we could simply go:
|
||||||
|
#
|
||||||
|
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||||
|
# set -- "${ARGS[@]}" "$@"
|
||||||
|
#
|
||||||
|
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||||
|
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||||
|
# character that might be a shell metacharacter, then use eval to reverse
|
||||||
|
# that process (while maintaining the separation between arguments), and wrap
|
||||||
|
# the whole thing up as a single "set" statement.
|
||||||
|
#
|
||||||
|
# This will of course break if any of these variables contains a newline or
|
||||||
|
# an unmatched quote.
|
||||||
|
#
|
||||||
|
|
||||||
|
eval "set -- $(
|
||||||
|
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||||
|
xargs -n1 |
|
||||||
|
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||||
|
tr '\n' ' '
|
||||||
|
)" '"$@"'
|
||||||
|
|
||||||
|
exec "$JAVACMD" "$@"
|
||||||
|
|
53
gradlew.bat
vendored
|
@ -1,3 +1,19 @@
|
||||||
|
@rem
|
||||||
|
@rem Copyright 2015 the original author or authors.
|
||||||
|
@rem
|
||||||
|
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@rem you may not use this file except in compliance with the License.
|
||||||
|
@rem You may obtain a copy of the License at
|
||||||
|
@rem
|
||||||
|
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
@rem
|
||||||
|
@rem Unless required by applicable law or agreed to in writing, software
|
||||||
|
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
@rem See the License for the specific language governing permissions and
|
||||||
|
@rem limitations under the License.
|
||||||
|
@rem
|
||||||
|
|
||||||
@if "%DEBUG%" == "" @echo off
|
@if "%DEBUG%" == "" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
|
@ -8,20 +24,23 @@
|
||||||
@rem Set local scope for the variables with windows NT shell
|
@rem Set local scope for the variables with windows NT shell
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
set DEFAULT_JVM_OPTS=
|
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
|
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||||
|
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||||
|
|
||||||
|
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
if "%ERRORLEVEL%" == "0" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
|
@ -35,7 +54,7 @@ goto fail
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
|
@ -45,34 +64,14 @@ echo location of your Java installation.
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
|
||||||
@rem Get command-line arguments, handling Windowz variants
|
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
|
||||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
|
||||||
|
|
||||||
:win9xME_args
|
|
||||||
@rem Slurp the command line arguments.
|
|
||||||
set CMD_LINE_ARGS=
|
|
||||||
set _SKIP=2
|
|
||||||
|
|
||||||
:win9xME_args_slurp
|
|
||||||
if "x%~1" == "x" goto execute
|
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
|
||||||
goto execute
|
|
||||||
|
|
||||||
:4NT_args
|
|
||||||
@rem Get arguments from the 4NT Shell from JP Software
|
|
||||||
set CMD_LINE_ARGS=%$
|
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@rem Execute Gradle
|
||||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
|
|
|
@ -0,0 +1,169 @@
|
||||||
|
package com.cheogram.android.test;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
|
import java.lang.Thread;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import org.junit.AfterClass;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
|
import org.junit.ClassRule;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.junit.runners.JUnit4;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import androidx.test.InstrumentationRegistry;
|
||||||
|
import androidx.test.core.app.ActivityScenario;
|
||||||
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
|
import androidx.test.ext.junit.rules.ActivityScenarioRule;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
import androidx.test.rule.ServiceTestRule;
|
||||||
|
import static androidx.test.espresso.Espresso.onView;
|
||||||
|
import static androidx.test.espresso.action.ViewActions.click;
|
||||||
|
import static androidx.test.espresso.matcher.ViewMatchers.withId;
|
||||||
|
|
||||||
|
import tools.fastlane.screengrab.Screengrab;
|
||||||
|
import tools.fastlane.screengrab.cleanstatusbar.CleanStatusBar;
|
||||||
|
import tools.fastlane.screengrab.locale.LocaleTestRule;
|
||||||
|
|
||||||
|
import eu.siacs.conversations.entities.Account;
|
||||||
|
import eu.siacs.conversations.entities.Contact;
|
||||||
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
|
import eu.siacs.conversations.entities.Message;
|
||||||
|
import eu.siacs.conversations.entities.Presence;
|
||||||
|
import eu.siacs.conversations.entities.ServiceDiscoveryResult;
|
||||||
|
import eu.siacs.conversations.entities.TransferablePlaceholder;
|
||||||
|
import eu.siacs.conversations.persistance.FileBackend;
|
||||||
|
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
|
||||||
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
|
import eu.siacs.conversations.test.R;
|
||||||
|
import eu.siacs.conversations.ui.ConversationsActivity;
|
||||||
|
import eu.siacs.conversations.ui.StartConversationActivity;
|
||||||
|
import eu.siacs.conversations.xml.Element;
|
||||||
|
import eu.siacs.conversations.xmpp.Jid;
|
||||||
|
import eu.siacs.conversations.xmpp.pep.Avatar;
|
||||||
|
import eu.siacs.conversations.xmpp.stanzas.IqPacket;
|
||||||
|
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class ScreenshotTest {
|
||||||
|
|
||||||
|
static String pkg = InstrumentationRegistry.getInstrumentation().getContext().getPackageName();
|
||||||
|
static XmppConnectionService xmppConnectionService;
|
||||||
|
static Account account;
|
||||||
|
|
||||||
|
@ClassRule
|
||||||
|
public static final LocaleTestRule localeTestRule = new LocaleTestRule();
|
||||||
|
|
||||||
|
@ClassRule
|
||||||
|
public static final ServiceTestRule xmppServiceRule = new ServiceTestRule();
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void setup() throws TimeoutException {
|
||||||
|
CleanStatusBar.enableWithDefaults();
|
||||||
|
|
||||||
|
Intent intent = new Intent(ApplicationProvider.getApplicationContext(), XmppConnectionService.class);
|
||||||
|
intent.setAction("ui");
|
||||||
|
xmppConnectionService = ((XmppConnectionBinder) xmppServiceRule.bindService(intent)).getService();
|
||||||
|
account = xmppConnectionService.findAccountByJid(Jid.of("carrot@chaosah.hereva"));
|
||||||
|
if (account == null) {
|
||||||
|
account = new Account(
|
||||||
|
Jid.of("carrot@chaosah.hereva"),
|
||||||
|
"orangeandfurry"
|
||||||
|
);
|
||||||
|
xmppConnectionService.createAccount(account);
|
||||||
|
}
|
||||||
|
|
||||||
|
Uri avatarUri = Uri.parse("android.resource://" + pkg + "/" + String.valueOf(R.drawable.carrot));
|
||||||
|
final Avatar avatar = xmppConnectionService.getFileBackend().getPepAvatar(avatarUri, 192, Bitmap.CompressFormat.WEBP);
|
||||||
|
xmppConnectionService.getFileBackend().save(avatar);
|
||||||
|
account.setAvatar(avatar.getFilename());
|
||||||
|
|
||||||
|
Contact cheogram = account.getRoster().getContact(Jid.of("cheogram.com"));
|
||||||
|
cheogram.setOption(Contact.Options.IN_ROSTER);
|
||||||
|
cheogram.setPhotoUri("android.resource://" + pkg + "/" + String.valueOf(R.drawable.cheogram));
|
||||||
|
Presence cheogramPresence = Presence.parse(null, null, "");
|
||||||
|
IqPacket discoPacket = new IqPacket(IqPacket.TYPE.RESULT);
|
||||||
|
Element query = discoPacket.addChild("query", "http://jabber.org/protocol/disco#info");
|
||||||
|
Element identity = query.addChild("identity");
|
||||||
|
identity.setAttribute("category", "gateway");
|
||||||
|
identity.setAttribute("type", "pstn");
|
||||||
|
cheogramPresence.setServiceDiscoveryResult(new ServiceDiscoveryResult(discoPacket));
|
||||||
|
cheogram.updatePresence("gw", cheogramPresence);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
public static void teardown() {
|
||||||
|
CleanStatusBar.disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testConversation() throws FileBackend.FileCopyException, InterruptedException {
|
||||||
|
Conversation conversation = xmppConnectionService.findOrCreateConversation(account, Jid.of("+15550737737@cheogram.com"), false, false);
|
||||||
|
conversation.getContact().setOption(Contact.Options.IN_ROSTER);
|
||||||
|
conversation.getContact().setSystemName("Pepper");
|
||||||
|
conversation.getContact().setPhotoUri("android.resource://" + pkg + "/" + String.valueOf(R.drawable.pepper));
|
||||||
|
|
||||||
|
Message voicemail = new Message(conversation, "", 0, Message.STATUS_RECEIVED);
|
||||||
|
voicemail.setOob("https://example.com/thing.mp3");
|
||||||
|
voicemail.setFileParams(new Message.FileParams("https://example.com/thing.mp3|5000|0|0|10000"));
|
||||||
|
voicemail.setType(Message.TYPE_FILE);
|
||||||
|
voicemail.setSubject("Voicemail Recording");
|
||||||
|
|
||||||
|
Message transcript = new Message(conversation, "Where are you?", 0, Message.STATUS_RECEIVED);
|
||||||
|
transcript.setSubject("Voicemail Transcription");
|
||||||
|
|
||||||
|
Message picture = new Message(conversation, "", 0, Message.STATUS_SEND_RECEIVED);
|
||||||
|
picture.setOob("https://example.com/thing.webp");
|
||||||
|
picture.setType(Message.TYPE_FILE);
|
||||||
|
xmppConnectionService.getFileBackend().copyFileToPrivateStorage(
|
||||||
|
picture,
|
||||||
|
Uri.parse("android.resource://" + pkg + "/" + String.valueOf(R.drawable.komona)),
|
||||||
|
"image/webp"
|
||||||
|
);
|
||||||
|
xmppConnectionService.getFileBackend().updateFileParams(picture);
|
||||||
|
|
||||||
|
conversation.addAll(0, Arrays.asList(
|
||||||
|
voicemail,
|
||||||
|
transcript,
|
||||||
|
new Message(conversation, "Meow", 0, Message.STATUS_SEND_RECEIVED),
|
||||||
|
picture,
|
||||||
|
new Message(conversation, "👍", 0, Message.STATUS_RECEIVED)
|
||||||
|
));
|
||||||
|
|
||||||
|
ActivityScenario scenario = ActivityScenario.launch(ConversationsActivity.class);
|
||||||
|
scenario.onActivity((Activity activity) -> {
|
||||||
|
((ConversationsActivity) activity).switchToConversation(conversation);
|
||||||
|
});
|
||||||
|
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||||
|
Thread.sleep(100); // ImageView not paited yet after waitForIdleSync
|
||||||
|
Screengrab.screenshot("conversation");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testStartConversation() throws InterruptedException {
|
||||||
|
ActivityScenario scenario = ActivityScenario.launch(StartConversationActivity.class);
|
||||||
|
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||||
|
Thread.sleep(100); // ImageView not paited yet after waitForIdleSync
|
||||||
|
Screengrab.screenshot("startConversation");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAddContact() throws InterruptedException {
|
||||||
|
ActivityScenario scenario = ActivityScenario.launch(StartConversationActivity.class);
|
||||||
|
onView(withId(eu.siacs.conversations.R.id.speed_dial)).perform(click());
|
||||||
|
Screengrab.screenshot("startConversationOptions");
|
||||||
|
|
||||||
|
// Not actually online, so can't screenshot the gateway selector yet
|
||||||
|
/*onView(withId(eu.siacs.conversations.R.id.create_contact)).perform(click());
|
||||||
|
InstrumentationRegistry.getInstrumentation().waitForIdleSync();
|
||||||
|
Thread.sleep(10000); // ImageView not paited yet after waitForIdleSync
|
||||||
|
Screengrab.screenshot("addContact");*/
|
||||||
|
}
|
||||||
|
}
|
BIN
src/androidTest/res/drawable/carrot.webp
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
src/androidTest/res/drawable/cheogram.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
src/androidTest/res/drawable/komona.webp
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
src/androidTest/res/drawable/pepper.webp
Normal file
After Width: | Height: | Size: 20 KiB |
|
@ -249,7 +249,7 @@ public class ConnectionService extends android.telecom.ConnectionService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAudioDeviceChanged(AppRTCAudioManager.AudioDevice selectedAudioDevice, Set<AppRTCAudioManager.AudioDevice> availableAudioDevices) {
|
public void onAudioDeviceChanged(AppRTCAudioManager.AudioDevice selectedAudioDevice, Set<AppRTCAudioManager.AudioDevice> availableAudioDevices) {
|
||||||
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.O) return;
|
if (Build.VERSION.SDK_INT < 26) return;
|
||||||
|
|
||||||
switch(selectedAudioDevice) {
|
switch(selectedAudioDevice) {
|
||||||
case SPEAKER_PHONE:
|
case SPEAKER_PHONE:
|
||||||
|
|
1
src/cheogramPlaystore
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
conversationsPlaystore/
|
|
@ -134,6 +134,8 @@ public class ImportBackupActivity extends ActionBarActivity implements ServiceCo
|
||||||
} catch (final IOException | IllegalArgumentException e) {
|
} catch (final IOException | IllegalArgumentException e) {
|
||||||
Log.d(Config.LOGTAG, "unable to open backup file " + uri, e);
|
Log.d(Config.LOGTAG, "unable to open backup file " + uri, e);
|
||||||
Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG).show();
|
Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG).show();
|
||||||
|
} catch (final SecurityException e) {
|
||||||
|
Snackbar.make(binding.coordinator, R.string.sharing_application_not_grant_permission, Snackbar.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@
|
||||||
android:name="com.google.android.gms.car.application"
|
android:name="com.google.android.gms.car.application"
|
||||||
android:resource="@xml/automotive_app_desc" />
|
android:resource="@xml/automotive_app_desc" />
|
||||||
|
|
||||||
<service android:name=".services.XmppConnectionService" />
|
<service android:name=".services.XmppConnectionService" android:foregroundServiceType="microphone" />
|
||||||
|
|
||||||
<receiver android:name=".services.EventReceiver">
|
<receiver android:name=".services.EventReceiver">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|
|
@ -37,6 +37,7 @@ import androidx.core.content.FileProvider;
|
||||||
import androidx.exifinterface.media.ExifInterface;
|
import androidx.exifinterface.media.ExifInterface;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.io.ByteStreams;
|
import com.google.common.io.ByteStreams;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
@ -87,21 +88,38 @@ public class FileBackend {
|
||||||
private static final float IGNORE_PADDING = 0.15f;
|
private static final float IGNORE_PADDING = 0.15f;
|
||||||
private final XmppConnectionService mXmppConnectionService;
|
private final XmppConnectionService mXmppConnectionService;
|
||||||
|
|
||||||
|
private static final List<String> STORAGE_TYPES;
|
||||||
|
|
||||||
|
static {
|
||||||
|
final ImmutableList.Builder<String> builder =
|
||||||
|
new ImmutableList.Builder<String>()
|
||||||
|
.add(
|
||||||
|
Environment.DIRECTORY_DOWNLOADS,
|
||||||
|
Environment.DIRECTORY_PICTURES,
|
||||||
|
Environment.DIRECTORY_MOVIES,
|
||||||
|
Environment.DIRECTORY_DOCUMENTS);
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
builder.add(Environment.DIRECTORY_RECORDINGS);
|
||||||
|
}
|
||||||
|
STORAGE_TYPES = builder.build();
|
||||||
|
}
|
||||||
|
|
||||||
public FileBackend(XmppConnectionService service) {
|
public FileBackend(XmppConnectionService service) {
|
||||||
this.mXmppConnectionService = service;
|
this.mXmppConnectionService = service;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long getFileSize(Context context, Uri uri) {
|
public static long getFileSize(Context context, Uri uri) {
|
||||||
try {
|
try (final Cursor cursor =
|
||||||
final Cursor cursor = context.getContentResolver().query(uri, null, null, null, null);
|
context.getContentResolver().query(uri, null, null, null, null)) {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
long size = cursor.getLong(cursor.getColumnIndex(OpenableColumns.SIZE));
|
final int index = cursor.getColumnIndex(OpenableColumns.SIZE);
|
||||||
cursor.close();
|
if (index == -1) {
|
||||||
return size;
|
|
||||||
} else {
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
return cursor.getLong(index);
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
} catch (final Exception ignored) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -366,8 +384,12 @@ public class FileBackend {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean weOwnFileLollipop(final Uri uri) {
|
private static boolean weOwnFileLollipop(final Uri uri) {
|
||||||
|
final String path = uri.getPath();
|
||||||
|
if (path == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
File file = new File(uri.getPath());
|
File file = new File(path);
|
||||||
FileDescriptor fd =
|
FileDescriptor fd =
|
||||||
ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
|
ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY)
|
||||||
.getFileDescriptor();
|
.getFileDescriptor();
|
||||||
|
@ -862,6 +884,20 @@ public class FileBackend {
|
||||||
return new File(appDirectory, filename);
|
return new File(appDirectory, filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean inConversationsDirectory(final Context context, String path) {
|
||||||
|
final File fileDirectory = new File(path).getParentFile();
|
||||||
|
for (final String type : STORAGE_TYPES) {
|
||||||
|
final File typeDirectory =
|
||||||
|
new File(
|
||||||
|
Environment.getExternalStoragePublicDirectory(type),
|
||||||
|
context.getString(R.string.app_name));
|
||||||
|
if (typeDirectory.equals(fileDirectory)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public void setupRelativeFilePath(
|
public void setupRelativeFilePath(
|
||||||
final Message message, final String filename, final String mime) {
|
final Message message, final String filename, final String mime) {
|
||||||
final File file = getStorageLocation(filename, mime);
|
final File file = getStorageLocation(filename, mime);
|
||||||
|
|
|
@ -1185,7 +1185,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
}
|
}
|
||||||
if (m.isFileOrImage() && !deleted && !cancelable) {
|
if (m.isFileOrImage() && !deleted && !cancelable) {
|
||||||
final String path = m.getRelativeFilePath();
|
final String path = m.getRelativeFilePath();
|
||||||
if (path == null || !path.startsWith("/")) {
|
if (path == null || !path.startsWith("/") || FileBackend.inConversationsDirectory(requireActivity(), path)) {
|
||||||
deleteFile.setVisible(true);
|
deleteFile.setVisible(true);
|
||||||
deleteFile.setTitle(activity.getString(R.string.delete_x_file, UIHelper.getFileDescriptionString(activity, m)));
|
deleteFile.setTitle(activity.getString(R.string.delete_x_file, UIHelper.getFileDescriptionString(activity, m)));
|
||||||
}
|
}
|
||||||
|
|
|
@ -432,7 +432,7 @@ public class RtpSessionActivity extends XmppActivity
|
||||||
}
|
}
|
||||||
} else if (asList(ACTION_MAKE_VIDEO_CALL, ACTION_MAKE_VOICE_CALL).contains(action)) {
|
} else if (asList(ACTION_MAKE_VIDEO_CALL, ACTION_MAKE_VOICE_CALL).contains(action)) {
|
||||||
proposeJingleRtpSession(account, with, actionToMedia(action));
|
proposeJingleRtpSession(account, with, actionToMedia(action));
|
||||||
setWith(account.getRoster().getContact(with));
|
setWith(account.getRoster().getContact(with), null);
|
||||||
} else {
|
} else {
|
||||||
throw new IllegalStateException("received onNewIntent without sessionId");
|
throw new IllegalStateException("received onNewIntent without sessionId");
|
||||||
}
|
}
|
||||||
|
@ -456,7 +456,7 @@ public class RtpSessionActivity extends XmppActivity
|
||||||
}
|
}
|
||||||
} else if (asList(ACTION_MAKE_VIDEO_CALL, ACTION_MAKE_VOICE_CALL).contains(action)) {
|
} else if (asList(ACTION_MAKE_VIDEO_CALL, ACTION_MAKE_VOICE_CALL).contains(action)) {
|
||||||
proposeJingleRtpSession(account, with, actionToMedia(action));
|
proposeJingleRtpSession(account, with, actionToMedia(action));
|
||||||
setWith(account.getRoster().getContact(with));
|
setWith(account.getRoster().getContact(with), null);
|
||||||
} else if (Intent.ACTION_VIEW.equals(action)) {
|
} else if (Intent.ACTION_VIEW.equals(action)) {
|
||||||
final String extraLastState = intent.getStringExtra(EXTRA_LAST_REPORTED_STATE);
|
final String extraLastState = intent.getStringExtra(EXTRA_LAST_REPORTED_STATE);
|
||||||
final RtpEndUserState state =
|
final RtpEndUserState state =
|
||||||
|
@ -469,7 +469,7 @@ public class RtpSessionActivity extends XmppActivity
|
||||||
updateIncomingCallScreen(state);
|
updateIncomingCallScreen(state);
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
}
|
}
|
||||||
setWith(account.getRoster().getContact(with));
|
setWith(account.getRoster().getContact(with), state);
|
||||||
if (xmppConnectionService
|
if (xmppConnectionService
|
||||||
.getJingleConnectionManager()
|
.getJingleConnectionManager()
|
||||||
.fireJingleRtpConnectionStateUpdates()) {
|
.fireJingleRtpConnectionStateUpdates()) {
|
||||||
|
@ -486,13 +486,19 @@ public class RtpSessionActivity extends XmppActivity
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setWith() {
|
private void setWith(final RtpEndUserState state) {
|
||||||
setWith(getWith());
|
setWith(getWith(), state);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setWith(final Contact contact) {
|
private void setWith(final Contact contact, final RtpEndUserState state) {
|
||||||
binding.with.setText(contact.getDisplayName());
|
binding.with.setText(contact.getDisplayName());
|
||||||
|
if (Arrays.asList(RtpEndUserState.INCOMING_CALL, RtpEndUserState.ACCEPTING_CALL)
|
||||||
|
.contains(state)) {
|
||||||
binding.withJid.setText(contact.getJid().asBareJid().toEscapedString());
|
binding.withJid.setText(contact.getJid().asBareJid().toEscapedString());
|
||||||
|
binding.withJid.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
binding.withJid.setVisibility(View.GONE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void proposeJingleRtpSession(
|
private void proposeJingleRtpSession(
|
||||||
|
@ -698,7 +704,7 @@ public class RtpSessionActivity extends XmppActivity
|
||||||
requireRtpConnection().getState())) {
|
requireRtpConnection().getState())) {
|
||||||
putScreenInCallMode();
|
putScreenInCallMode();
|
||||||
}
|
}
|
||||||
setWith();
|
setWith(currentState);
|
||||||
updateVideoViews(currentState);
|
updateVideoViews(currentState);
|
||||||
updateStateDisplay(currentState, media);
|
updateStateDisplay(currentState, media);
|
||||||
updateVerifiedShield(verified && STATES_SHOWING_SWITCH_TO_CHAT.contains(currentState));
|
updateVerifiedShield(verified && STATES_SHOWING_SWITCH_TO_CHAT.contains(currentState));
|
||||||
|
@ -717,7 +723,7 @@ public class RtpSessionActivity extends XmppActivity
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RtpEndUserState state = terminatedRtpSession.state;
|
final RtpEndUserState state = terminatedRtpSession.state;
|
||||||
resetIntent(account, with, terminatedRtpSession.state, terminatedRtpSession.media);
|
resetIntent(account, with, terminatedRtpSession.state, terminatedRtpSession.media);
|
||||||
updateButtonConfiguration(state);
|
updateButtonConfiguration(state);
|
||||||
updateStateDisplay(state);
|
updateStateDisplay(state);
|
||||||
|
@ -725,7 +731,7 @@ public class RtpSessionActivity extends XmppActivity
|
||||||
updateCallDuration();
|
updateCallDuration();
|
||||||
updateVerifiedShield(false);
|
updateVerifiedShield(false);
|
||||||
invalidateOptionsMenu();
|
invalidateOptionsMenu();
|
||||||
setWith(account.getRoster().getContact(with));
|
setWith(account.getRoster().getContact(with), state);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void reInitializeActivityWithRunningRtpSession(
|
private void reInitializeActivityWithRunningRtpSession(
|
||||||
|
|
|
@ -528,7 +528,6 @@ public final class MimeUtils {
|
||||||
|
|
||||||
public static String guessMimeTypeFromUriAndMime(final Context context, final Uri uri, final String mime) {
|
public static String guessMimeTypeFromUriAndMime(final Context context, final Uri uri, final String mime) {
|
||||||
Log.d(Config.LOGTAG, "guessMimeTypeFromUriAndMime " + uri + " and mime=" + mime);
|
Log.d(Config.LOGTAG, "guessMimeTypeFromUriAndMime " + uri + " and mime=" + mime);
|
||||||
if (mime == null || mime.equals("application/octet-stream")) {
|
|
||||||
final String guess = guessMimeTypeFromUri(context, uri);
|
final String guess = guessMimeTypeFromUri(context, uri);
|
||||||
if (guess != null) {
|
if (guess != null) {
|
||||||
return guess;
|
return guess;
|
||||||
|
@ -536,8 +535,6 @@ public final class MimeUtils {
|
||||||
return mime;
|
return mime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return guessMimeTypeFromUri(context, uri);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String guessMimeTypeFromUri(Context context, Uri uri) {
|
public static String guessMimeTypeFromUri(Context context, Uri uri) {
|
||||||
// try the content resolver
|
// try the content resolver
|
||||||
|
|
|
@ -53,24 +53,27 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/status"
|
android:layout_below="@id/status"
|
||||||
android:layout_marginLeft="16dp"
|
android:layout_marginLeft="16dp"
|
||||||
android:layout_marginTop="0dp"
|
|
||||||
android:layout_marginRight="16dp"
|
android:layout_marginRight="16dp"
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
android:textAppearance="@style/TextAppearance.Conversations.Display2"
|
android:textAppearance="@style/TextAppearance.Conversations.Display2"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
tools:text="Juliet Capulet" />
|
tools:text="Juliet Capulet" />
|
||||||
<TextView
|
<TextView
|
||||||
|
android:visibility="visible"
|
||||||
android:id="@+id/with_jid"
|
android:id="@+id/with_jid"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/status"
|
android:layout_below="@id/status"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
android:layout_marginLeft="16dp"
|
android:layout_marginLeft="16dp"
|
||||||
android:layout_marginRight="16dp"
|
android:layout_marginRight="16dp"
|
||||||
android:layout_marginBottom="32dp"
|
|
||||||
android:textAppearance="@style/TextAppearance.Conversations.Body1"
|
android:textAppearance="@style/TextAppearance.Conversations.Body1"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
tools:text="jcapulet@example.com" />
|
tools:text="jcapulet@example.com" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="32dp"/>
|
||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
|
|
|
@ -622,6 +622,8 @@
|
||||||
<string name="pref_clean_private_storage_summary">Lösche privaten Speicher, in dem die Dateien gespeichert werden (sie können erneut vom Server heruntergeladen werden)</string>
|
<string name="pref_clean_private_storage_summary">Lösche privaten Speicher, in dem die Dateien gespeichert werden (sie können erneut vom Server heruntergeladen werden)</string>
|
||||||
<string name="i_followed_this_link_from_a_trusted_source">Ich habe diesen Link aus einer vertrauenswürdigen Quelle erhalten</string>
|
<string name="i_followed_this_link_from_a_trusted_source">Ich habe diesen Link aus einer vertrauenswürdigen Quelle erhalten</string>
|
||||||
<string name="verifying_omemo_keys_trusted_source">Du bist dabei, die OMEMO-Schlüssel von %1$s nach dem Klick auf diesen Link zu überprüfen. Dies ist nur sicher, wenn du diesen Link von einer vertrauenswürdigen Quelle erhalten hast, der nur von %2$s veröffentlicht werden konnte.</string>
|
<string name="verifying_omemo_keys_trusted_source">Du bist dabei, die OMEMO-Schlüssel von %1$s nach dem Klick auf diesen Link zu überprüfen. Dies ist nur sicher, wenn du diesen Link von einer vertrauenswürdigen Quelle erhalten hast, der nur von %2$s veröffentlicht werden konnte.</string>
|
||||||
|
<string name="verifying_omemo_keys_trusted_source_account">Du bist dabei, die OMEMO-Schlüssel deines eigenen Kontos zu verifizieren. Dies ist nur sicher, wenn du diesem Link aus einer vertrauenswürdigen Quelle gefolgt bist, bei der nur du diesen Link veröffentlicht haben kannst.</string>
|
||||||
|
<string name="continue_btn">Weiter</string>
|
||||||
<string name="verify_omemo_keys">Überprüfe OMEMO-Schlüssel</string>
|
<string name="verify_omemo_keys">Überprüfe OMEMO-Schlüssel</string>
|
||||||
<string name="show_inactive_devices">Inaktive anzeigen</string>
|
<string name="show_inactive_devices">Inaktive anzeigen</string>
|
||||||
<string name="hide_inactive_devices">Inaktive ausblenden</string>
|
<string name="hide_inactive_devices">Inaktive ausblenden</string>
|
||||||
|
@ -904,6 +906,7 @@
|
||||||
<string name="rtp_state_incoming_video_call">Eingehender Videoanruf</string>
|
<string name="rtp_state_incoming_video_call">Eingehender Videoanruf</string>
|
||||||
<string name="rtp_state_connecting">Verbinden</string>
|
<string name="rtp_state_connecting">Verbinden</string>
|
||||||
<string name="rtp_state_connected">Verbunden</string>
|
<string name="rtp_state_connected">Verbunden</string>
|
||||||
|
<string name="rtp_state_reconnecting">Erneut verbinden</string>
|
||||||
<string name="rtp_state_accepting_call">Anruf annehmen</string>
|
<string name="rtp_state_accepting_call">Anruf annehmen</string>
|
||||||
<string name="rtp_state_ending_call">Anruf beenden</string>
|
<string name="rtp_state_ending_call">Anruf beenden</string>
|
||||||
<string name="answer_call">Annehmen</string>
|
<string name="answer_call">Annehmen</string>
|
||||||
|
@ -919,6 +922,8 @@
|
||||||
<string name="hang_up">Auflegen</string>
|
<string name="hang_up">Auflegen</string>
|
||||||
<string name="ongoing_call">Laufender Anruf</string>
|
<string name="ongoing_call">Laufender Anruf</string>
|
||||||
<string name="ongoing_video_call">Laufender Videoanruf</string>
|
<string name="ongoing_video_call">Laufender Videoanruf</string>
|
||||||
|
<string name="reconnecting_call">Anruf erneut verbinden</string>
|
||||||
|
<string name="reconnecting_video_call">Videoanruf erneut verbinden</string>
|
||||||
<string name="disable_tor_to_make_call">Deaktiviere Tor, um Anrufe zu tätigen</string>
|
<string name="disable_tor_to_make_call">Deaktiviere Tor, um Anrufe zu tätigen</string>
|
||||||
<string name="incoming_call">Eingehender Anruf</string>
|
<string name="incoming_call">Eingehender Anruf</string>
|
||||||
<string name="incoming_call_duration">Eingehender Anruf · %s</string>
|
<string name="incoming_call_duration">Eingehender Anruf · %s</string>
|
||||||
|
@ -968,4 +973,7 @@
|
||||||
<string name="backup_started_message">Die Sicherung wurde gestartet. Du bekommst eine Benachrichtigung, sobald sie fertig ist.</string>
|
<string name="backup_started_message">Die Sicherung wurde gestartet. Du bekommst eine Benachrichtigung, sobald sie fertig ist.</string>
|
||||||
<string name="unable_to_enable_video">Video kann nicht aktiviert werden.</string>
|
<string name="unable_to_enable_video">Video kann nicht aktiviert werden.</string>
|
||||||
<string name="plain_text_document">Textdokument</string>
|
<string name="plain_text_document">Textdokument</string>
|
||||||
</resources>
|
<string name="account_registrations_are_not_supported">Kontoregistrierungen werden nicht unterstützt</string>
|
||||||
|
<string name="no_xmpp_adddress_found">Keine XMPP-Adresse gefunden</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
|
|
|
@ -622,6 +622,8 @@
|
||||||
<string name="pref_clean_private_storage_summary">Baleirar a almacenaxe privada onde se gardan os ficheiros (poderán volver a descargarse desde o servidor)</string>
|
<string name="pref_clean_private_storage_summary">Baleirar a almacenaxe privada onde se gardan os ficheiros (poderán volver a descargarse desde o servidor)</string>
|
||||||
<string name="i_followed_this_link_from_a_trusted_source">Seguín esta ligazón desde unha fonte de confianza</string>
|
<string name="i_followed_this_link_from_a_trusted_source">Seguín esta ligazón desde unha fonte de confianza</string>
|
||||||
<string name="verifying_omemo_keys_trusted_source">Vas verificar as chaves OMEMO de %1$s despois de premer na ligazón. Esto só é seguro se seguiches esta ligazón desde unha fonte de confianza onde só %2$s a podería ter publicado.</string>
|
<string name="verifying_omemo_keys_trusted_source">Vas verificar as chaves OMEMO de %1$s despois de premer na ligazón. Esto só é seguro se seguiches esta ligazón desde unha fonte de confianza onde só %2$s a podería ter publicado.</string>
|
||||||
|
<string name="verifying_omemo_keys_trusted_source_account">Vas verificar as chaves OMEMO da túa propia conta. Esto só é seguro se seguiches esta ligazón desde unha orixe segura onde só tí poderías ter publicado esta ligazón.</string>
|
||||||
|
<string name="continue_btn">Continuar</string>
|
||||||
<string name="verify_omemo_keys">Validar chaves OMEMO</string>
|
<string name="verify_omemo_keys">Validar chaves OMEMO</string>
|
||||||
<string name="show_inactive_devices">Mostrar inactivos</string>
|
<string name="show_inactive_devices">Mostrar inactivos</string>
|
||||||
<string name="hide_inactive_devices">Agochar inactivos</string>
|
<string name="hide_inactive_devices">Agochar inactivos</string>
|
||||||
|
@ -904,6 +906,7 @@
|
||||||
<string name="rtp_state_incoming_video_call">Videochamada entrante</string>
|
<string name="rtp_state_incoming_video_call">Videochamada entrante</string>
|
||||||
<string name="rtp_state_connecting">Conectando</string>
|
<string name="rtp_state_connecting">Conectando</string>
|
||||||
<string name="rtp_state_connected">Conectado</string>
|
<string name="rtp_state_connected">Conectado</string>
|
||||||
|
<string name="rtp_state_reconnecting">Reconectando</string>
|
||||||
<string name="rtp_state_accepting_call">Aceptando a chamada</string>
|
<string name="rtp_state_accepting_call">Aceptando a chamada</string>
|
||||||
<string name="rtp_state_ending_call">Rematando a chamada</string>
|
<string name="rtp_state_ending_call">Rematando a chamada</string>
|
||||||
<string name="answer_call">Responder</string>
|
<string name="answer_call">Responder</string>
|
||||||
|
@ -919,6 +922,8 @@
|
||||||
<string name="hang_up">Colgar</string>
|
<string name="hang_up">Colgar</string>
|
||||||
<string name="ongoing_call">Chamada en curso</string>
|
<string name="ongoing_call">Chamada en curso</string>
|
||||||
<string name="ongoing_video_call">Videochamada en curso</string>
|
<string name="ongoing_video_call">Videochamada en curso</string>
|
||||||
|
<string name="reconnecting_call">Reconectando a chamada</string>
|
||||||
|
<string name="reconnecting_video_call">Reconectando a videochamada</string>
|
||||||
<string name="disable_tor_to_make_call">Desactivar Tor para facer chamadas</string>
|
<string name="disable_tor_to_make_call">Desactivar Tor para facer chamadas</string>
|
||||||
<string name="incoming_call">Chamada entrante</string>
|
<string name="incoming_call">Chamada entrante</string>
|
||||||
<string name="incoming_call_duration">Conversa de · %s</string>
|
<string name="incoming_call_duration">Conversa de · %s</string>
|
||||||
|
@ -968,4 +973,7 @@
|
||||||
<string name="backup_started_message">Comezou a creación da copia de apoio. Recibirás unha notificación cando remate.</string>
|
<string name="backup_started_message">Comezou a creación da copia de apoio. Recibirás unha notificación cando remate.</string>
|
||||||
<string name="unable_to_enable_video">Non se puido activar o vídeo.</string>
|
<string name="unable_to_enable_video">Non se puido activar o vídeo.</string>
|
||||||
<string name="plain_text_document">Documento de texto plano</string>
|
<string name="plain_text_document">Documento de texto plano</string>
|
||||||
</resources>
|
<string name="account_registrations_are_not_supported">Non está permitido o rexistro de novas contas</string>
|
||||||
|
<string name="no_xmpp_adddress_found">Non se atopa un enderezo XMPP</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
|
|
|
@ -622,6 +622,8 @@
|
||||||
<string name="pref_clean_private_storage_summary">Svuota l\'archivio privato nella quale sono memorizzati i file (possono essere riscaricati dal server)</string>
|
<string name="pref_clean_private_storage_summary">Svuota l\'archivio privato nella quale sono memorizzati i file (possono essere riscaricati dal server)</string>
|
||||||
<string name="i_followed_this_link_from_a_trusted_source">Ho seguito questo link da una fonte fidata</string>
|
<string name="i_followed_this_link_from_a_trusted_source">Ho seguito questo link da una fonte fidata</string>
|
||||||
<string name="verifying_omemo_keys_trusted_source">Stai per verificare le chiavi OMEMO di %1$s cliccando un link. Questo metodo è sicuro solo se hai seguito il link da una fonte fidata dove solo %2$s può averlo pubblicato.</string>
|
<string name="verifying_omemo_keys_trusted_source">Stai per verificare le chiavi OMEMO di %1$s cliccando un link. Questo metodo è sicuro solo se hai seguito il link da una fonte fidata dove solo %2$s può averlo pubblicato.</string>
|
||||||
|
<string name="verifying_omemo_keys_trusted_source_account">Stai per verificare le chiavi OMEMO del tuo stesso account. Questo metodo è sicuro solo se hai seguito il link da una fonte fidata dove solo tu puoi averlo pubblicato.</string>
|
||||||
|
<string name="continue_btn">Continua</string>
|
||||||
<string name="verify_omemo_keys">Verifica chiavi OMEMO</string>
|
<string name="verify_omemo_keys">Verifica chiavi OMEMO</string>
|
||||||
<string name="show_inactive_devices">Mostra inattivi</string>
|
<string name="show_inactive_devices">Mostra inattivi</string>
|
||||||
<string name="hide_inactive_devices">Nascondi inattivi</string>
|
<string name="hide_inactive_devices">Nascondi inattivi</string>
|
||||||
|
@ -904,6 +906,7 @@
|
||||||
<string name="rtp_state_incoming_video_call">Chiamata video in arrivo</string>
|
<string name="rtp_state_incoming_video_call">Chiamata video in arrivo</string>
|
||||||
<string name="rtp_state_connecting">Connessione</string>
|
<string name="rtp_state_connecting">Connessione</string>
|
||||||
<string name="rtp_state_connected">Connesso</string>
|
<string name="rtp_state_connected">Connesso</string>
|
||||||
|
<string name="rtp_state_reconnecting">Riconnessione</string>
|
||||||
<string name="rtp_state_accepting_call">Accettazione chiamata</string>
|
<string name="rtp_state_accepting_call">Accettazione chiamata</string>
|
||||||
<string name="rtp_state_ending_call">Chiusura chiamata</string>
|
<string name="rtp_state_ending_call">Chiusura chiamata</string>
|
||||||
<string name="answer_call">Rispondi</string>
|
<string name="answer_call">Rispondi</string>
|
||||||
|
@ -919,6 +922,8 @@
|
||||||
<string name="hang_up">Riaggancia</string>
|
<string name="hang_up">Riaggancia</string>
|
||||||
<string name="ongoing_call">Chiamata in corso</string>
|
<string name="ongoing_call">Chiamata in corso</string>
|
||||||
<string name="ongoing_video_call">Chiamata video in corso</string>
|
<string name="ongoing_video_call">Chiamata video in corso</string>
|
||||||
|
<string name="reconnecting_call">Riconnessione chiamata</string>
|
||||||
|
<string name="reconnecting_video_call">Riconnessione chiamata video</string>
|
||||||
<string name="disable_tor_to_make_call">Disattiva Tor per le chiamate</string>
|
<string name="disable_tor_to_make_call">Disattiva Tor per le chiamate</string>
|
||||||
<string name="incoming_call">Chiamata in arrivo</string>
|
<string name="incoming_call">Chiamata in arrivo</string>
|
||||||
<string name="incoming_call_duration">Chiamata in arrivo · %s</string>
|
<string name="incoming_call_duration">Chiamata in arrivo · %s</string>
|
||||||
|
@ -968,4 +973,7 @@
|
||||||
<string name="backup_started_message">Il backup è iniziato. Riceverai una notifica una volta completato.</string>
|
<string name="backup_started_message">Il backup è iniziato. Riceverai una notifica una volta completato.</string>
|
||||||
<string name="unable_to_enable_video">Impossibile attivare il video.</string>
|
<string name="unable_to_enable_video">Impossibile attivare il video.</string>
|
||||||
<string name="plain_text_document">Documento di testo</string>
|
<string name="plain_text_document">Documento di testo</string>
|
||||||
</resources>
|
<string name="account_registrations_are_not_supported">Le registrazioni di profili non sono supportate</string>
|
||||||
|
<string name="no_xmpp_adddress_found">Nessun indirizzo XMPP trovato</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
|
|
|
@ -632,6 +632,8 @@
|
||||||
<string name="pref_clean_private_storage_summary">Wyczyść prywatny magazyn gdzie trzymane są pliki (mogą zostać pobrane ponownie z serwera)</string>
|
<string name="pref_clean_private_storage_summary">Wyczyść prywatny magazyn gdzie trzymane są pliki (mogą zostać pobrane ponownie z serwera)</string>
|
||||||
<string name="i_followed_this_link_from_a_trusted_source">Trafiłem na ten link w zaufanym źródle</string>
|
<string name="i_followed_this_link_from_a_trusted_source">Trafiłem na ten link w zaufanym źródle</string>
|
||||||
<string name="verifying_omemo_keys_trusted_source">Zaraz zweryfikujesz klucz OMEMO %1$s klikając w link. Jest to bezpieczne jedynie, kiedy link pochodzi z zaufanego źródła gdzie tylko %2$s mógł go opublikować.</string>
|
<string name="verifying_omemo_keys_trusted_source">Zaraz zweryfikujesz klucz OMEMO %1$s klikając w link. Jest to bezpieczne jedynie, kiedy link pochodzi z zaufanego źródła gdzie tylko %2$s mógł go opublikować.</string>
|
||||||
|
<string name="verifying_omemo_keys_trusted_source_account">Weryfikujesz właśnie klucze OMEMO własnego konta. To jest bezpieczne tylko jeśli kliknąłeś łącze w miejscu w którym jedynie ty mogłeś je zamieścić. </string>
|
||||||
|
<string name="continue_btn">Kontynuuj</string>
|
||||||
<string name="verify_omemo_keys">Zweryfikuj klucze OMEMO</string>
|
<string name="verify_omemo_keys">Zweryfikuj klucze OMEMO</string>
|
||||||
<string name="show_inactive_devices">Pokaż nieaktywne</string>
|
<string name="show_inactive_devices">Pokaż nieaktywne</string>
|
||||||
<string name="hide_inactive_devices">Ukryj nieaktywne</string>
|
<string name="hide_inactive_devices">Ukryj nieaktywne</string>
|
||||||
|
@ -927,6 +929,7 @@ Administrator twojego serwera będzie mógł czytać twoje wiadomości, ale moż
|
||||||
<string name="rtp_state_incoming_video_call">Wideorozmowa przychodząca</string>
|
<string name="rtp_state_incoming_video_call">Wideorozmowa przychodząca</string>
|
||||||
<string name="rtp_state_connecting">Łączenie</string>
|
<string name="rtp_state_connecting">Łączenie</string>
|
||||||
<string name="rtp_state_connected">Połączony</string>
|
<string name="rtp_state_connected">Połączony</string>
|
||||||
|
<string name="rtp_state_reconnecting">Ponowne łączenie</string>
|
||||||
<string name="rtp_state_accepting_call">Akceptowanie połączenia</string>
|
<string name="rtp_state_accepting_call">Akceptowanie połączenia</string>
|
||||||
<string name="rtp_state_ending_call">Kończenie połączenia</string>
|
<string name="rtp_state_ending_call">Kończenie połączenia</string>
|
||||||
<string name="answer_call">Połącz</string>
|
<string name="answer_call">Połącz</string>
|
||||||
|
@ -942,6 +945,8 @@ Administrator twojego serwera będzie mógł czytać twoje wiadomości, ale moż
|
||||||
<string name="hang_up">Rozłącz</string>
|
<string name="hang_up">Rozłącz</string>
|
||||||
<string name="ongoing_call">Połączenie wychodzące</string>
|
<string name="ongoing_call">Połączenie wychodzące</string>
|
||||||
<string name="ongoing_video_call">Wideorozmowa wychodząca</string>
|
<string name="ongoing_video_call">Wideorozmowa wychodząca</string>
|
||||||
|
<string name="reconnecting_call">Ponowne łączenie rozmowy</string>
|
||||||
|
<string name="reconnecting_video_call">Ponowne łączenie rozmowy wideo</string>
|
||||||
<string name="disable_tor_to_make_call">Wyłącz Tor aby dzwonić</string>
|
<string name="disable_tor_to_make_call">Wyłącz Tor aby dzwonić</string>
|
||||||
<string name="incoming_call">Połączenie przychodzące</string>
|
<string name="incoming_call">Połączenie przychodzące</string>
|
||||||
<string name="incoming_call_duration">Połączenie przychodzące · %s</string>
|
<string name="incoming_call_duration">Połączenie przychodzące · %s</string>
|
||||||
|
@ -995,4 +1000,7 @@ Administrator twojego serwera będzie mógł czytać twoje wiadomości, ale moż
|
||||||
<string name="backup_started_message">Tworzenie kopii zapasowej się rozpoczęło. Dostaniesz powiadomienie kiedy się zakończy. </string>
|
<string name="backup_started_message">Tworzenie kopii zapasowej się rozpoczęło. Dostaniesz powiadomienie kiedy się zakończy. </string>
|
||||||
<string name="unable_to_enable_video">Nie można włączyć wideo. </string>
|
<string name="unable_to_enable_video">Nie można włączyć wideo. </string>
|
||||||
<string name="plain_text_document">Dokument zwykłego tekstu</string>
|
<string name="plain_text_document">Dokument zwykłego tekstu</string>
|
||||||
</resources>
|
<string name="account_registrations_are_not_supported">Rejestracja kont nie jest wspierana</string>
|
||||||
|
<string name="no_xmpp_adddress_found">Nie znaleziono adresu XMPP</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
|
|
|
@ -627,6 +627,8 @@
|
||||||
<string name="pref_clean_private_storage_summary">Locul unde sunt fișierele păstrate (pot fi descărcate de pe server din nou)</string>
|
<string name="pref_clean_private_storage_summary">Locul unde sunt fișierele păstrate (pot fi descărcate de pe server din nou)</string>
|
||||||
<string name="i_followed_this_link_from_a_trusted_source">Am urmat această legătură de la o sursă de încredere</string>
|
<string name="i_followed_this_link_from_a_trusted_source">Am urmat această legătură de la o sursă de încredere</string>
|
||||||
<string name="verifying_omemo_keys_trusted_source">Urmează să verificați cheile OMEMO pentru %1$s după ce veți deschide legătura. Acest lucru se poate face în siguranță doar dacă ați primit legătura de la o sursă de încredere unde doar %2$s putea publica.</string>
|
<string name="verifying_omemo_keys_trusted_source">Urmează să verificați cheile OMEMO pentru %1$s după ce veți deschide legătura. Acest lucru se poate face în siguranță doar dacă ați primit legătura de la o sursă de încredere unde doar %2$s putea publica.</string>
|
||||||
|
<string name="verifying_omemo_keys_trusted_source_account">Urmează să verificați cheile OMEMO pentru contul dumneavoastră. Acest lucru se poate face în siguranță doar dacă ați primit legătura de la o sursă de încredere unde doar dumneavoastră ați fi putut publica.</string>
|
||||||
|
<string name="continue_btn">Continuă</string>
|
||||||
<string name="verify_omemo_keys">Verificare chei OMEMO</string>
|
<string name="verify_omemo_keys">Verificare chei OMEMO</string>
|
||||||
<string name="show_inactive_devices">Arată inactive</string>
|
<string name="show_inactive_devices">Arată inactive</string>
|
||||||
<string name="hide_inactive_devices">Ascunde inactive</string>
|
<string name="hide_inactive_devices">Ascunde inactive</string>
|
||||||
|
@ -915,6 +917,7 @@
|
||||||
<string name="rtp_state_incoming_video_call">Apel video primit</string>
|
<string name="rtp_state_incoming_video_call">Apel video primit</string>
|
||||||
<string name="rtp_state_connecting">Conectare</string>
|
<string name="rtp_state_connecting">Conectare</string>
|
||||||
<string name="rtp_state_connected">Conectat</string>
|
<string name="rtp_state_connected">Conectat</string>
|
||||||
|
<string name="rtp_state_reconnecting">Reconectare</string>
|
||||||
<string name="rtp_state_accepting_call">Se acceptă apelul</string>
|
<string name="rtp_state_accepting_call">Se acceptă apelul</string>
|
||||||
<string name="rtp_state_ending_call">Se încheie apelul</string>
|
<string name="rtp_state_ending_call">Se încheie apelul</string>
|
||||||
<string name="answer_call">Răspunde</string>
|
<string name="answer_call">Răspunde</string>
|
||||||
|
@ -930,6 +933,8 @@
|
||||||
<string name="hang_up">Închide</string>
|
<string name="hang_up">Închide</string>
|
||||||
<string name="ongoing_call">Apel în curs</string>
|
<string name="ongoing_call">Apel în curs</string>
|
||||||
<string name="ongoing_video_call">Apel video în curs</string>
|
<string name="ongoing_video_call">Apel video în curs</string>
|
||||||
|
<string name="reconnecting_call">Reconectare apel</string>
|
||||||
|
<string name="reconnecting_video_call">Reconectare apel video</string>
|
||||||
<string name="disable_tor_to_make_call">Dezactivați Tor pentru a face apeluri</string>
|
<string name="disable_tor_to_make_call">Dezactivați Tor pentru a face apeluri</string>
|
||||||
<string name="incoming_call">Apel primit</string>
|
<string name="incoming_call">Apel primit</string>
|
||||||
<string name="incoming_call_duration">Apel primit · %s</string>
|
<string name="incoming_call_duration">Apel primit · %s</string>
|
||||||
|
@ -981,4 +986,7 @@
|
||||||
<string name="backup_started_message">Se creează copia de siguranță. Veți primi o notificare când acesta este completă.</string>
|
<string name="backup_started_message">Se creează copia de siguranță. Veți primi o notificare când acesta este completă.</string>
|
||||||
<string name="unable_to_enable_video">Nu s-a putut activa camera video.</string>
|
<string name="unable_to_enable_video">Nu s-a putut activa camera video.</string>
|
||||||
<string name="plain_text_document">Document text</string>
|
<string name="plain_text_document">Document text</string>
|
||||||
</resources>
|
<string name="account_registrations_are_not_supported">Nu este posibilă înregistrarea unui cont</string>
|
||||||
|
<string name="no_xmpp_adddress_found">Nu a fost găsită o adresă XMPP</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
|
|
|
@ -617,6 +617,8 @@
|
||||||
<string name="pref_clean_private_storage_summary">清除保存私密文件的存储 (可以从服务器上重新下载)</string>
|
<string name="pref_clean_private_storage_summary">清除保存私密文件的存储 (可以从服务器上重新下载)</string>
|
||||||
<string name="i_followed_this_link_from_a_trusted_source">此链接的源头是可信的</string>
|
<string name="i_followed_this_link_from_a_trusted_source">此链接的源头是可信的</string>
|
||||||
<string name="verifying_omemo_keys_trusted_source">点击链接后将会开始校验%1$s的OMEMO密钥。只有%2$s发布的链接才是安全的。</string>
|
<string name="verifying_omemo_keys_trusted_source">点击链接后将会开始校验%1$s的OMEMO密钥。只有%2$s发布的链接才是安全的。</string>
|
||||||
|
<string name="verifying_omemo_keys_trusted_source_account">您将验证您自己帐户的 OMEMO 密钥。只有当您从可信的来源跟踪此链接时,这才是安全的。“可信”指的是此链接只可能是你在来源中发布的。</string>
|
||||||
|
<string name="continue_btn">继续</string>
|
||||||
<string name="verify_omemo_keys">校验OMEMO密钥</string>
|
<string name="verify_omemo_keys">校验OMEMO密钥</string>
|
||||||
<string name="show_inactive_devices">显示不活跃设备</string>
|
<string name="show_inactive_devices">显示不活跃设备</string>
|
||||||
<string name="hide_inactive_devices">隐藏不活跃设备</string>
|
<string name="hide_inactive_devices">隐藏不活跃设备</string>
|
||||||
|
@ -893,6 +895,7 @@
|
||||||
<string name="rtp_state_incoming_video_call">视频来电</string>
|
<string name="rtp_state_incoming_video_call">视频来电</string>
|
||||||
<string name="rtp_state_connecting">正在连接</string>
|
<string name="rtp_state_connecting">正在连接</string>
|
||||||
<string name="rtp_state_connected">已连接</string>
|
<string name="rtp_state_connected">已连接</string>
|
||||||
|
<string name="rtp_state_reconnecting">重新连接</string>
|
||||||
<string name="rtp_state_accepting_call">正在接通来电</string>
|
<string name="rtp_state_accepting_call">正在接通来电</string>
|
||||||
<string name="rtp_state_ending_call">正在结束来电</string>
|
<string name="rtp_state_ending_call">正在结束来电</string>
|
||||||
<string name="answer_call">应答</string>
|
<string name="answer_call">应答</string>
|
||||||
|
@ -908,6 +911,8 @@
|
||||||
<string name="hang_up">挂断</string>
|
<string name="hang_up">挂断</string>
|
||||||
<string name="ongoing_call">正在进行的通话</string>
|
<string name="ongoing_call">正在进行的通话</string>
|
||||||
<string name="ongoing_video_call">正在进行的视频通话</string>
|
<string name="ongoing_video_call">正在进行的视频通话</string>
|
||||||
|
<string name="reconnecting_call">重连通话</string>
|
||||||
|
<string name="reconnecting_video_call">重连视频通话</string>
|
||||||
<string name="disable_tor_to_make_call">禁用Tor以拨打电话</string>
|
<string name="disable_tor_to_make_call">禁用Tor以拨打电话</string>
|
||||||
<string name="incoming_call">来电</string>
|
<string name="incoming_call">来电</string>
|
||||||
<string name="incoming_call_duration">来电 · %s</string>
|
<string name="incoming_call_duration">来电 · %s</string>
|
||||||
|
@ -955,4 +960,7 @@
|
||||||
<string name="backup_started_message">已启动备份。一旦完成,你会收到通知。</string>
|
<string name="backup_started_message">已启动备份。一旦完成,你会收到通知。</string>
|
||||||
<string name="unable_to_enable_video">无法启用视频</string>
|
<string name="unable_to_enable_video">无法启用视频</string>
|
||||||
<string name="plain_text_document">纯文本文档</string>
|
<string name="plain_text_document">纯文本文档</string>
|
||||||
</resources>
|
<string name="account_registrations_are_not_supported">不支持注册账户</string>
|
||||||
|
<string name="no_xmpp_adddress_found">未找到 XMPP 地址</string>
|
||||||
|
|
||||||
|
</resources>
|
||||||
|
|