mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 11:39:42 +01:00
Compare commits
150 Commits
v21.1.0rc2
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
0eebf8b2d0 | ||
|
95f8b08a19 | ||
|
2a7359c1e9 | ||
|
86bfaa8657 | ||
|
8c066eb521 | ||
|
9e08af3306 | ||
|
95f7a1e312 | ||
|
73271018f5 | ||
|
7111109ac0 | ||
|
e3c83823e6 | ||
|
3b11a90aac | ||
|
bc29c67269 | ||
|
4a93551ef9 | ||
|
d0ff4320a8 | ||
|
20b70c2728 | ||
|
6aab2e27cd | ||
|
a34ad80a90 | ||
|
5a22f27b64 | ||
|
776ba77c3a | ||
|
3cf01d9123 | ||
|
2ab9f168d2 | ||
|
038a30dcca | ||
|
ddc40537d5 | ||
|
bd23a05a88 | ||
|
76f1e1c005 | ||
|
40c9816827 | ||
|
a7f742931e | ||
|
a361240692 | ||
|
fe6897baf4 | ||
|
18578521cf | ||
|
4b71c50fb2 | ||
|
7ec7904691 | ||
|
34992438ed | ||
|
af721510e1 | ||
|
393c70f6e6 | ||
|
d28bcbd5e9 | ||
|
03e3737e69 | ||
|
a5fe9ec133 | ||
|
6633ae223c | ||
|
1dd9d6ba7b | ||
|
1a00678e46 | ||
|
77944b4367 | ||
|
9b889ef751 | ||
|
ccecb9005c | ||
|
ccb700376a | ||
|
f574359432 | ||
|
ba690c0615 | ||
|
ccf955f43e | ||
|
856b1ebf8c | ||
|
b1448e13b5 | ||
|
224eb3d0e8 | ||
|
4158628475 | ||
|
e88bd1caf7 | ||
|
27ba2acf86 | ||
|
4efba2b953 | ||
|
f64e9e7c66 | ||
|
6cd8718ac8 | ||
|
eb72c70520 | ||
|
ca06333c48 | ||
|
325ffc4443 | ||
|
89bddbd8fd | ||
|
de62d2776c | ||
|
9aa1622929 | ||
|
9dbb7ab703 | ||
|
8307a9a0df | ||
|
a354ca197e | ||
|
12cb0825ca | ||
|
cc8e241213 | ||
|
14fd9b4af8 | ||
|
9fe39603c3 | ||
|
707371603d | ||
|
632a26d3cb | ||
|
262205b615 | ||
|
131723317b | ||
|
e299023ef1 | ||
|
92e1028354 | ||
|
ebc41c33d0 | ||
|
b11e5a474c | ||
|
54ac15d089 | ||
|
b3c7990c88 | ||
|
88ed309220 | ||
|
5855ec7b38 | ||
|
6f4cc903f8 | ||
|
c01e058ff9 | ||
|
a559fd5ea6 | ||
|
d33081c387 | ||
|
b2e9429cb5 | ||
|
073a0462d9 | ||
|
c8b33a380a | ||
|
78a88a9ce5 | ||
|
1ccc3ebb94 | ||
|
89d51837b7 | ||
|
6ec4e05cb1 | ||
|
87f8272b10 | ||
|
05815ebeae | ||
|
6d4e5d2774 | ||
|
f0cbe5113f | ||
|
4f8584bc75 | ||
|
652dd5033a | ||
|
6e48b86940 | ||
|
18b75233a5 | ||
|
b9e9d0ccd1 | ||
|
c3ebeebcb0 | ||
|
c5c129b706 | ||
|
96541b7ad8 | ||
|
e689e4f7f8 | ||
|
ebe374c9cb | ||
|
350bba1b95 | ||
|
29d5293587 | ||
|
eb75f488c5 | ||
|
c349f120dc | ||
|
6445633c94 | ||
|
ac170f0803 | ||
|
1fe356eee2 | ||
|
b35bfc1ee7 | ||
|
25639702f6 | ||
|
6c5347ef72 | ||
|
3f512c7b54 | ||
|
a943dc1070 | ||
|
2e41b27dc8 | ||
|
38482b8bb5 | ||
|
62041d2581 | ||
|
7548ce58b5 | ||
|
799d108708 | ||
|
4803712ca3 | ||
|
8db97fe0d9 | ||
|
635624006d | ||
|
d3acf3078b | ||
|
85a7bd010b | ||
|
e7d3af1a21 | ||
|
6a8cb99aeb | ||
|
29054d9062 | ||
|
ccd33dd578 | ||
|
39ac9974b6 | ||
|
ba430c0c3c | ||
|
85d9d2cb77 | ||
|
ed2903a139 | ||
|
7239af603d | ||
|
1718b1faa6 | ||
|
d5c8d4743d | ||
|
2af86c7bcc | ||
|
ff408cd988 | ||
|
9289f3662d | ||
|
6aed879d57 | ||
|
aaf8000a31 | ||
|
7f863e543a | ||
|
6f9522456f | ||
|
29523cf0da | ||
|
71c8719f88 | ||
|
2afa9ca80a |
@ -1,4 +1,4 @@
|
|||||||
FROM ubuntu:noble@sha256:6015f66923d7afbc53558d7ccffd325d43b4e249f41a6e93eef074c9505d2233
|
FROM ubuntu:noble@sha256:b59d21599a2b151e23eea5f6602f4af4d7d31c4e236d22bf0b62b86d2e386b8f
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
ENV ANDROID_HOME=/usr/lib/android-sdk
|
ENV ANDROID_HOME=/usr/lib/android-sdk
|
||||||
|
10
.drone.yml
10
.drone.yml
@ -8,7 +8,7 @@ name: generic
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: generic
|
- name: generic
|
||||||
image: ghcr.io/nextcloud/continuous-integration-android8:3
|
image: ghcr.io/nextcloud/continuous-integration-android8:4
|
||||||
commands:
|
commands:
|
||||||
- ./gradlew --console=plain assembleGeneric
|
- ./gradlew --console=plain assembleGeneric
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ name: gplay
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: gplay
|
- name: gplay
|
||||||
image: ghcr.io/nextcloud/continuous-integration-android8:3
|
image: ghcr.io/nextcloud/continuous-integration-android8:4
|
||||||
commands:
|
commands:
|
||||||
- ./gradlew --console=plain assembleGplay
|
- ./gradlew --console=plain assembleGplay
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ name: tests
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: all
|
- name: all
|
||||||
image: ghcr.io/nextcloud/continuous-integration-android8:3
|
image: ghcr.io/nextcloud/continuous-integration-android8:4
|
||||||
privileged: true
|
privileged: true
|
||||||
commands:
|
commands:
|
||||||
- emulator -avd android -no-snapshot -gpu swiftshader_indirect -no-window -no-audio -skin 500x833 &
|
- emulator -avd android -no-snapshot -gpu swiftshader_indirect -no-window -no-audio -skin 500x833 &
|
||||||
@ -81,4 +81,6 @@ trigger:
|
|||||||
- pull_request
|
- pull_request
|
||||||
---
|
---
|
||||||
kind: signature
|
kind: signature
|
||||||
hmac: cdce3f7eea46ef85c0223f62f66d1fe53d7dad007ef095c9f70fa063450d8c75
|
hmac: cf0c19e54fa45d1ee226f5f05202a32329b90aaf46711ea073c566a4c4a8a6c5
|
||||||
|
|
||||||
|
...
|
||||||
|
2
.github/workflows/analysis.yml
vendored
2
.github/workflows/analysis.yml
vendored
@ -29,7 +29,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Disabled on forks
|
- name: Disabled on forks
|
||||||
if: ${{ github.event.pull_request.head.repo.full_name != github.repository }}
|
if: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name != github.repository }}
|
||||||
run: |
|
run: |
|
||||||
echo 'Can not analyze PRs from forks'
|
echo 'Can not analyze PRs from forks'
|
||||||
exit 1
|
exit 1
|
||||||
|
2
.github/workflows/assembleFlavors.yml
vendored
2
.github/workflows/assembleFlavors.yml
vendored
@ -34,7 +34,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Gradle validate
|
- name: Gradle validate
|
||||||
uses: gradle/actions/wrapper-validation@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
|
uses: gradle/actions/wrapper-validation@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
|
||||||
|
|
||||||
- name: Build ${{ matrix.flavor }}
|
- name: Build ${{ matrix.flavor }}
|
||||||
run: |
|
run: |
|
||||||
|
4
.github/workflows/codeql.yml
vendored
4
.github/workflows/codeql.yml
vendored
@ -43,7 +43,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
swap-size-gb: 10
|
swap-size-gb: 10
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
uses: github/codeql-action/init@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
- name: Set up JDK 17
|
- name: Set up JDK 17
|
||||||
@ -57,4 +57,4 @@ jobs:
|
|||||||
echo "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > "$HOME/.gradle/gradle.properties"
|
echo "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > "$HOME/.gradle/gradle.properties"
|
||||||
./gradlew assembleDebug
|
./gradlew assembleDebug
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
uses: github/codeql-action/analyze@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
|
||||||
|
2
.github/workflows/pr-feedback.yml
vendored
2
.github/workflows/pr-feedback.yml
vendored
@ -36,7 +36,7 @@ jobs:
|
|||||||
blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -)
|
blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -)
|
||||||
echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT"
|
echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- uses: nextcloud/pr-feedback-action@1883b38a033fb16f576875e0cf45f98b857655c4 # main
|
- uses: nextcloud/pr-feedback-action@f0cab224dea8e1f282f9451de322f323c78fc7a5 # main
|
||||||
with:
|
with:
|
||||||
feedback-message: |
|
feedback-message: |
|
||||||
Hello there,
|
Hello there,
|
||||||
|
4
.github/workflows/scorecard.yml
vendored
4
.github/workflows/scorecard.yml
vendored
@ -34,7 +34,7 @@ jobs:
|
|||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: "Run analysis"
|
- name: "Run analysis"
|
||||||
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
|
uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2
|
||||||
with:
|
with:
|
||||||
results_file: results.sarif
|
results_file: results.sarif
|
||||||
results_format: sarif
|
results_format: sarif
|
||||||
@ -42,6 +42,6 @@ jobs:
|
|||||||
|
|
||||||
# Upload the results to GitHub's code scanning dashboard.
|
# Upload the results to GitHub's code scanning dashboard.
|
||||||
- name: "Upload to code-scanning"
|
- name: "Upload to code-scanning"
|
||||||
uses: github/codeql-action/upload-sarif@ff0a06e83cb2de871e5a09832bc6a81e7276941f # v3.28.18
|
uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
2
.github/workflows/unit-tests.yml
vendored
2
.github/workflows/unit-tests.yml
vendored
@ -33,7 +33,7 @@ jobs:
|
|||||||
java-version: 17
|
java-version: 17
|
||||||
|
|
||||||
- name: Setup Gradle
|
- name: Setup Gradle
|
||||||
uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1
|
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
|
||||||
|
|
||||||
- name: Run unit tests with coverage
|
- name: Run unit tests with coverage
|
||||||
run: ./gradlew testGplayDebugUnit
|
run: ./gradlew testGplayDebugUnit
|
||||||
|
30
CHANGELOG.md
30
CHANGELOG.md
@ -9,6 +9,36 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
Types of changes can be: Added/Changed/Deprecated/Removed/Fixed/Security
|
Types of changes can be: Added/Changed/Deprecated/Removed/Fixed/Security
|
||||||
|
|
||||||
|
## [21.1.0] - 2025-06-05
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Allow adding participants to one-to-one chats creating a new conversation
|
||||||
|
- Handling of event conversations
|
||||||
|
- Show info about participant (organization, role, timezone, ...) in 1:1 conversation info screen
|
||||||
|
- Added gallery option in chat attachment menu (access photos and videos with one click without giving permissions)
|
||||||
|
- Add self-test button for push notifications in diagnosis screen
|
||||||
|
- Edit checkbox in chat messages
|
||||||
|
- Team mentions in chat
|
||||||
|
- Add option to mark a conversation as sensitive
|
||||||
|
- Allow bluetooth headset to be discovered and used during a call (@gavine99)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Design of participants grid in call
|
||||||
|
- Improve subline in conversations screen when last message is attachment
|
||||||
|
- Improve message search
|
||||||
|
- In search window, show messages at last
|
||||||
|
- Switch video capture for calls between 4:3 and 16:9 ratio depending on portrait/ landscape mode
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Crashes
|
||||||
|
- Videos in videocall lost after app comes back to foreground
|
||||||
|
- Open conversations not being shown in search
|
||||||
|
- Minor bugs (@MmAaXx500)
|
||||||
|
|
||||||
|
Minimum: NC 17 Server, Android 8.0 Oreo
|
||||||
|
|
||||||
|
For a full list, please see https://github.com/nextcloud/talk-android/milestone/94?closed=1
|
||||||
|
|
||||||
## [21.0.1] - 2025-04-15
|
## [21.0.1] - 2025-04-15
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
@ -15,7 +15,7 @@ import com.github.spotbugs.snom.SpotBugsTask
|
|||||||
plugins {
|
plugins {
|
||||||
id "org.jetbrains.kotlin.plugin.compose" version "2.1.21"
|
id "org.jetbrains.kotlin.plugin.compose" version "2.1.21"
|
||||||
id "org.jetbrains.kotlin.kapt"
|
id "org.jetbrains.kotlin.kapt"
|
||||||
id 'com.google.devtools.ksp' version '2.1.21-2.0.1'
|
id 'com.google.devtools.ksp' version '2.1.21-2.0.2'
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
@ -39,8 +39,8 @@ android {
|
|||||||
|
|
||||||
// mayor.minor.hotfix.increment (for increment: 01-50=Alpha / 51-89=RC / 90-99=stable)
|
// mayor.minor.hotfix.increment (for increment: 01-50=Alpha / 51-89=RC / 90-99=stable)
|
||||||
// xx .xxx .xx .xx
|
// xx .xxx .xx .xx
|
||||||
versionCode 210010052
|
versionCode 220000006
|
||||||
versionName "21.1.0 RC2"
|
versionName "22.0.0 Alpha 06"
|
||||||
|
|
||||||
flavorDimensions "default"
|
flavorDimensions "default"
|
||||||
renderscriptTargetApi 19
|
renderscriptTargetApi 19
|
||||||
@ -161,7 +161,7 @@ ext {
|
|||||||
materialDialogsVersion = "3.3.0"
|
materialDialogsVersion = "3.3.0"
|
||||||
parcelerVersion = "1.1.13"
|
parcelerVersion = "1.1.13"
|
||||||
prismVersion = "2.0.0"
|
prismVersion = "2.0.0"
|
||||||
retrofit2Version = "2.11.0"
|
retrofit2Version = "2.12.0"
|
||||||
roomVersion = "2.7.1"
|
roomVersion = "2.7.1"
|
||||||
workVersion = "2.9.1"
|
workVersion = "2.9.1"
|
||||||
espressoVersion = "3.6.1"
|
espressoVersion = "3.6.1"
|
||||||
@ -180,20 +180,20 @@ configurations.configureEach {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.14.0'
|
spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.14.0'
|
||||||
spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.6.9'
|
spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.6.10'
|
||||||
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.23.8")
|
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.23.8")
|
||||||
|
|
||||||
implementation("androidx.compose.runtime:runtime:1.7.8")
|
implementation("androidx.compose.runtime:runtime:1.7.8")
|
||||||
implementation 'androidx.preference:preference-ktx:1.2.1'
|
implementation 'androidx.preference:preference-ktx:1.2.1'
|
||||||
implementation 'androidx.datastore:datastore-core:1.1.6'
|
implementation 'androidx.datastore:datastore-core:1.1.7'
|
||||||
implementation 'androidx.datastore:datastore-preferences:1.1.6'
|
implementation 'androidx.datastore:datastore-preferences:1.1.7'
|
||||||
implementation 'androidx.test.ext:junit-ktx:1.2.1'
|
implementation 'androidx.test.ext:junit-ktx:1.2.1'
|
||||||
|
|
||||||
implementation fileTree(include: ['*'], dir: 'libs')
|
implementation fileTree(include: ['*'], dir: 'libs')
|
||||||
|
|
||||||
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1"
|
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1"
|
||||||
|
|
||||||
implementation 'androidx.appcompat:appcompat:1.7.0'
|
implementation 'androidx.appcompat:appcompat:1.7.1'
|
||||||
implementation 'com.google.android.material:material:1.12.0'
|
implementation 'com.google.android.material:material:1.12.0'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
implementation 'androidx.constraintlayout:constraintlayout:2.2.1'
|
||||||
implementation "com.vanniktech:emoji-google:0.21.0"
|
implementation "com.vanniktech:emoji-google:0.21.0"
|
||||||
@ -322,14 +322,14 @@ dependencies {
|
|||||||
debugImplementation("androidx.compose.ui:ui-test-manifest")
|
debugImplementation("androidx.compose.ui:ui-test-manifest")
|
||||||
|
|
||||||
testImplementation 'junit:junit:4.13.2'
|
testImplementation 'junit:junit:4.13.2'
|
||||||
testImplementation 'org.mockito:mockito-core:5.17.0'
|
testImplementation 'org.mockito:mockito-core:5.18.0'
|
||||||
testImplementation 'androidx.arch.core:core-testing:2.2.0'
|
testImplementation 'androidx.arch.core:core-testing:2.2.0'
|
||||||
|
|
||||||
androidTestImplementation "androidx.test:core:1.6.1"
|
androidTestImplementation "androidx.test:core:1.6.1"
|
||||||
|
|
||||||
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2"
|
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2"
|
||||||
androidTestImplementation 'androidx.test:core-ktx:1.6.1'
|
androidTestImplementation 'androidx.test:core-ktx:1.6.1'
|
||||||
androidTestImplementation 'org.mockito:mockito-android:5.17.0'
|
androidTestImplementation 'org.mockito:mockito-android:5.18.0'
|
||||||
androidTestImplementation "androidx.work:work-testing:${workVersion}"
|
androidTestImplementation "androidx.work:work-testing:${workVersion}"
|
||||||
// Espresso core
|
// Espresso core
|
||||||
androidTestImplementation ("androidx.test.espresso:espresso-core:$espressoVersion", {
|
androidTestImplementation ("androidx.test.espresso:espresso-core:$espressoVersion", {
|
||||||
@ -347,7 +347,7 @@ dependencies {
|
|||||||
testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
|
testImplementation "org.mockito.kotlin:mockito-kotlin:$mockitoKotlinVersion"
|
||||||
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"
|
testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"
|
||||||
|
|
||||||
testImplementation 'org.junit.vintage:junit-vintage-engine:5.12.2'
|
testImplementation 'org.junit.vintage:junit-vintage-engine:5.13.1'
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.register('installGitHooks', Copy) {
|
tasks.register('installGitHooks', Copy) {
|
||||||
|
@ -0,0 +1,731 @@
|
|||||||
|
{
|
||||||
|
"formatVersion": 1,
|
||||||
|
"database": {
|
||||||
|
"version": 16,
|
||||||
|
"identityHash": "bbf526d5c78a99eb951635cc46f4c59f",
|
||||||
|
"entities": [
|
||||||
|
{
|
||||||
|
"tableName": "User",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `userId` TEXT, `username` TEXT, `baseUrl` TEXT, `token` TEXT, `displayName` TEXT, `pushConfigurationState` TEXT, `capabilities` TEXT, `serverVersion` TEXT DEFAULT '', `clientCertificate` TEXT, `externalSignalingServer` TEXT, `current` INTEGER NOT NULL, `scheduledForDeletion` INTEGER NOT NULL)",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "id",
|
||||||
|
"columnName": "id",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "userId",
|
||||||
|
"columnName": "userId",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "username",
|
||||||
|
"columnName": "username",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "baseUrl",
|
||||||
|
"columnName": "baseUrl",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "token",
|
||||||
|
"columnName": "token",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "displayName",
|
||||||
|
"columnName": "displayName",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "pushConfigurationState",
|
||||||
|
"columnName": "pushConfigurationState",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "capabilities",
|
||||||
|
"columnName": "capabilities",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "serverVersion",
|
||||||
|
"columnName": "serverVersion",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"defaultValue": "''"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "clientCertificate",
|
||||||
|
"columnName": "clientCertificate",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "externalSignalingServer",
|
||||||
|
"columnName": "externalSignalingServer",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "current",
|
||||||
|
"columnName": "current",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "scheduledForDeletion",
|
||||||
|
"columnName": "scheduledForDeletion",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": true,
|
||||||
|
"columnNames": [
|
||||||
|
"id"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "ArbitraryStorage",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountIdentifier` INTEGER NOT NULL, `key` TEXT NOT NULL, `object` TEXT, `value` TEXT, PRIMARY KEY(`accountIdentifier`, `key`))",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "accountIdentifier",
|
||||||
|
"columnName": "accountIdentifier",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "key",
|
||||||
|
"columnName": "key",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "storageObject",
|
||||||
|
"columnName": "object",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "value",
|
||||||
|
"columnName": "value",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": false,
|
||||||
|
"columnNames": [
|
||||||
|
"accountIdentifier",
|
||||||
|
"key"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "Conversations",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`internalId` TEXT NOT NULL, `accountId` INTEGER NOT NULL, `token` TEXT NOT NULL, `displayName` TEXT NOT NULL, `actorId` TEXT NOT NULL, `actorType` TEXT NOT NULL, `avatarVersion` TEXT NOT NULL, `callFlag` INTEGER NOT NULL, `callRecording` INTEGER NOT NULL, `callStartTime` INTEGER NOT NULL, `canDeleteConversation` INTEGER NOT NULL, `canLeaveConversation` INTEGER NOT NULL, `canStartCall` INTEGER NOT NULL, `description` TEXT NOT NULL, `hasCall` INTEGER NOT NULL, `hasPassword` INTEGER NOT NULL, `isCustomAvatar` INTEGER NOT NULL, `isFavorite` INTEGER NOT NULL, `lastActivity` INTEGER NOT NULL, `lastCommonReadMessage` INTEGER NOT NULL, `lastMessage` TEXT, `lastPing` INTEGER NOT NULL, `lastReadMessage` INTEGER NOT NULL, `lobbyState` TEXT NOT NULL, `lobbyTimer` INTEGER NOT NULL, `messageExpiration` INTEGER NOT NULL, `name` TEXT NOT NULL, `notificationCalls` INTEGER NOT NULL, `notificationLevel` TEXT NOT NULL, `objectType` TEXT NOT NULL, `objectId` TEXT NOT NULL, `participantType` TEXT NOT NULL, `permissions` INTEGER NOT NULL, `readOnly` TEXT NOT NULL, `recordingConsent` INTEGER NOT NULL, `remoteServer` TEXT, `remoteToken` TEXT, `sessionId` TEXT NOT NULL, `status` TEXT, `statusClearAt` INTEGER, `statusIcon` TEXT, `statusMessage` TEXT, `type` TEXT NOT NULL, `unreadMention` INTEGER NOT NULL, `unreadMentionDirect` INTEGER NOT NULL, `unreadMessages` INTEGER NOT NULL, `hasArchived` INTEGER NOT NULL, `hasSensitive` INTEGER NOT NULL, `hasImportant` INTEGER NOT NULL, PRIMARY KEY(`internalId`), FOREIGN KEY(`accountId`) REFERENCES `User`(`id`) ON UPDATE CASCADE ON DELETE CASCADE )",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "internalId",
|
||||||
|
"columnName": "internalId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "accountId",
|
||||||
|
"columnName": "accountId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "token",
|
||||||
|
"columnName": "token",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "displayName",
|
||||||
|
"columnName": "displayName",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorId",
|
||||||
|
"columnName": "actorId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorType",
|
||||||
|
"columnName": "actorType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "avatarVersion",
|
||||||
|
"columnName": "avatarVersion",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "callFlag",
|
||||||
|
"columnName": "callFlag",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "callRecording",
|
||||||
|
"columnName": "callRecording",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "callStartTime",
|
||||||
|
"columnName": "callStartTime",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "canDeleteConversation",
|
||||||
|
"columnName": "canDeleteConversation",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "canLeaveConversation",
|
||||||
|
"columnName": "canLeaveConversation",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "canStartCall",
|
||||||
|
"columnName": "canStartCall",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "description",
|
||||||
|
"columnName": "description",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasCall",
|
||||||
|
"columnName": "hasCall",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasPassword",
|
||||||
|
"columnName": "hasPassword",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasCustomAvatar",
|
||||||
|
"columnName": "isCustomAvatar",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "favorite",
|
||||||
|
"columnName": "isFavorite",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastActivity",
|
||||||
|
"columnName": "lastActivity",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastCommonReadMessage",
|
||||||
|
"columnName": "lastCommonReadMessage",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastMessage",
|
||||||
|
"columnName": "lastMessage",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastPing",
|
||||||
|
"columnName": "lastPing",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastReadMessage",
|
||||||
|
"columnName": "lastReadMessage",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lobbyState",
|
||||||
|
"columnName": "lobbyState",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lobbyTimer",
|
||||||
|
"columnName": "lobbyTimer",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "messageExpiration",
|
||||||
|
"columnName": "messageExpiration",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "name",
|
||||||
|
"columnName": "name",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "notificationCalls",
|
||||||
|
"columnName": "notificationCalls",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "notificationLevel",
|
||||||
|
"columnName": "notificationLevel",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "objectType",
|
||||||
|
"columnName": "objectType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "objectId",
|
||||||
|
"columnName": "objectId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "participantType",
|
||||||
|
"columnName": "participantType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "permissions",
|
||||||
|
"columnName": "permissions",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "conversationReadOnlyState",
|
||||||
|
"columnName": "readOnly",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "recordingConsentRequired",
|
||||||
|
"columnName": "recordingConsent",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "remoteServer",
|
||||||
|
"columnName": "remoteServer",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "remoteToken",
|
||||||
|
"columnName": "remoteToken",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "sessionId",
|
||||||
|
"columnName": "sessionId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "status",
|
||||||
|
"columnName": "status",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "statusClearAt",
|
||||||
|
"columnName": "statusClearAt",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "statusIcon",
|
||||||
|
"columnName": "statusIcon",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "statusMessage",
|
||||||
|
"columnName": "statusMessage",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "type",
|
||||||
|
"columnName": "type",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "unreadMention",
|
||||||
|
"columnName": "unreadMention",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "unreadMentionDirect",
|
||||||
|
"columnName": "unreadMentionDirect",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "unreadMessages",
|
||||||
|
"columnName": "unreadMessages",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasArchived",
|
||||||
|
"columnName": "hasArchived",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasSensitive",
|
||||||
|
"columnName": "hasSensitive",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasImportant",
|
||||||
|
"columnName": "hasImportant",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": false,
|
||||||
|
"columnNames": [
|
||||||
|
"internalId"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [
|
||||||
|
{
|
||||||
|
"name": "index_Conversations_accountId",
|
||||||
|
"unique": false,
|
||||||
|
"columnNames": [
|
||||||
|
"accountId"
|
||||||
|
],
|
||||||
|
"orders": [],
|
||||||
|
"createSql": "CREATE INDEX IF NOT EXISTS `index_Conversations_accountId` ON `${TABLE_NAME}` (`accountId`)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"foreignKeys": [
|
||||||
|
{
|
||||||
|
"table": "User",
|
||||||
|
"onDelete": "CASCADE",
|
||||||
|
"onUpdate": "CASCADE",
|
||||||
|
"columns": [
|
||||||
|
"accountId"
|
||||||
|
],
|
||||||
|
"referencedColumns": [
|
||||||
|
"id"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "ChatMessages",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`internalId` TEXT NOT NULL, `accountId` INTEGER NOT NULL, `token` TEXT NOT NULL, `id` INTEGER NOT NULL, `internalConversationId` TEXT NOT NULL, `actorDisplayName` TEXT NOT NULL, `message` TEXT NOT NULL, `actorId` TEXT NOT NULL, `actorType` TEXT NOT NULL, `deleted` INTEGER NOT NULL, `expirationTimestamp` INTEGER NOT NULL, `isReplyable` INTEGER NOT NULL, `isTemporary` INTEGER NOT NULL, `lastEditActorDisplayName` TEXT, `lastEditActorId` TEXT, `lastEditActorType` TEXT, `lastEditTimestamp` INTEGER, `markdown` INTEGER, `messageParameters` TEXT, `messageType` TEXT NOT NULL, `parent` INTEGER, `reactions` TEXT, `reactionsSelf` TEXT, `referenceId` TEXT, `sendingFailed` INTEGER NOT NULL, `silent` INTEGER NOT NULL, `systemMessage` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, PRIMARY KEY(`internalId`), FOREIGN KEY(`internalConversationId`) REFERENCES `Conversations`(`internalId`) ON UPDATE CASCADE ON DELETE CASCADE )",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "internalId",
|
||||||
|
"columnName": "internalId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "accountId",
|
||||||
|
"columnName": "accountId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "token",
|
||||||
|
"columnName": "token",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "id",
|
||||||
|
"columnName": "id",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "internalConversationId",
|
||||||
|
"columnName": "internalConversationId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorDisplayName",
|
||||||
|
"columnName": "actorDisplayName",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "message",
|
||||||
|
"columnName": "message",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorId",
|
||||||
|
"columnName": "actorId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorType",
|
||||||
|
"columnName": "actorType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "deleted",
|
||||||
|
"columnName": "deleted",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "expirationTimestamp",
|
||||||
|
"columnName": "expirationTimestamp",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "replyable",
|
||||||
|
"columnName": "isReplyable",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "isTemporary",
|
||||||
|
"columnName": "isTemporary",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastEditActorDisplayName",
|
||||||
|
"columnName": "lastEditActorDisplayName",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastEditActorId",
|
||||||
|
"columnName": "lastEditActorId",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastEditActorType",
|
||||||
|
"columnName": "lastEditActorType",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastEditTimestamp",
|
||||||
|
"columnName": "lastEditTimestamp",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "renderMarkdown",
|
||||||
|
"columnName": "markdown",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "messageParameters",
|
||||||
|
"columnName": "messageParameters",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "messageType",
|
||||||
|
"columnName": "messageType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "parentMessageId",
|
||||||
|
"columnName": "parent",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "reactions",
|
||||||
|
"columnName": "reactions",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "reactionsSelf",
|
||||||
|
"columnName": "reactionsSelf",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "referenceId",
|
||||||
|
"columnName": "referenceId",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "sendingFailed",
|
||||||
|
"columnName": "sendingFailed",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "silent",
|
||||||
|
"columnName": "silent",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "systemMessageType",
|
||||||
|
"columnName": "systemMessage",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "timestamp",
|
||||||
|
"columnName": "timestamp",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": false,
|
||||||
|
"columnNames": [
|
||||||
|
"internalId"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [
|
||||||
|
{
|
||||||
|
"name": "index_ChatMessages_internalId",
|
||||||
|
"unique": true,
|
||||||
|
"columnNames": [
|
||||||
|
"internalId"
|
||||||
|
],
|
||||||
|
"orders": [],
|
||||||
|
"createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_ChatMessages_internalId` ON `${TABLE_NAME}` (`internalId`)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "index_ChatMessages_internalConversationId",
|
||||||
|
"unique": false,
|
||||||
|
"columnNames": [
|
||||||
|
"internalConversationId"
|
||||||
|
],
|
||||||
|
"orders": [],
|
||||||
|
"createSql": "CREATE INDEX IF NOT EXISTS `index_ChatMessages_internalConversationId` ON `${TABLE_NAME}` (`internalConversationId`)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"foreignKeys": [
|
||||||
|
{
|
||||||
|
"table": "Conversations",
|
||||||
|
"onDelete": "CASCADE",
|
||||||
|
"onUpdate": "CASCADE",
|
||||||
|
"columns": [
|
||||||
|
"internalConversationId"
|
||||||
|
],
|
||||||
|
"referencedColumns": [
|
||||||
|
"internalId"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "ChatBlocks",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `internalConversationId` TEXT NOT NULL, `accountId` INTEGER, `token` TEXT, `oldestMessageId` INTEGER NOT NULL, `newestMessageId` INTEGER NOT NULL, `hasHistory` INTEGER NOT NULL, FOREIGN KEY(`internalConversationId`) REFERENCES `Conversations`(`internalId`) ON UPDATE CASCADE ON DELETE CASCADE )",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "id",
|
||||||
|
"columnName": "id",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "internalConversationId",
|
||||||
|
"columnName": "internalConversationId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "accountId",
|
||||||
|
"columnName": "accountId",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "token",
|
||||||
|
"columnName": "token",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "oldestMessageId",
|
||||||
|
"columnName": "oldestMessageId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "newestMessageId",
|
||||||
|
"columnName": "newestMessageId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasHistory",
|
||||||
|
"columnName": "hasHistory",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": true,
|
||||||
|
"columnNames": [
|
||||||
|
"id"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [
|
||||||
|
{
|
||||||
|
"name": "index_ChatBlocks_internalConversationId",
|
||||||
|
"unique": false,
|
||||||
|
"columnNames": [
|
||||||
|
"internalConversationId"
|
||||||
|
],
|
||||||
|
"orders": [],
|
||||||
|
"createSql": "CREATE INDEX IF NOT EXISTS `index_ChatBlocks_internalConversationId` ON `${TABLE_NAME}` (`internalConversationId`)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"foreignKeys": [
|
||||||
|
{
|
||||||
|
"table": "Conversations",
|
||||||
|
"onDelete": "CASCADE",
|
||||||
|
"onUpdate": "CASCADE",
|
||||||
|
"columns": [
|
||||||
|
"internalConversationId"
|
||||||
|
],
|
||||||
|
"referencedColumns": [
|
||||||
|
"internalId"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"setupQueries": [
|
||||||
|
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
|
||||||
|
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'bbf526d5c78a99eb951635cc46f4c59f')"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,730 @@
|
|||||||
|
{
|
||||||
|
"formatVersion": 1,
|
||||||
|
"database": {
|
||||||
|
"version": 17,
|
||||||
|
"identityHash": "5bc4247e179307faa995552da5d34324",
|
||||||
|
"entities": [
|
||||||
|
{
|
||||||
|
"tableName": "User",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `userId` TEXT, `username` TEXT, `baseUrl` TEXT, `token` TEXT, `displayName` TEXT, `pushConfigurationState` TEXT, `capabilities` TEXT, `serverVersion` TEXT DEFAULT '', `clientCertificate` TEXT, `externalSignalingServer` TEXT, `current` INTEGER NOT NULL, `scheduledForDeletion` INTEGER NOT NULL)",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "id",
|
||||||
|
"columnName": "id",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "userId",
|
||||||
|
"columnName": "userId",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "username",
|
||||||
|
"columnName": "username",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "baseUrl",
|
||||||
|
"columnName": "baseUrl",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "token",
|
||||||
|
"columnName": "token",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "displayName",
|
||||||
|
"columnName": "displayName",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "pushConfigurationState",
|
||||||
|
"columnName": "pushConfigurationState",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "capabilities",
|
||||||
|
"columnName": "capabilities",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "serverVersion",
|
||||||
|
"columnName": "serverVersion",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"defaultValue": "''"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "clientCertificate",
|
||||||
|
"columnName": "clientCertificate",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "externalSignalingServer",
|
||||||
|
"columnName": "externalSignalingServer",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "current",
|
||||||
|
"columnName": "current",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "scheduledForDeletion",
|
||||||
|
"columnName": "scheduledForDeletion",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": true,
|
||||||
|
"columnNames": [
|
||||||
|
"id"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "ArbitraryStorage",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`accountIdentifier` INTEGER NOT NULL, `key` TEXT NOT NULL, `object` TEXT, `value` TEXT, PRIMARY KEY(`accountIdentifier`, `key`))",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "accountIdentifier",
|
||||||
|
"columnName": "accountIdentifier",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "key",
|
||||||
|
"columnName": "key",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "storageObject",
|
||||||
|
"columnName": "object",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "value",
|
||||||
|
"columnName": "value",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": false,
|
||||||
|
"columnNames": [
|
||||||
|
"accountIdentifier",
|
||||||
|
"key"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "Conversations",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`internalId` TEXT NOT NULL, `accountId` INTEGER NOT NULL, `token` TEXT NOT NULL, `displayName` TEXT NOT NULL, `actorId` TEXT NOT NULL, `actorType` TEXT NOT NULL, `avatarVersion` TEXT NOT NULL, `callFlag` INTEGER NOT NULL, `callRecording` INTEGER NOT NULL, `callStartTime` INTEGER NOT NULL, `canDeleteConversation` INTEGER NOT NULL, `canLeaveConversation` INTEGER NOT NULL, `canStartCall` INTEGER NOT NULL, `description` TEXT NOT NULL, `hasCall` INTEGER NOT NULL, `hasPassword` INTEGER NOT NULL, `isCustomAvatar` INTEGER NOT NULL, `isFavorite` INTEGER NOT NULL, `lastActivity` INTEGER NOT NULL, `lastCommonReadMessage` INTEGER NOT NULL, `lastMessage` TEXT, `lastPing` INTEGER NOT NULL, `lastReadMessage` INTEGER NOT NULL, `lobbyState` TEXT NOT NULL, `lobbyTimer` INTEGER NOT NULL, `messageExpiration` INTEGER NOT NULL, `name` TEXT NOT NULL, `notificationCalls` INTEGER NOT NULL, `notificationLevel` TEXT NOT NULL, `objectType` TEXT NOT NULL, `objectId` TEXT NOT NULL, `participantType` TEXT NOT NULL, `permissions` INTEGER NOT NULL, `readOnly` TEXT NOT NULL, `recordingConsent` INTEGER NOT NULL, `remoteServer` TEXT, `remoteToken` TEXT, `sessionId` TEXT NOT NULL, `status` TEXT, `statusClearAt` INTEGER, `statusIcon` TEXT, `statusMessage` TEXT, `type` TEXT NOT NULL, `unreadMention` INTEGER NOT NULL, `unreadMentionDirect` INTEGER NOT NULL, `unreadMessages` INTEGER NOT NULL, `hasArchived` INTEGER NOT NULL, `hasSensitive` INTEGER NOT NULL, `hasImportant` INTEGER NOT NULL, PRIMARY KEY(`internalId`), FOREIGN KEY(`accountId`) REFERENCES `User`(`id`) ON UPDATE CASCADE ON DELETE CASCADE )",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "internalId",
|
||||||
|
"columnName": "internalId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "accountId",
|
||||||
|
"columnName": "accountId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "token",
|
||||||
|
"columnName": "token",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "displayName",
|
||||||
|
"columnName": "displayName",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorId",
|
||||||
|
"columnName": "actorId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorType",
|
||||||
|
"columnName": "actorType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "avatarVersion",
|
||||||
|
"columnName": "avatarVersion",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "callFlag",
|
||||||
|
"columnName": "callFlag",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "callRecording",
|
||||||
|
"columnName": "callRecording",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "callStartTime",
|
||||||
|
"columnName": "callStartTime",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "canDeleteConversation",
|
||||||
|
"columnName": "canDeleteConversation",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "canLeaveConversation",
|
||||||
|
"columnName": "canLeaveConversation",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "canStartCall",
|
||||||
|
"columnName": "canStartCall",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "description",
|
||||||
|
"columnName": "description",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasCall",
|
||||||
|
"columnName": "hasCall",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasPassword",
|
||||||
|
"columnName": "hasPassword",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasCustomAvatar",
|
||||||
|
"columnName": "isCustomAvatar",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "favorite",
|
||||||
|
"columnName": "isFavorite",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastActivity",
|
||||||
|
"columnName": "lastActivity",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastCommonReadMessage",
|
||||||
|
"columnName": "lastCommonReadMessage",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastMessage",
|
||||||
|
"columnName": "lastMessage",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastPing",
|
||||||
|
"columnName": "lastPing",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastReadMessage",
|
||||||
|
"columnName": "lastReadMessage",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lobbyState",
|
||||||
|
"columnName": "lobbyState",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lobbyTimer",
|
||||||
|
"columnName": "lobbyTimer",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "messageExpiration",
|
||||||
|
"columnName": "messageExpiration",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "name",
|
||||||
|
"columnName": "name",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "notificationCalls",
|
||||||
|
"columnName": "notificationCalls",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "notificationLevel",
|
||||||
|
"columnName": "notificationLevel",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "objectType",
|
||||||
|
"columnName": "objectType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "objectId",
|
||||||
|
"columnName": "objectId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "participantType",
|
||||||
|
"columnName": "participantType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "permissions",
|
||||||
|
"columnName": "permissions",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "conversationReadOnlyState",
|
||||||
|
"columnName": "readOnly",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "recordingConsentRequired",
|
||||||
|
"columnName": "recordingConsent",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "remoteServer",
|
||||||
|
"columnName": "remoteServer",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "remoteToken",
|
||||||
|
"columnName": "remoteToken",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "sessionId",
|
||||||
|
"columnName": "sessionId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "status",
|
||||||
|
"columnName": "status",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "statusClearAt",
|
||||||
|
"columnName": "statusClearAt",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "statusIcon",
|
||||||
|
"columnName": "statusIcon",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "statusMessage",
|
||||||
|
"columnName": "statusMessage",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "type",
|
||||||
|
"columnName": "type",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "unreadMention",
|
||||||
|
"columnName": "unreadMention",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "unreadMentionDirect",
|
||||||
|
"columnName": "unreadMentionDirect",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "unreadMessages",
|
||||||
|
"columnName": "unreadMessages",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasArchived",
|
||||||
|
"columnName": "hasArchived",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasSensitive",
|
||||||
|
"columnName": "hasSensitive",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasImportant",
|
||||||
|
"columnName": "hasImportant",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": false,
|
||||||
|
"columnNames": [
|
||||||
|
"internalId"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [
|
||||||
|
{
|
||||||
|
"name": "index_Conversations_accountId",
|
||||||
|
"unique": false,
|
||||||
|
"columnNames": [
|
||||||
|
"accountId"
|
||||||
|
],
|
||||||
|
"orders": [],
|
||||||
|
"createSql": "CREATE INDEX IF NOT EXISTS `index_Conversations_accountId` ON `${TABLE_NAME}` (`accountId`)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"foreignKeys": [
|
||||||
|
{
|
||||||
|
"table": "User",
|
||||||
|
"onDelete": "CASCADE",
|
||||||
|
"onUpdate": "CASCADE",
|
||||||
|
"columns": [
|
||||||
|
"accountId"
|
||||||
|
],
|
||||||
|
"referencedColumns": [
|
||||||
|
"id"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "ChatMessages",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`internalId` TEXT NOT NULL, `accountId` INTEGER NOT NULL, `token` TEXT NOT NULL, `id` INTEGER NOT NULL, `internalConversationId` TEXT NOT NULL, `actorDisplayName` TEXT NOT NULL, `message` TEXT NOT NULL, `actorId` TEXT NOT NULL, `actorType` TEXT NOT NULL, `deleted` INTEGER NOT NULL, `expirationTimestamp` INTEGER NOT NULL, `isReplyable` INTEGER NOT NULL, `isTemporary` INTEGER NOT NULL, `lastEditActorDisplayName` TEXT, `lastEditActorId` TEXT, `lastEditActorType` TEXT, `lastEditTimestamp` INTEGER, `markdown` INTEGER, `messageParameters` TEXT, `messageType` TEXT NOT NULL, `parent` INTEGER, `reactions` TEXT, `reactionsSelf` TEXT, `referenceId` TEXT, `sendStatus` TEXT, `silent` INTEGER NOT NULL, `systemMessage` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, PRIMARY KEY(`internalId`), FOREIGN KEY(`internalConversationId`) REFERENCES `Conversations`(`internalId`) ON UPDATE CASCADE ON DELETE CASCADE )",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "internalId",
|
||||||
|
"columnName": "internalId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "accountId",
|
||||||
|
"columnName": "accountId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "token",
|
||||||
|
"columnName": "token",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "id",
|
||||||
|
"columnName": "id",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "internalConversationId",
|
||||||
|
"columnName": "internalConversationId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorDisplayName",
|
||||||
|
"columnName": "actorDisplayName",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "message",
|
||||||
|
"columnName": "message",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorId",
|
||||||
|
"columnName": "actorId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "actorType",
|
||||||
|
"columnName": "actorType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "deleted",
|
||||||
|
"columnName": "deleted",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "expirationTimestamp",
|
||||||
|
"columnName": "expirationTimestamp",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "replyable",
|
||||||
|
"columnName": "isReplyable",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "isTemporary",
|
||||||
|
"columnName": "isTemporary",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastEditActorDisplayName",
|
||||||
|
"columnName": "lastEditActorDisplayName",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastEditActorId",
|
||||||
|
"columnName": "lastEditActorId",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastEditActorType",
|
||||||
|
"columnName": "lastEditActorType",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "lastEditTimestamp",
|
||||||
|
"columnName": "lastEditTimestamp",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "renderMarkdown",
|
||||||
|
"columnName": "markdown",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "messageParameters",
|
||||||
|
"columnName": "messageParameters",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "messageType",
|
||||||
|
"columnName": "messageType",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "parentMessageId",
|
||||||
|
"columnName": "parent",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "reactions",
|
||||||
|
"columnName": "reactions",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "reactionsSelf",
|
||||||
|
"columnName": "reactionsSelf",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "referenceId",
|
||||||
|
"columnName": "referenceId",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "sendStatus",
|
||||||
|
"columnName": "sendStatus",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "silent",
|
||||||
|
"columnName": "silent",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "systemMessageType",
|
||||||
|
"columnName": "systemMessage",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "timestamp",
|
||||||
|
"columnName": "timestamp",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": false,
|
||||||
|
"columnNames": [
|
||||||
|
"internalId"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [
|
||||||
|
{
|
||||||
|
"name": "index_ChatMessages_internalId",
|
||||||
|
"unique": true,
|
||||||
|
"columnNames": [
|
||||||
|
"internalId"
|
||||||
|
],
|
||||||
|
"orders": [],
|
||||||
|
"createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_ChatMessages_internalId` ON `${TABLE_NAME}` (`internalId`)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "index_ChatMessages_internalConversationId",
|
||||||
|
"unique": false,
|
||||||
|
"columnNames": [
|
||||||
|
"internalConversationId"
|
||||||
|
],
|
||||||
|
"orders": [],
|
||||||
|
"createSql": "CREATE INDEX IF NOT EXISTS `index_ChatMessages_internalConversationId` ON `${TABLE_NAME}` (`internalConversationId`)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"foreignKeys": [
|
||||||
|
{
|
||||||
|
"table": "Conversations",
|
||||||
|
"onDelete": "CASCADE",
|
||||||
|
"onUpdate": "CASCADE",
|
||||||
|
"columns": [
|
||||||
|
"internalConversationId"
|
||||||
|
],
|
||||||
|
"referencedColumns": [
|
||||||
|
"internalId"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tableName": "ChatBlocks",
|
||||||
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `internalConversationId` TEXT NOT NULL, `accountId` INTEGER, `token` TEXT, `oldestMessageId` INTEGER NOT NULL, `newestMessageId` INTEGER NOT NULL, `hasHistory` INTEGER NOT NULL, FOREIGN KEY(`internalConversationId`) REFERENCES `Conversations`(`internalId`) ON UPDATE CASCADE ON DELETE CASCADE )",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"fieldPath": "id",
|
||||||
|
"columnName": "id",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "internalConversationId",
|
||||||
|
"columnName": "internalConversationId",
|
||||||
|
"affinity": "TEXT",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "accountId",
|
||||||
|
"columnName": "accountId",
|
||||||
|
"affinity": "INTEGER"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "token",
|
||||||
|
"columnName": "token",
|
||||||
|
"affinity": "TEXT"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "oldestMessageId",
|
||||||
|
"columnName": "oldestMessageId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "newestMessageId",
|
||||||
|
"columnName": "newestMessageId",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "hasHistory",
|
||||||
|
"columnName": "hasHistory",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"primaryKey": {
|
||||||
|
"autoGenerate": true,
|
||||||
|
"columnNames": [
|
||||||
|
"id"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indices": [
|
||||||
|
{
|
||||||
|
"name": "index_ChatBlocks_internalConversationId",
|
||||||
|
"unique": false,
|
||||||
|
"columnNames": [
|
||||||
|
"internalConversationId"
|
||||||
|
],
|
||||||
|
"orders": [],
|
||||||
|
"createSql": "CREATE INDEX IF NOT EXISTS `index_ChatBlocks_internalConversationId` ON `${TABLE_NAME}` (`internalConversationId`)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"foreignKeys": [
|
||||||
|
{
|
||||||
|
"table": "Conversations",
|
||||||
|
"onDelete": "CASCADE",
|
||||||
|
"onUpdate": "CASCADE",
|
||||||
|
"columns": [
|
||||||
|
"internalConversationId"
|
||||||
|
],
|
||||||
|
"referencedColumns": [
|
||||||
|
"internalId"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"setupQueries": [
|
||||||
|
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
|
||||||
|
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '5bc4247e179307faa995552da5d34324')"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
@ -286,6 +286,7 @@ class WebViewLoginActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("DiscouragedPrivateApi")
|
||||||
@Suppress("Detekt.TooGenericExceptionCaught")
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
|
override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
|
||||||
try {
|
try {
|
||||||
|
@ -376,6 +376,8 @@ class CallActivity : CallBaseActivity() {
|
|||||||
Log.d(TAG, "onCreate")
|
Log.d(TAG, "onCreate")
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
sharedApplication!!.componentApplication.inject(this)
|
sharedApplication!!.componentApplication.inject(this)
|
||||||
|
|
||||||
|
rootEglBase = EglBase.create()
|
||||||
binding = CallActivityBinding.inflate(layoutInflater)
|
binding = CallActivityBinding.inflate(layoutInflater)
|
||||||
setContentView(binding!!.root)
|
setContentView(binding!!.root)
|
||||||
hideNavigationIfNoPipAvailable()
|
hideNavigationIfNoPipAvailable()
|
||||||
@ -765,7 +767,6 @@ class CallActivity : CallBaseActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun basicInitialization() {
|
private fun basicInitialization() {
|
||||||
rootEglBase = EglBase.create()
|
|
||||||
createCameraEnumerator()
|
createCameraEnumerator()
|
||||||
|
|
||||||
// Create a new PeerConnectionFactory instance.
|
// Create a new PeerConnectionFactory instance.
|
||||||
@ -947,8 +948,7 @@ class CallActivity : CallBaseActivity() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = participantUiStates,
|
participantUiStates = participantUiStates,
|
||||||
eglBase = rootEglBase!!,
|
eglBase = rootEglBase!!,
|
||||||
isVoiceOnlyCall = isVoiceOnlyCall,
|
isVoiceOnlyCall = isVoiceOnlyCall
|
||||||
isInPipMode = isInPipMode
|
|
||||||
) {
|
) {
|
||||||
animateCallControls(true, 0)
|
animateCallControls(true, 0)
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ import android.text.TextUtils
|
|||||||
import android.text.format.DateUtils
|
import android.text.format.DateUtils
|
||||||
import android.text.style.ImageSpan
|
import android.text.style.ImageSpan
|
||||||
import android.view.View
|
import android.view.View
|
||||||
|
import android.widget.RelativeLayout
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.content.res.ResourcesCompat
|
import androidx.core.content.res.ResourcesCompat
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
@ -155,6 +156,30 @@ class ConversationItem(
|
|||||||
} else {
|
} else {
|
||||||
holder.binding.userStatusImage.visibility = View.GONE
|
holder.binding.userStatusImage.visibility = View.GONE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val dialogNameParams = holder.binding.dialogName.layoutParams as RelativeLayout.LayoutParams
|
||||||
|
val unreadBubbleParams = holder.binding.dialogUnreadBubble.layoutParams as RelativeLayout.LayoutParams
|
||||||
|
val relativeLayoutParams = holder.binding.relativeLayout.layoutParams as RelativeLayout.LayoutParams
|
||||||
|
|
||||||
|
if (model.hasSensitive == true) {
|
||||||
|
dialogNameParams.addRule(RelativeLayout.CENTER_VERTICAL)
|
||||||
|
relativeLayoutParams.addRule(RelativeLayout.ALIGN_TOP, R.id.dialogAvatarFrameLayout)
|
||||||
|
dialogNameParams.marginEnd =
|
||||||
|
context.resources.getDimensionPixelSize(R.dimen.standard_double_padding)
|
||||||
|
unreadBubbleParams.topMargin =
|
||||||
|
context.resources.getDimensionPixelSize(R.dimen.double_margin_between_elements)
|
||||||
|
unreadBubbleParams.addRule(RelativeLayout.CENTER_VERTICAL)
|
||||||
|
} else {
|
||||||
|
dialogNameParams.removeRule(RelativeLayout.CENTER_VERTICAL)
|
||||||
|
relativeLayoutParams.removeRule(RelativeLayout.ALIGN_TOP)
|
||||||
|
dialogNameParams.marginEnd = 0
|
||||||
|
unreadBubbleParams.topMargin = 0
|
||||||
|
unreadBubbleParams.removeRule(RelativeLayout.CENTER_VERTICAL)
|
||||||
|
}
|
||||||
|
holder.binding.relativeLayout.layoutParams = relativeLayoutParams
|
||||||
|
holder.binding.dialogUnreadBubble.layoutParams = unreadBubbleParams
|
||||||
|
holder.binding.dialogName.layoutParams = dialogNameParams
|
||||||
|
|
||||||
setLastMessage(holder, appContext)
|
setLastMessage(holder, appContext)
|
||||||
showAvatar(holder)
|
showAvatar(holder)
|
||||||
}
|
}
|
||||||
@ -406,9 +431,9 @@ class ConversationItem(
|
|||||||
)
|
)
|
||||||
return lastMessage
|
return lastMessage
|
||||||
} else if (MessageType.SINGLE_NC_ATTACHMENT_MESSAGE == chatMessage?.getCalculateMessageType()) {
|
} else if (MessageType.SINGLE_NC_ATTACHMENT_MESSAGE == chatMessage?.getCalculateMessageType()) {
|
||||||
var attachmentName = chatMessage.message
|
var attachmentName = chatMessage.text
|
||||||
if (attachmentName == "{file}") {
|
if (attachmentName == "{file}") {
|
||||||
attachmentName = chatMessage.messageParameters?.get("file")?.get("name")
|
attachmentName = chatMessage.messageParameters?.get("file")?.get("name") ?: ""
|
||||||
}
|
}
|
||||||
val author = authorName(chatMessage)
|
val author = authorName(chatMessage)
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ import autodagger.AutoInjector
|
|||||||
import coil.load
|
import coil.load
|
||||||
import com.google.android.flexbox.FlexboxLayout
|
import com.google.android.flexbox.FlexboxLayout
|
||||||
import com.google.android.material.snackbar.Snackbar
|
import com.google.android.material.snackbar.Snackbar
|
||||||
|
import com.nextcloud.android.common.ui.theme.utils.ColorRole
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||||
@ -157,7 +158,7 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
|
|||||||
binding.messageEditIndicator.visibility = View.GONE
|
binding.messageEditIndicator.visibility = View.GONE
|
||||||
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp)
|
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp)
|
||||||
}
|
}
|
||||||
binding.messageTime.setTextColor(ContextCompat.getColor(context, R.color.no_emphasis_text))
|
viewThemeUtils.platform.colorTextView(binding.messageTime, ColorRole.ON_SURFACE_VARIANT)
|
||||||
// parent message handling
|
// parent message handling
|
||||||
if (!message.isDeleted && message.parentMessageId != null) {
|
if (!message.isDeleted && message.parentMessageId != null) {
|
||||||
processParentMessage(message)
|
processParentMessage(message)
|
||||||
|
@ -29,6 +29,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedA
|
|||||||
import com.nextcloud.talk.chat.ChatActivity
|
import com.nextcloud.talk.chat.ChatActivity
|
||||||
import com.nextcloud.talk.chat.data.ChatMessageRepository
|
import com.nextcloud.talk.chat.data.ChatMessageRepository
|
||||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||||
|
import com.nextcloud.talk.data.database.model.SendStatus
|
||||||
import com.nextcloud.talk.data.network.NetworkMonitor
|
import com.nextcloud.talk.data.network.NetworkMonitor
|
||||||
import com.nextcloud.talk.data.user.model.User
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingTextMessageBinding
|
import com.nextcloud.talk.databinding.ItemCustomOutcomingTextMessageBinding
|
||||||
@ -105,7 +106,6 @@ class OutcomingTextMessageViewHolder(itemView: View) :
|
|||||||
if (!hasCheckboxes) {
|
if (!hasCheckboxes) {
|
||||||
realView.isSelected = false
|
realView.isSelected = false
|
||||||
layoutParams.isWrapBefore = false
|
layoutParams.isWrapBefore = false
|
||||||
viewThemeUtils.platform.colorTextView(binding.messageTime, ColorRole.ON_SURFACE_VARIANT)
|
|
||||||
|
|
||||||
binding.messageText.visibility = View.VISIBLE
|
binding.messageText.visibility = View.VISIBLE
|
||||||
binding.checkboxContainer.visibility = View.GONE
|
binding.checkboxContainer.visibility = View.GONE
|
||||||
@ -172,7 +172,7 @@ class OutcomingTextMessageViewHolder(itemView: View) :
|
|||||||
binding.messageEditIndicator.visibility = View.GONE
|
binding.messageEditIndicator.visibility = View.GONE
|
||||||
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp)
|
binding.messageTime.text = dateUtils.getLocalTimeStringFromTimestamp(message.timestamp)
|
||||||
}
|
}
|
||||||
binding.messageTime.setTextColor(ContextCompat.getColor(context, R.color.no_emphasis_text))
|
viewThemeUtils.platform.colorTextView(binding.messageTime, ColorRole.ON_SURFACE_VARIANT)
|
||||||
setBubbleOnChatMessage(message)
|
setBubbleOnChatMessage(message)
|
||||||
// parent message handling
|
// parent message handling
|
||||||
if (!message.isDeleted && message.parentMessageId != null) {
|
if (!message.isDeleted && message.parentMessageId != null) {
|
||||||
@ -185,7 +185,7 @@ class OutcomingTextMessageViewHolder(itemView: View) :
|
|||||||
binding.checkMark.visibility = View.INVISIBLE
|
binding.checkMark.visibility = View.INVISIBLE
|
||||||
binding.sendingProgress.visibility = View.GONE
|
binding.sendingProgress.visibility = View.GONE
|
||||||
|
|
||||||
if (message.sendingFailed) {
|
if (message.sendStatus == SendStatus.FAILED) {
|
||||||
updateStatus(R.drawable.baseline_error_outline_24, context.resources?.getString(R.string.nc_message_failed))
|
updateStatus(R.drawable.baseline_error_outline_24, context.resources?.getString(R.string.nc_message_failed))
|
||||||
} else if (message.isTemporary) {
|
} else if (message.isTemporary) {
|
||||||
updateStatus(R.drawable.baseline_schedule_24, context.resources?.getString(R.string.nc_message_sending))
|
updateStatus(R.drawable.baseline_schedule_24, context.resources?.getString(R.string.nc_message_sending))
|
||||||
|
@ -179,6 +179,18 @@ interface NcApiCoroutines {
|
|||||||
@Url url: String
|
@Url url: String
|
||||||
): GenericOverall
|
): GenericOverall
|
||||||
|
|
||||||
|
@POST
|
||||||
|
suspend fun markConversationAsImportant(
|
||||||
|
@Header("Authorization") authorization: String,
|
||||||
|
@Url url: String
|
||||||
|
): GenericOverall
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
suspend fun markConversationAsUnimportant(
|
||||||
|
@Header("Authorization") authorization: String,
|
||||||
|
@Url url: String
|
||||||
|
): GenericOverall
|
||||||
|
|
||||||
@DELETE
|
@DELETE
|
||||||
suspend fun removeConversationFromFavorites(
|
suspend fun removeConversationFromFavorites(
|
||||||
@Header("Authorization") authorization: String,
|
@Header("Authorization") authorization: String,
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.bottomsheet.items
|
package com.nextcloud.talk.bottomsheet.items
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
@ -65,6 +66,7 @@ internal class ListIconDialogAdapter<IT : ListItemWithImage>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("RestrictedApi")
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListItemViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListItemViewHolder {
|
||||||
val listItemView: View = parent.inflate(dialog.windowContext, R.layout.menu_item_sheet)
|
val listItemView: View = parent.inflate(dialog.windowContext, R.layout.menu_item_sheet)
|
||||||
val viewHolder = ListItemViewHolder(
|
val viewHolder = ListItemViewHolder(
|
||||||
|
@ -12,11 +12,11 @@ package com.nextcloud.talk.call.components
|
|||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.BoxWithConstraints
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.layout.padding
|
|
||||||
import androidx.compose.foundation.lazy.grid.GridCells
|
import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
import androidx.compose.foundation.lazy.grid.items
|
import androidx.compose.foundation.lazy.grid.items
|
||||||
@ -36,7 +36,6 @@ fun ParticipantGrid(
|
|||||||
eglBase: EglBase?,
|
eglBase: EglBase?,
|
||||||
participantUiStates: List<ParticipantUiState>,
|
participantUiStates: List<ParticipantUiState>,
|
||||||
isVoiceOnlyCall: Boolean,
|
isVoiceOnlyCall: Boolean,
|
||||||
isInPipMode: Boolean,
|
|
||||||
onClick: () -> Unit
|
onClick: () -> Unit
|
||||||
) {
|
) {
|
||||||
val configuration = LocalConfiguration.current
|
val configuration = LocalConfiguration.current
|
||||||
@ -44,63 +43,59 @@ fun ParticipantGrid(
|
|||||||
|
|
||||||
val minItemHeight = 100.dp
|
val minItemHeight = 100.dp
|
||||||
|
|
||||||
val columns =
|
if (participantUiStates.isEmpty()) return
|
||||||
if (isPortrait) {
|
|
||||||
when (participantUiStates.size) {
|
val columns = if (isPortrait) {
|
||||||
1, 2, 3 -> 1
|
when (participantUiStates.size) {
|
||||||
else -> 2
|
1, 2, 3 -> 1
|
||||||
}
|
else -> 2
|
||||||
} else {
|
|
||||||
when (participantUiStates.size) {
|
|
||||||
1 -> 1
|
|
||||||
2, 4 -> 2
|
|
||||||
else -> 3
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val rows = ceil(participantUiStates.size / columns.toFloat()).toInt()
|
|
||||||
|
|
||||||
val heightForNonGridComponents = if (isVoiceOnlyCall && !isInPipMode) {
|
|
||||||
// this is a workaround for now. It should ~summarize the height of callInfosLinearLayout and callControls
|
|
||||||
// Once everything is migrated to jetpack, this workaround should be obsolete or solved in a better way
|
|
||||||
240.dp
|
|
||||||
} else {
|
} else {
|
||||||
0.dp
|
when (participantUiStates.size) {
|
||||||
}
|
1 -> 1
|
||||||
|
2, 4 -> 2
|
||||||
|
else -> 3
|
||||||
|
}
|
||||||
|
}.coerceAtLeast(1) // Prevent 0
|
||||||
|
|
||||||
|
val rows = ceil(participantUiStates.size / columns.toFloat()).toInt().coerceAtLeast(1)
|
||||||
|
|
||||||
val gridHeight = LocalConfiguration.current.screenHeightDp.dp - heightForNonGridComponents
|
|
||||||
val itemSpacing = 8.dp
|
val itemSpacing = 8.dp
|
||||||
val edgePadding = 8.dp
|
val edgePadding = 8.dp
|
||||||
|
|
||||||
val totalVerticalSpacing = itemSpacing * (rows - 1)
|
val totalVerticalSpacing = itemSpacing * (rows - 1)
|
||||||
val totalVerticalPadding = edgePadding * 2
|
val totalVerticalPadding = edgePadding * 2
|
||||||
val availableHeight = gridHeight - totalVerticalSpacing - totalVerticalPadding
|
|
||||||
|
|
||||||
val rawItemHeight = availableHeight / rows
|
BoxWithConstraints(
|
||||||
val itemHeight = maxOf(rawItemHeight, minItemHeight)
|
modifier = modifier
|
||||||
|
|
||||||
LazyVerticalGrid(
|
|
||||||
columns = GridCells.Fixed(columns),
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
.padding(horizontal = edgePadding)
|
.clickable { onClick() }
|
||||||
.clickable { onClick() },
|
|
||||||
verticalArrangement = Arrangement.spacedBy(itemSpacing),
|
|
||||||
horizontalArrangement = Arrangement.spacedBy(itemSpacing),
|
|
||||||
contentPadding = PaddingValues(vertical = edgePadding)
|
|
||||||
) {
|
) {
|
||||||
items(
|
val availableHeight = maxHeight
|
||||||
participantUiStates,
|
|
||||||
key = { it.sessionKey }
|
val gridAvailableHeight = availableHeight - totalVerticalSpacing - totalVerticalPadding
|
||||||
) { participant ->
|
val rawItemHeight = gridAvailableHeight / rows
|
||||||
ParticipantTile(
|
val itemHeight = maxOf(rawItemHeight, minItemHeight)
|
||||||
participantUiState = participant,
|
|
||||||
modifier = Modifier
|
LazyVerticalGrid(
|
||||||
.height(itemHeight)
|
columns = GridCells.Fixed(columns),
|
||||||
.fillMaxWidth(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
eglBase = eglBase,
|
verticalArrangement = Arrangement.spacedBy(itemSpacing),
|
||||||
isVoiceOnlyCall = isVoiceOnlyCall
|
horizontalArrangement = Arrangement.spacedBy(itemSpacing),
|
||||||
)
|
contentPadding = PaddingValues(vertical = edgePadding, horizontal = edgePadding)
|
||||||
|
) {
|
||||||
|
items(
|
||||||
|
participantUiStates,
|
||||||
|
key = { it.sessionKey }
|
||||||
|
) { participant ->
|
||||||
|
ParticipantTile(
|
||||||
|
participantUiState = participant,
|
||||||
|
modifier = Modifier
|
||||||
|
.height(itemHeight)
|
||||||
|
.fillMaxWidth(),
|
||||||
|
eglBase = eglBase,
|
||||||
|
isVoiceOnlyCall = isVoiceOnlyCall
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -111,8 +106,7 @@ fun ParticipantGridPreview() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(1),
|
participantUiStates = getTestParticipants(1),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,8 +116,7 @@ fun TwoParticipants() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(2),
|
participantUiStates = getTestParticipants(2),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,8 +126,7 @@ fun ThreeParticipants() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(3),
|
participantUiStates = getTestParticipants(3),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,8 +136,7 @@ fun FourParticipants() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(4),
|
participantUiStates = getTestParticipants(4),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,8 +146,7 @@ fun FiveParticipants() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(5),
|
participantUiStates = getTestParticipants(5),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -166,8 +156,7 @@ fun SevenParticipants() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(7),
|
participantUiStates = getTestParticipants(7),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,8 +166,7 @@ fun FiftyParticipants() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(50),
|
participantUiStates = getTestParticipants(50),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,8 +180,7 @@ fun OneParticipantLandscape() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(1),
|
participantUiStates = getTestParticipants(1),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,8 +194,7 @@ fun TwoParticipantsLandscape() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(2),
|
participantUiStates = getTestParticipants(2),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,8 +208,7 @@ fun ThreeParticipantsLandscape() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(3),
|
participantUiStates = getTestParticipants(3),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -237,8 +222,7 @@ fun FourParticipantsLandscape() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(4),
|
participantUiStates = getTestParticipants(4),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -252,8 +236,7 @@ fun SevenParticipantsLandscape() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(7),
|
participantUiStates = getTestParticipants(7),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -267,8 +250,7 @@ fun FiftyParticipantsLandscape() {
|
|||||||
ParticipantGrid(
|
ParticipantGrid(
|
||||||
participantUiStates = getTestParticipants(50),
|
participantUiStates = getTestParticipants(50),
|
||||||
eglBase = null,
|
eglBase = null,
|
||||||
isVoiceOnlyCall = false,
|
isVoiceOnlyCall = false
|
||||||
isInPipMode = false
|
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@ package com.nextcloud.talk.chat
|
|||||||
|
|
||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.Activity
|
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ClipboardManager
|
import android.content.ClipboardManager
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
@ -276,6 +275,8 @@ class ChatActivity :
|
|||||||
lateinit var conversationInfoViewModel: ConversationInfoViewModel
|
lateinit var conversationInfoViewModel: ConversationInfoViewModel
|
||||||
lateinit var messageInputViewModel: MessageInputViewModel
|
lateinit var messageInputViewModel: MessageInputViewModel
|
||||||
|
|
||||||
|
private var chatMenu: Menu? = null
|
||||||
|
|
||||||
private val startSelectContactForResult = registerForActivityResult(
|
private val startSelectContactForResult = registerForActivityResult(
|
||||||
ActivityResultContracts
|
ActivityResultContracts
|
||||||
.StartActivityForResult()
|
.StartActivityForResult()
|
||||||
@ -307,12 +308,7 @@ class ChatActivity :
|
|||||||
runBlocking {
|
runBlocking {
|
||||||
val id = intent?.getStringExtra(MessageSearchActivity.RESULT_KEY_MESSAGE_ID)
|
val id = intent?.getStringExtra(MessageSearchActivity.RESULT_KEY_MESSAGE_ID)
|
||||||
id?.let {
|
id?.let {
|
||||||
val isSaved = chatViewModel.isMessageSaved(id.toLong())
|
startContextChatWindowForMessage(id)
|
||||||
if (isSaved) {
|
|
||||||
onMessageSearchResult(intent)
|
|
||||||
} else {
|
|
||||||
startContextChatWindowForMessage(id)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -366,6 +362,7 @@ class ChatActivity :
|
|||||||
var startCallFromRoomSwitch: Boolean = false
|
var startCallFromRoomSwitch: Boolean = false
|
||||||
|
|
||||||
var voiceOnly: Boolean = true
|
var voiceOnly: Boolean = true
|
||||||
|
var focusInput: Boolean = false
|
||||||
private lateinit var path: String
|
private lateinit var path: String
|
||||||
|
|
||||||
var myFirstMessage: CharSequence? = null
|
var myFirstMessage: CharSequence? = null
|
||||||
@ -549,6 +546,8 @@ class ChatActivity :
|
|||||||
startCallFromRoomSwitch = extras?.getBoolean(KEY_START_CALL_AFTER_ROOM_SWITCH, false) == true
|
startCallFromRoomSwitch = extras?.getBoolean(KEY_START_CALL_AFTER_ROOM_SWITCH, false) == true
|
||||||
|
|
||||||
voiceOnly = extras?.getBoolean(KEY_CALL_VOICE_ONLY, false) == true
|
voiceOnly = extras?.getBoolean(KEY_CALL_VOICE_ONLY, false) == true
|
||||||
|
|
||||||
|
focusInput = extras?.getBoolean(BundleKeys.KEY_FOCUS_INPUT) == true
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
@ -640,12 +639,17 @@ class ChatActivity :
|
|||||||
supportFragmentManager.commit {
|
supportFragmentManager.commit {
|
||||||
setReorderingAllowed(true) // optimizes out redundant replace operations
|
setReorderingAllowed(true) // optimizes out redundant replace operations
|
||||||
replace(R.id.fragment_container_activity_chat, messageInputFragment)
|
replace(R.id.fragment_container_activity_chat, messageInputFragment)
|
||||||
|
runOnCommit {
|
||||||
|
if (focusInput) {
|
||||||
|
messageInputFragment.binding.fragmentMessageInputView.requestFocus()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
joinRoomWithPassword()
|
joinRoomWithPassword()
|
||||||
|
|
||||||
if (conversationUser?.userId != "?" &&
|
if (conversationUser?.userId != "?" &&
|
||||||
CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.MENTION_FLAG)
|
hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.MENTION_FLAG)
|
||||||
) {
|
) {
|
||||||
binding.chatToolbar.setOnClickListener { _ -> showConversationInfoScreen() }
|
binding.chatToolbar.setOnClickListener { _ -> showConversationInfoScreen() }
|
||||||
}
|
}
|
||||||
@ -1102,6 +1106,8 @@ class ChatActivity :
|
|||||||
context.getString(R.string.nc_room_retention),
|
context.getString(R.string.nc_room_retention),
|
||||||
Snackbar.LENGTH_LONG
|
Snackbar.LENGTH_LONG
|
||||||
).show()
|
).show()
|
||||||
|
|
||||||
|
chatMenu?.removeItem(R.id.conversation_event)
|
||||||
}
|
}
|
||||||
is ChatViewModel.UnbindRoomUiState.Error -> {
|
is ChatViewModel.UnbindRoomUiState.Error -> {
|
||||||
Snackbar.make(
|
Snackbar.make(
|
||||||
@ -1237,11 +1243,17 @@ class ChatActivity :
|
|||||||
bringToFront()
|
bringToFront()
|
||||||
}
|
}
|
||||||
val deleteNoticeText = binding.conversationDeleteNotice.findViewById<TextView>(R.id.deletion_message)
|
val deleteNoticeText = binding.conversationDeleteNotice.findViewById<TextView>(R.id.deletion_message)
|
||||||
|
viewThemeUtils.material.themeCardView(binding.conversationDeleteNotice)
|
||||||
|
|
||||||
deleteNoticeText.text = String.format(
|
deleteNoticeText.text = resources.getQuantityString(
|
||||||
resources.getString(R.string.nc_conversation_auto_delete_notice),
|
R.plurals.nc_conversation_auto_delete_info,
|
||||||
|
retentionPeriod,
|
||||||
retentionPeriod
|
retentionPeriod
|
||||||
)
|
)
|
||||||
|
viewThemeUtils.material.colorMaterialButtonPrimaryTonal(
|
||||||
|
binding.conversationDeleteNotice
|
||||||
|
.findViewById<MaterialButton>(R.id.keep_button)
|
||||||
|
)
|
||||||
|
|
||||||
if (ConversationUtils.isParticipantOwnerOrModerator(currentConversation!!)) {
|
if (ConversationUtils.isParticipantOwnerOrModerator(currentConversation!!)) {
|
||||||
binding.conversationDeleteNotice.findViewById<MaterialButton>(R.id.delete_now_button).visibility =
|
binding.conversationDeleteNotice.findViewById<MaterialButton>(R.id.delete_now_button).visibility =
|
||||||
@ -2042,7 +2054,7 @@ class ChatActivity :
|
|||||||
|
|
||||||
private fun shouldShowLobby(): Boolean {
|
private fun shouldShowLobby(): Boolean {
|
||||||
if (currentConversation != null) {
|
if (currentConversation != null) {
|
||||||
return CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.WEBINARY_LOBBY) &&
|
return hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.WEBINARY_LOBBY) &&
|
||||||
currentConversation?.lobbyState == ConversationEnums.LobbyState.LOBBY_STATE_MODERATORS_ONLY &&
|
currentConversation?.lobbyState == ConversationEnums.LobbyState.LOBBY_STATE_MODERATORS_ONLY &&
|
||||||
!ConversationUtils.canModerate(currentConversation!!, spreedCapabilities) &&
|
!ConversationUtils.canModerate(currentConversation!!, spreedCapabilities) &&
|
||||||
!participantPermissions.canIgnoreLobby()
|
!participantPermissions.canIgnoreLobby()
|
||||||
@ -2297,15 +2309,8 @@ class ChatActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onMessageSearchResult(intent: Intent?) {
|
|
||||||
val messageId = intent?.getStringExtra(MessageSearchActivity.RESULT_KEY_MESSAGE_ID)
|
|
||||||
messageId?.let { id ->
|
|
||||||
scrollToAndCenterMessageWithId(id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun executeIfResultOk(result: ActivityResult, onResult: (intent: Intent?) -> Unit) {
|
private fun executeIfResultOk(result: ActivityResult, onResult: (intent: Intent?) -> Unit) {
|
||||||
if (result.resultCode == Activity.RESULT_OK) {
|
if (result.resultCode == RESULT_OK) {
|
||||||
onResult(result.data)
|
onResult(result.data)
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "resultCode for received intent was != ok")
|
Log.e(TAG, "resultCode for received intent was != ok")
|
||||||
@ -2319,7 +2324,7 @@ class ChatActivity :
|
|||||||
if (position != null && position >= 0) {
|
if (position != null && position >= 0) {
|
||||||
binding.messagesListView.scrollToPosition(position)
|
binding.messagesListView.scrollToPosition(position)
|
||||||
} else {
|
} else {
|
||||||
startContextChatWindowForMessage(messageId)
|
Log.d(TAG, "message $messageId that should be scrolled to was not found (scrollToMessageWithId)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2332,10 +2337,12 @@ class ChatActivity :
|
|||||||
binding.messagesListView.height / 2
|
binding.messagesListView.height / 2
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
startContextChatWindowForMessage(messageId)
|
Log.d(
|
||||||
|
TAG,
|
||||||
|
"message $messageId that should be scrolled " +
|
||||||
|
"to was not found (scrollToAndCenterMessageWithId)"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
} ?: run {
|
|
||||||
startContextChatWindowForMessage(messageId)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2797,7 +2804,7 @@ class ChatActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (this::spreedCapabilities.isInitialized) {
|
if (this::spreedCapabilities.isInitialized) {
|
||||||
if (CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.MESSAGE_EXPIRATION)) {
|
if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.MESSAGE_EXPIRATION)) {
|
||||||
deleteExpiredMessages()
|
deleteExpiredMessages()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -3044,6 +3051,7 @@ class ChatActivity :
|
|||||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
super.onCreateOptionsMenu(menu)
|
super.onCreateOptionsMenu(menu)
|
||||||
menuInflater.inflate(R.menu.menu_conversation, menu)
|
menuInflater.inflate(R.menu.menu_conversation, menu)
|
||||||
|
chatMenu = menu
|
||||||
|
|
||||||
if (currentConversation?.objectType == ConversationEnums.ObjectType.EVENT) {
|
if (currentConversation?.objectType == ConversationEnums.ObjectType.EVENT) {
|
||||||
eventConversationMenuItem = menu.findItem(R.id.conversation_event)
|
eventConversationMenuItem = menu.findItem(R.id.conversation_event)
|
||||||
@ -3057,7 +3065,6 @@ class ChatActivity :
|
|||||||
loadAvatarForStatusBar()
|
loadAvatarForStatusBar()
|
||||||
setActionBarTitle()
|
setActionBarTitle()
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3065,7 +3072,7 @@ class ChatActivity :
|
|||||||
super.onPrepareOptionsMenu(menu)
|
super.onPrepareOptionsMenu(menu)
|
||||||
|
|
||||||
if (this::spreedCapabilities.isInitialized) {
|
if (this::spreedCapabilities.isInitialized) {
|
||||||
if (CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.READ_ONLY_ROOMS)) {
|
if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.READ_ONLY_ROOMS)) {
|
||||||
checkShowCallButtons()
|
checkShowCallButtons()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3086,7 +3093,7 @@ class ChatActivity :
|
|||||||
}.collect()
|
}.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.SILENT_CALL)) {
|
if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.SILENT_CALL)) {
|
||||||
Handler().post {
|
Handler().post {
|
||||||
findViewById<View?>(R.id.conversation_voice_call)?.setOnLongClickListener {
|
findViewById<View?>(R.id.conversation_voice_call)?.setOnLongClickListener {
|
||||||
showCallButtonMenu(true)
|
showCallButtonMenu(true)
|
||||||
@ -3145,10 +3152,10 @@ class ChatActivity :
|
|||||||
else -> super.onOptionsItemSelected(item)
|
else -> super.onOptionsItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("InflateParams")
|
||||||
private fun showPopupWindow(anchorView: View) {
|
private fun showPopupWindow(anchorView: View) {
|
||||||
val popupView = layoutInflater.inflate(R.layout.item_event_schedule, null)
|
val popupView = layoutInflater.inflate(R.layout.item_event_schedule, null)
|
||||||
|
|
||||||
val titleTextView = popupView.findViewById<TextView>(R.id.event_scheduled)
|
|
||||||
val subtitleTextView = popupView.findViewById<TextView>(R.id.meetingTime)
|
val subtitleTextView = popupView.findViewById<TextView>(R.id.meetingTime)
|
||||||
|
|
||||||
val popupWindow = PopupWindow(
|
val popupWindow = PopupWindow(
|
||||||
@ -3597,7 +3604,7 @@ class ChatActivity :
|
|||||||
|
|
||||||
fun copyMessage(message: IMessage?) {
|
fun copyMessage(message: IMessage?) {
|
||||||
val clipboardManager =
|
val clipboardManager =
|
||||||
getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
|
||||||
val clipData = ClipData.newPlainText(
|
val clipData = ClipData.newPlainText(
|
||||||
resources?.getString(R.string.nc_app_product_name),
|
resources?.getString(R.string.nc_app_product_name),
|
||||||
message?.text
|
message?.text
|
||||||
@ -3911,7 +3918,7 @@ class ChatActivity :
|
|||||||
val isOlderThanSixHours = message
|
val isOlderThanSixHours = message
|
||||||
.createdAt
|
.createdAt
|
||||||
.before(Date(System.currentTimeMillis() - AGE_THRESHOLD_FOR_DELETE_MESSAGE))
|
.before(Date(System.currentTimeMillis() - AGE_THRESHOLD_FOR_DELETE_MESSAGE))
|
||||||
val hasDeleteMessagesUnlimitedCapability = CapabilitiesUtil.hasSpreedFeatureCapability(
|
val hasDeleteMessagesUnlimitedCapability = hasSpreedFeatureCapability(
|
||||||
spreedCapabilities,
|
spreedCapabilities,
|
||||||
SpreedFeatures.DELETE_MESSAGES_UNLIMITED
|
SpreedFeatures.DELETE_MESSAGES_UNLIMITED
|
||||||
)
|
)
|
||||||
@ -3921,7 +3928,7 @@ class ChatActivity :
|
|||||||
!hasDeleteMessagesUnlimitedCapability && isOlderThanSixHours -> false
|
!hasDeleteMessagesUnlimitedCapability && isOlderThanSixHours -> false
|
||||||
message.systemMessageType != ChatMessage.SystemMessageType.DUMMY -> false
|
message.systemMessageType != ChatMessage.SystemMessageType.DUMMY -> false
|
||||||
message.isDeleted -> false
|
message.isDeleted -> false
|
||||||
!CapabilitiesUtil.hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.DELETE_MESSAGES) -> false
|
!hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.DELETE_MESSAGES) -> false
|
||||||
!participantPermissions.hasChatPermission() -> false
|
!participantPermissions.hasChatPermission() -> false
|
||||||
hasDeleteMessagesUnlimitedCapability -> true
|
hasDeleteMessagesUnlimitedCapability -> true
|
||||||
else -> true
|
else -> true
|
||||||
|
@ -200,7 +200,7 @@ class MessageInputFragment : Fragment() {
|
|||||||
val connectionGained = (!wasOnline && isOnline)
|
val connectionGained = (!wasOnline && isOnline)
|
||||||
Log.d(TAG, "isOnline: $isOnline\nwasOnline: $wasOnline\nconnectionGained: $connectionGained")
|
Log.d(TAG, "isOnline: $isOnline\nwasOnline: $wasOnline\nconnectionGained: $connectionGained")
|
||||||
if (connectionGained) {
|
if (connectionGained) {
|
||||||
chatActivity.messageInputViewModel.sendTempMessages(
|
chatActivity.messageInputViewModel.sendUnsentMessages(
|
||||||
chatActivity.conversationUser!!.getCredentials(),
|
chatActivity.conversationUser!!.getCredentials(),
|
||||||
ApiUtils.getUrlForChat(
|
ApiUtils.getUrlForChat(
|
||||||
chatActivity.chatApiVersion,
|
chatActivity.chatApiVersion,
|
||||||
|
@ -76,8 +76,6 @@ interface ChatMessageRepository : LifecycleAwareManager {
|
|||||||
*/
|
*/
|
||||||
suspend fun getMessage(messageId: Long, bundle: Bundle): Flow<ChatMessage>
|
suspend fun getMessage(messageId: Long, bundle: Bundle): Flow<ChatMessage>
|
||||||
|
|
||||||
suspend fun checkIfMessageIsSaved(messageId: Long): Boolean
|
|
||||||
|
|
||||||
@Suppress("LongParameterList")
|
@Suppress("LongParameterList")
|
||||||
suspend fun sendChatMessage(
|
suspend fun sendChatMessage(
|
||||||
credentials: String,
|
credentials: String,
|
||||||
@ -112,7 +110,7 @@ interface ChatMessageRepository : LifecycleAwareManager {
|
|||||||
|
|
||||||
suspend fun editTempChatMessage(message: ChatMessage, editedMessageText: String): Flow<Boolean>
|
suspend fun editTempChatMessage(message: ChatMessage, editedMessageText: String): Flow<Boolean>
|
||||||
|
|
||||||
suspend fun sendTempChatMessages(credentials: String, url: String)
|
suspend fun sendUnsentChatMessages(credentials: String, url: String)
|
||||||
|
|
||||||
suspend fun deleteTempMessage(chatMessage: ChatMessage)
|
suspend fun deleteTempMessage(chatMessage: ChatMessage)
|
||||||
}
|
}
|
||||||
|
@ -183,19 +183,26 @@ class MediaPlayerManager : LifecycleAwareManager {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mediaPlayer != null && mediaPlayer?.isPlaying == true) {
|
mediaPlayer?.let { player ->
|
||||||
val pos = mediaPlayer!!.currentPosition
|
try {
|
||||||
|
if (!player.isPlaying) return@let
|
||||||
|
} catch (e: IllegalStateException) {
|
||||||
|
Log.e(TAG, "Seekbar updated during an improper state: $e")
|
||||||
|
return@let
|
||||||
|
}
|
||||||
|
|
||||||
|
val pos = player.currentPosition
|
||||||
mediaPlayerPosition = pos
|
mediaPlayerPosition = pos
|
||||||
val progress = (pos.toFloat() / mediaPlayerDuration) * DIVIDER
|
val progress = (pos.toFloat() / mediaPlayerDuration) * DIVIDER
|
||||||
val progressI = ceil(progress).toInt()
|
val progressI = ceil(progress).toInt()
|
||||||
val seconds = (pos / ONE_SEC)
|
val seconds = (pos / ONE_SEC)
|
||||||
_mediaPlayerSeekBarPosition.emit(progressI)
|
_mediaPlayerSeekBarPosition.emit(progressI)
|
||||||
currentCycledMessage?.let {
|
currentCycledMessage?.let { msg ->
|
||||||
it.isPlayingVoiceMessage = true
|
msg.isPlayingVoiceMessage = true
|
||||||
it.voiceMessageSeekbarProgress = progressI
|
msg.voiceMessageSeekbarProgress = progressI
|
||||||
it.voiceMessagePlayedSeconds = seconds
|
msg.voiceMessagePlayedSeconds = seconds
|
||||||
if (progressI >= IS_PLAYED_CUTOFF) it.wasPlayedVoiceMessage = true
|
if (progressI >= IS_PLAYED_CUTOFF) msg.wasPlayedVoiceMessage = true
|
||||||
_mediaPlayerSeekBarPositionMsg.emit(it)
|
_mediaPlayerSeekBarPositionMsg.emit(msg)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ import android.util.Log
|
|||||||
import com.bluelinelabs.logansquare.annotation.JsonIgnore
|
import com.bluelinelabs.logansquare.annotation.JsonIgnore
|
||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||||
|
import com.nextcloud.talk.data.database.model.SendStatus
|
||||||
import com.nextcloud.talk.data.user.model.User
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.models.json.chat.ChatUtils.Companion.getParsedMessage
|
import com.nextcloud.talk.models.json.chat.ChatUtils.Companion.getParsedMessage
|
||||||
import com.nextcloud.talk.models.json.chat.ReadStatus
|
import com.nextcloud.talk.models.json.chat.ReadStatus
|
||||||
@ -119,7 +120,7 @@ data class ChatMessage(
|
|||||||
|
|
||||||
var referenceId: String? = null,
|
var referenceId: String? = null,
|
||||||
|
|
||||||
var sendingFailed: Boolean = true,
|
var sendStatus: SendStatus? = null,
|
||||||
|
|
||||||
var silent: Boolean = false
|
var silent: Boolean = false
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ import com.nextcloud.talk.data.database.mappers.asEntity
|
|||||||
import com.nextcloud.talk.data.database.mappers.asModel
|
import com.nextcloud.talk.data.database.mappers.asModel
|
||||||
import com.nextcloud.talk.data.database.model.ChatBlockEntity
|
import com.nextcloud.talk.data.database.model.ChatBlockEntity
|
||||||
import com.nextcloud.talk.data.database.model.ChatMessageEntity
|
import com.nextcloud.talk.data.database.model.ChatMessageEntity
|
||||||
|
import com.nextcloud.talk.data.database.model.SendStatus
|
||||||
import com.nextcloud.talk.data.network.NetworkMonitor
|
import com.nextcloud.talk.data.network.NetworkMonitor
|
||||||
import com.nextcloud.talk.data.user.model.User
|
import com.nextcloud.talk.data.user.model.User
|
||||||
import com.nextcloud.talk.extensions.toIntOrZero
|
import com.nextcloud.talk.extensions.toIntOrZero
|
||||||
@ -214,7 +215,8 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
sendTempChatMessages(credentials, urlForChatting)
|
// this call could be deleted when we have a worker to send messages..
|
||||||
|
sendUnsentChatMessages(credentials, urlForChatting)
|
||||||
|
|
||||||
// delay is a dirty workaround to make sure messages are added to adapter on initial load before dealing
|
// delay is a dirty workaround to make sure messages are added to adapter on initial load before dealing
|
||||||
// with them (otherwise there is a race condition).
|
// with them (otherwise there is a race condition).
|
||||||
@ -365,11 +367,18 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
lookIntoFuture: Boolean,
|
lookIntoFuture: Boolean,
|
||||||
showUnreadMessagesMarker: Boolean
|
showUnreadMessagesMarker: Boolean
|
||||||
) {
|
) {
|
||||||
|
receivedChatMessages.forEach {
|
||||||
|
Log.d(TAG, "receivedChatMessage: " + it.message)
|
||||||
|
}
|
||||||
|
|
||||||
// remove all temp messages from UI
|
// remove all temp messages from UI
|
||||||
val oldTempMessages = chatDao.getTempMessagesForConversation(internalConversationId)
|
val oldTempMessages = chatDao.getTempMessagesForConversation(internalConversationId)
|
||||||
.first()
|
.first()
|
||||||
.map(ChatMessageEntity::asModel)
|
.map(ChatMessageEntity::asModel)
|
||||||
oldTempMessages.forEach { _removeMessageFlow.emit(it) }
|
oldTempMessages.forEach {
|
||||||
|
Log.d(TAG, "oldTempMessage to be removed from UI: " + it.message)
|
||||||
|
_removeMessageFlow.emit(it)
|
||||||
|
}
|
||||||
|
|
||||||
// add new messages to UI
|
// add new messages to UI
|
||||||
val tripleChatMessages = Triple(lookIntoFuture, showUnreadMessagesMarker, receivedChatMessages)
|
val tripleChatMessages = Triple(lookIntoFuture, showUnreadMessagesMarker, receivedChatMessages)
|
||||||
@ -378,6 +387,9 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
// remove temp messages from DB that are now found in the new messages
|
// remove temp messages from DB that are now found in the new messages
|
||||||
val chatMessagesReferenceIds = receivedChatMessages.mapTo(HashSet(receivedChatMessages.size)) { it.referenceId }
|
val chatMessagesReferenceIds = receivedChatMessages.mapTo(HashSet(receivedChatMessages.size)) { it.referenceId }
|
||||||
val tempChatMessagesThatCanBeReplaced = oldTempMessages.filter { it.referenceId in chatMessagesReferenceIds }
|
val tempChatMessagesThatCanBeReplaced = oldTempMessages.filter { it.referenceId in chatMessagesReferenceIds }
|
||||||
|
tempChatMessagesThatCanBeReplaced.forEach {
|
||||||
|
Log.d(TAG, "oldTempMessage that was identified in newMessages: " + it.message)
|
||||||
|
}
|
||||||
chatDao.deleteTempChatMessages(
|
chatDao.deleteTempChatMessages(
|
||||||
internalConversationId,
|
internalConversationId,
|
||||||
tempChatMessagesThatCanBeReplaced.map { it.referenceId!! }
|
tempChatMessagesThatCanBeReplaced.map { it.referenceId!! }
|
||||||
@ -389,6 +401,10 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
.sortedBy { it.internalId }
|
.sortedBy { it.internalId }
|
||||||
.map(ChatMessageEntity::asModel)
|
.map(ChatMessageEntity::asModel)
|
||||||
|
|
||||||
|
remainingTempMessages.forEach {
|
||||||
|
Log.d(TAG, "remainingTempMessage: " + it.message)
|
||||||
|
}
|
||||||
|
|
||||||
val triple = Triple(true, false, remainingTempMessages)
|
val triple = Triple(true, false, remainingTempMessages)
|
||||||
_messageFlow.emit(triple)
|
_messageFlow.emit(triple)
|
||||||
}
|
}
|
||||||
@ -475,15 +491,6 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
.map(ChatMessageEntity::asModel)
|
.map(ChatMessageEntity::asModel)
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun checkIfMessageIsSaved(messageId: Long): Boolean {
|
|
||||||
try {
|
|
||||||
chatDao.getChatMessageForConversation(internalConversationId, messageId)
|
|
||||||
return true
|
|
||||||
} catch (_: Exception) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST", "MagicNumber", "Detekt.TooGenericExceptionCaught")
|
@Suppress("UNCHECKED_CAST", "MagicNumber", "Detekt.TooGenericExceptionCaught")
|
||||||
private fun getMessagesFromServer(bundle: Bundle): Pair<Int, List<ChatMessageJson>>? {
|
private fun getMessagesFromServer(bundle: Bundle): Pair<Int, List<ChatMessageJson>>? {
|
||||||
val fieldMap = bundle.getSerializable(BundleKeys.KEY_FIELD_MAP) as HashMap<String, Int>
|
val fieldMap = bundle.getSerializable(BundleKeys.KEY_FIELD_MAP) as HashMap<String, Int>
|
||||||
@ -852,6 +859,17 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
|
|
||||||
val chatMessageModel = response.ocs?.data?.asModel()
|
val chatMessageModel = response.ocs?.data?.asModel()
|
||||||
|
|
||||||
|
val sentMessage = chatDao.getTempMessageForConversation(
|
||||||
|
internalConversationId,
|
||||||
|
referenceId
|
||||||
|
).firstOrNull()
|
||||||
|
|
||||||
|
sentMessage?.let {
|
||||||
|
it.sendStatus = SendStatus.SENT_PENDING_ACK
|
||||||
|
chatDao.updateChatMessage(it)
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.d(TAG, "sending chat message succeeded: " + message)
|
||||||
emit(Result.success(chatMessageModel))
|
emit(Result.success(chatMessageModel))
|
||||||
}
|
}
|
||||||
.catch { e ->
|
.catch { e ->
|
||||||
@ -862,7 +880,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
referenceId
|
referenceId
|
||||||
).firstOrNull()
|
).firstOrNull()
|
||||||
failedMessage?.let {
|
failedMessage?.let {
|
||||||
it.sendingFailed = true
|
it.sendStatus = SendStatus.FAILED
|
||||||
chatDao.updateChatMessage(it)
|
chatDao.updateChatMessage(it)
|
||||||
|
|
||||||
val failedMessageModel = it.asModel()
|
val failedMessageModel = it.asModel()
|
||||||
@ -883,7 +901,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
referenceId: String
|
referenceId: String
|
||||||
): Flow<Result<ChatMessage?>> {
|
): Flow<Result<ChatMessage?>> {
|
||||||
val messageToResend = chatDao.getTempMessageForConversation(internalConversationId, referenceId).first()
|
val messageToResend = chatDao.getTempMessageForConversation(internalConversationId, referenceId).first()
|
||||||
messageToResend.sendingFailed = false
|
messageToResend.sendStatus = SendStatus.PENDING
|
||||||
chatDao.updateChatMessage(messageToResend)
|
chatDao.updateChatMessage(messageToResend)
|
||||||
|
|
||||||
val messageToResendModel = messageToResend.asModel()
|
val messageToResendModel = messageToResend.asModel()
|
||||||
@ -939,8 +957,8 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun sendTempChatMessages(credentials: String, url: String) {
|
override suspend fun sendUnsentChatMessages(credentials: String, url: String) {
|
||||||
val tempMessages = chatDao.getTempMessagesForConversation(internalConversationId).first()
|
val tempMessages = chatDao.getTempUnsentMessagesForConversation(internalConversationId).first()
|
||||||
tempMessages.sortedBy { it.internalId }.onEach {
|
tempMessages.sortedBy { it.internalId }.onEach {
|
||||||
sendChatMessage(
|
sendChatMessage(
|
||||||
credentials,
|
credentials,
|
||||||
@ -1034,7 +1052,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
actorDisplayName = currentUser.displayName!!,
|
actorDisplayName = currentUser.displayName!!,
|
||||||
referenceId = referenceId,
|
referenceId = referenceId,
|
||||||
isTemporary = true,
|
isTemporary = true,
|
||||||
sendingFailed = false,
|
sendStatus = SendStatus.PENDING,
|
||||||
silent = sendWithoutNotification
|
silent = sendWithoutNotification
|
||||||
)
|
)
|
||||||
return entity
|
return entity
|
||||||
|
@ -285,10 +285,6 @@ class ChatViewModel @Inject constructor(
|
|||||||
conversationRepository.getRoom(token)
|
conversationRepository.getRoom(token)
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun isMessageSaved(messageId: Long): Boolean {
|
|
||||||
return chatRepository.checkIfMessageIsSaved(messageId)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getCapabilities(user: User, token: String, conversationModel: ConversationModel) {
|
fun getCapabilities(user: User, token: String, conversationModel: ConversationModel) {
|
||||||
Log.d(TAG, "Remote server ${conversationModel.remoteServer}")
|
Log.d(TAG, "Remote server ${conversationModel.remoteServer}")
|
||||||
if (conversationModel.remoteServer.isNullOrEmpty()) {
|
if (conversationModel.remoteServer.isNullOrEmpty()) {
|
||||||
|
@ -169,9 +169,9 @@ class MessageInputViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sendTempMessages(credentials: String, url: String) {
|
fun sendUnsentMessages(credentials: String, url: String) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
chatRepository.sendTempChatMessages(
|
chatRepository.sendUnsentChatMessages(
|
||||||
credentials,
|
credentials,
|
||||||
url
|
url
|
||||||
)
|
)
|
||||||
|
@ -29,6 +29,7 @@ fun ContactsScreen(contactsViewModel: ContactsViewModel, uiState: ContactsUiStat
|
|||||||
val isSearchActive by contactsViewModel.isSearchActive.collectAsStateWithLifecycle()
|
val isSearchActive by contactsViewModel.isSearchActive.collectAsStateWithLifecycle()
|
||||||
val isAddParticipants by contactsViewModel.isAddParticipantsView.collectAsStateWithLifecycle()
|
val isAddParticipants by contactsViewModel.isAddParticipantsView.collectAsStateWithLifecycle()
|
||||||
val autocompleteUsers by contactsViewModel.selectedParticipantsList.collectAsStateWithLifecycle()
|
val autocompleteUsers by contactsViewModel.selectedParticipantsList.collectAsStateWithLifecycle()
|
||||||
|
val enableAddButton by contactsViewModel.enableAddButton.collectAsStateWithLifecycle()
|
||||||
|
|
||||||
Scaffold(
|
Scaffold(
|
||||||
topBar = {
|
topBar = {
|
||||||
@ -49,6 +50,10 @@ fun ContactsScreen(contactsViewModel: ContactsViewModel, uiState: ContactsUiStat
|
|||||||
},
|
},
|
||||||
onUpdateAutocompleteUsers = {
|
onUpdateAutocompleteUsers = {
|
||||||
contactsViewModel.getContactsFromSearchParams()
|
contactsViewModel.getContactsFromSearchParams()
|
||||||
|
},
|
||||||
|
enableAddButton = enableAddButton,
|
||||||
|
clickAddButton = {
|
||||||
|
contactsViewModel.modifyClickAddButton(it)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
|
@ -36,6 +36,15 @@ class ContactsViewModel @Inject constructor(
|
|||||||
private val _isAddParticipantsView = MutableStateFlow(false)
|
private val _isAddParticipantsView = MutableStateFlow(false)
|
||||||
val isAddParticipantsView: StateFlow<Boolean> = _isAddParticipantsView
|
val isAddParticipantsView: StateFlow<Boolean> = _isAddParticipantsView
|
||||||
|
|
||||||
|
private val _enableAddButton = MutableStateFlow(false)
|
||||||
|
val enableAddButton: StateFlow<Boolean> = _enableAddButton
|
||||||
|
|
||||||
|
@Suppress("PropertyName")
|
||||||
|
private val _selectedContacts = MutableStateFlow<List<AutocompleteUser>>(emptyList())
|
||||||
|
|
||||||
|
@Suppress("PropertyName")
|
||||||
|
private val _clickAddButton = MutableStateFlow(false)
|
||||||
|
|
||||||
private var hideAlreadyAddedParticipants: Boolean = false
|
private var hideAlreadyAddedParticipants: Boolean = false
|
||||||
|
|
||||||
init {
|
init {
|
||||||
@ -46,14 +55,28 @@ class ContactsViewModel @Inject constructor(
|
|||||||
_searchQuery.value = query
|
_searchQuery.value = query
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun modifyClickAddButton(value: Boolean) {
|
||||||
|
_clickAddButton.value = value
|
||||||
|
}
|
||||||
|
|
||||||
fun selectContact(contact: AutocompleteUser) {
|
fun selectContact(contact: AutocompleteUser) {
|
||||||
val updatedParticipants = selectedParticipants.value + contact
|
val updatedParticipants = selectedParticipants.value + contact
|
||||||
selectedParticipants.value = updatedParticipants
|
selectedParticipants.value = updatedParticipants
|
||||||
|
_selectedContacts.value = _selectedContacts.value + contact
|
||||||
|
}
|
||||||
|
|
||||||
|
fun updateAddButtonState() {
|
||||||
|
if (_selectedContacts.value.isEmpty()) {
|
||||||
|
_enableAddButton.value = false
|
||||||
|
} else {
|
||||||
|
_enableAddButton.value = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deselectContact(contact: AutocompleteUser) {
|
fun deselectContact(contact: AutocompleteUser) {
|
||||||
val updatedParticipants = selectedParticipants.value - contact
|
val updatedParticipants = selectedParticipants.value - contact
|
||||||
selectedParticipants.value = updatedParticipants
|
selectedParticipants.value = updatedParticipants
|
||||||
|
_selectedContacts.value = _selectedContacts.value - contact
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateSelectedParticipants(participants: List<AutocompleteUser>) {
|
fun updateSelectedParticipants(participants: List<AutocompleteUser>) {
|
||||||
@ -76,20 +99,23 @@ class ContactsViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("Detekt.TooGenericExceptionCaught")
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
fun getContactsFromSearchParams() {
|
fun getContactsFromSearchParams(query: String = "") {
|
||||||
_contactsViewState.value = ContactsUiState.Loading
|
_contactsViewState.value = ContactsUiState.Loading
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
try {
|
try {
|
||||||
val contacts = repository.getContacts(
|
val contacts = repository.getContacts(
|
||||||
searchQuery.value,
|
if (query != "") query else searchQuery.value,
|
||||||
shareTypeList
|
shareTypeList
|
||||||
)
|
)
|
||||||
val contactsList: MutableList<AutocompleteUser>? = contacts.ocs!!.data?.toMutableList()
|
val contactsList: MutableList<AutocompleteUser>? = contacts.ocs!!.data?.toMutableList()
|
||||||
|
|
||||||
if (hideAlreadyAddedParticipants) {
|
if (hideAlreadyAddedParticipants && !_clickAddButton.value) {
|
||||||
contactsList?.removeAll(selectedParticipants.value)
|
contactsList?.removeAll(selectedParticipants.value)
|
||||||
}
|
}
|
||||||
|
if (_clickAddButton.value) {
|
||||||
|
contactsList?.removeAll(selectedParticipants.value)
|
||||||
|
contactsList?.addAll(_selectedContacts.value)
|
||||||
|
}
|
||||||
_contactsViewState.value = ContactsUiState.Success(contactsList)
|
_contactsViewState.value = ContactsUiState.Success(contactsList)
|
||||||
} catch (exception: Exception) {
|
} catch (exception: Exception) {
|
||||||
_contactsViewState.value = ContactsUiState.Error(exception.message ?: "")
|
_contactsViewState.value = ContactsUiState.Error(exception.message ?: "")
|
||||||
|
@ -13,6 +13,8 @@ import android.app.Activity
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
|
import androidx.compose.foundation.layout.wrapContentWidth
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
||||||
import androidx.compose.material.icons.filled.Search
|
import androidx.compose.material.icons.filled.Search
|
||||||
@ -20,8 +22,10 @@ import androidx.compose.material3.ExperimentalMaterial3Api
|
|||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
|
import androidx.compose.material3.TextButton
|
||||||
import androidx.compose.material3.TopAppBar
|
import androidx.compose.material3.TopAppBar
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
@ -30,6 +34,7 @@ import com.nextcloud.talk.models.json.autocomplete.AutocompleteUser
|
|||||||
|
|
||||||
@SuppressLint("UnrememberedMutableState")
|
@SuppressLint("UnrememberedMutableState")
|
||||||
@OptIn(ExperimentalMaterial3Api::class)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
|
@Suppress("LongParameterList", "LongMethod")
|
||||||
@Composable
|
@Composable
|
||||||
fun AppBar(
|
fun AppBar(
|
||||||
title: String,
|
title: String,
|
||||||
@ -40,12 +45,18 @@ fun AppBar(
|
|||||||
onEnableSearch: () -> Unit,
|
onEnableSearch: () -> Unit,
|
||||||
onDisableSearch: () -> Unit,
|
onDisableSearch: () -> Unit,
|
||||||
onUpdateSearchQuery: (String) -> Unit,
|
onUpdateSearchQuery: (String) -> Unit,
|
||||||
onUpdateAutocompleteUsers: () -> Unit
|
onUpdateAutocompleteUsers: () -> Unit,
|
||||||
|
enableAddButton: Boolean,
|
||||||
|
clickAddButton: (Boolean) -> Unit
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
|
val appTitle = if (!isSearchActive) {
|
||||||
|
title
|
||||||
|
} else {
|
||||||
|
""
|
||||||
|
}
|
||||||
TopAppBar(
|
TopAppBar(
|
||||||
title = { Text(text = title) },
|
title = { Text(text = appTitle) },
|
||||||
navigationIcon = {
|
navigationIcon = {
|
||||||
IconButton(onClick = {
|
IconButton(onClick = {
|
||||||
(context as? Activity)?.finish()
|
(context as? Activity)?.finish()
|
||||||
@ -54,36 +65,53 @@ fun AppBar(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
actions = {
|
actions = {
|
||||||
IconButton(onClick = onEnableSearch) {
|
if (!isSearchActive) {
|
||||||
Icon(Icons.Filled.Search, contentDescription = stringResource(R.string.search_icon))
|
IconButton(onClick = onEnableSearch) {
|
||||||
}
|
Icon(Icons.Filled.Search, contentDescription = stringResource(R.string.search_icon))
|
||||||
if (isAddParticipants) {
|
}
|
||||||
Text(
|
if (isAddParticipants) {
|
||||||
text = stringResource(id = R.string.nc_contacts_done),
|
Text(
|
||||||
modifier = Modifier.clickable {
|
text = stringResource(id = R.string.nc_contacts_done),
|
||||||
val resultIntent = Intent().apply {
|
modifier = Modifier.clickable {
|
||||||
putParcelableArrayListExtra(
|
val resultIntent = Intent().apply {
|
||||||
"selectedParticipants",
|
putParcelableArrayListExtra(
|
||||||
ArrayList(autocompleteUsers)
|
"selectedParticipants",
|
||||||
)
|
ArrayList(autocompleteUsers)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
(context as? Activity)?.setResult(Activity.RESULT_OK, resultIntent)
|
||||||
|
(context as? Activity)?.finish()
|
||||||
}
|
}
|
||||||
(context as? Activity)?.setResult(Activity.RESULT_OK, resultIntent)
|
)
|
||||||
(context as? Activity)?.finish()
|
}
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
if (isSearchActive) {
|
if (isSearchActive) {
|
||||||
Row {
|
Row(modifier = Modifier.fillMaxWidth()) {
|
||||||
SearchComponent(
|
SearchComponent(
|
||||||
text = searchQuery,
|
text = searchQuery,
|
||||||
onTextChange = { searchQuery ->
|
onTextChange = { searchQuery ->
|
||||||
onUpdateSearchQuery(searchQuery)
|
onUpdateSearchQuery(searchQuery)
|
||||||
onUpdateAutocompleteUsers()
|
onUpdateAutocompleteUsers()
|
||||||
},
|
},
|
||||||
onDisableSearch = onDisableSearch
|
onDisableSearch = onDisableSearch,
|
||||||
|
modifier = Modifier.weight(1f)
|
||||||
)
|
)
|
||||||
|
if (isAddParticipants) {
|
||||||
|
TextButton(
|
||||||
|
modifier = Modifier.align(Alignment.CenterVertically).wrapContentWidth(),
|
||||||
|
onClick = {
|
||||||
|
onDisableSearch()
|
||||||
|
onUpdateSearchQuery("")
|
||||||
|
clickAddButton(true)
|
||||||
|
onUpdateAutocompleteUsers()
|
||||||
|
},
|
||||||
|
enabled = enableAddButton
|
||||||
|
) {
|
||||||
|
Text(text = context.getString(R.string.add_participants))
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,8 +65,10 @@ fun ContactItemRow(contact: AutocompleteUser, contactsViewModel: ContactsViewMod
|
|||||||
isSelected = !isSelected
|
isSelected = !isSelected
|
||||||
if (isSelected) {
|
if (isSelected) {
|
||||||
contactsViewModel.selectContact(contact)
|
contactsViewModel.selectContact(contact)
|
||||||
|
contactsViewModel.updateAddButtonState()
|
||||||
} else {
|
} else {
|
||||||
contactsViewModel.deselectContact(contact)
|
contactsViewModel.deselectContact(contact)
|
||||||
|
contactsViewModel.updateAddButtonState()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
package com.nextcloud.talk.contacts.components
|
package com.nextcloud.talk.contacts.components
|
||||||
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
import androidx.compose.foundation.text.KeyboardActions
|
import androidx.compose.foundation.text.KeyboardActions
|
||||||
import androidx.compose.foundation.text.KeyboardOptions
|
import androidx.compose.foundation.text.KeyboardOptions
|
||||||
@ -34,16 +33,19 @@ import androidx.compose.ui.unit.sp
|
|||||||
import com.nextcloud.talk.R
|
import com.nextcloud.talk.R
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun SearchComponent(text: String, onTextChange: (String) -> Unit, onDisableSearch: () -> Unit) {
|
fun SearchComponent(
|
||||||
|
text: String,
|
||||||
|
onTextChange: (String) -> Unit,
|
||||||
|
onDisableSearch: () -> Unit,
|
||||||
|
modifier: Modifier = Modifier
|
||||||
|
) {
|
||||||
val keyboardController = LocalSoftwareKeyboardController.current
|
val keyboardController = LocalSoftwareKeyboardController.current
|
||||||
|
|
||||||
TextField(
|
TextField(
|
||||||
modifier = Modifier
|
|
||||||
.background(MaterialTheme.colorScheme.background)
|
|
||||||
.fillMaxWidth()
|
|
||||||
.height(60.dp),
|
|
||||||
value = text,
|
value = text,
|
||||||
onValueChange = { onTextChange(it) },
|
onValueChange = { onTextChange(it) },
|
||||||
|
modifier = modifier
|
||||||
|
.background(MaterialTheme.colorScheme.background)
|
||||||
|
.height(60.dp),
|
||||||
placeholder = { Text(text = stringResource(R.string.nc_search)) },
|
placeholder = { Text(text = stringResource(R.string.nc_search)) },
|
||||||
textStyle = TextStyle(fontSize = 16.sp),
|
textStyle = TextStyle(fontSize = 16.sp),
|
||||||
singleLine = true,
|
singleLine = true,
|
||||||
|
@ -252,6 +252,8 @@ class ConversationInfoActivity :
|
|||||||
initClearChatHistoryObserver()
|
initClearChatHistoryObserver()
|
||||||
initMarkConversationAsSensitiveObserver()
|
initMarkConversationAsSensitiveObserver()
|
||||||
initMarkConversationAsInsensitiveObserver()
|
initMarkConversationAsInsensitiveObserver()
|
||||||
|
initMarkConversationAsImportantObserver()
|
||||||
|
initMarkConversationAsUnimportantObserver()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initMarkConversationAsSensitiveObserver() {
|
private fun initMarkConversationAsSensitiveObserver() {
|
||||||
@ -381,7 +383,47 @@ class ConversationInfoActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
private fun initMarkConversationAsImportantObserver() {
|
||||||
|
viewModel.markAsImportantResult.observe(this) { uiState ->
|
||||||
|
when (uiState) {
|
||||||
|
is ConversationInfoViewModel.MarkConversationAsImportantViewState.Success -> {
|
||||||
|
Snackbar.make(
|
||||||
|
binding.root,
|
||||||
|
context.getString(R.string.nc_mark_conversation_as_important),
|
||||||
|
Snackbar.LENGTH_LONG
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
is ConversationInfoViewModel.MarkConversationAsImportantViewState.Error -> {
|
||||||
|
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
|
||||||
|
Log.e(TAG, "failed to mark conversation as important", uiState.exception)
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initMarkConversationAsUnimportantObserver() {
|
||||||
|
viewModel.markAsUnimportantResult.observe(this) { uiState ->
|
||||||
|
when (uiState) {
|
||||||
|
is ConversationInfoViewModel.MarkConversationAsUnimportantViewState.Success -> {
|
||||||
|
Snackbar.make(
|
||||||
|
binding.root,
|
||||||
|
context.getString(R.string.nc_mark_conversation_as_unimportant),
|
||||||
|
Snackbar.LENGTH_LONG
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
is ConversationInfoViewModel.MarkConversationAsUnimportantViewState.Error -> {
|
||||||
|
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
|
||||||
|
Log.e(TAG, "failed to mark conversation as unimportant", uiState.exception)
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
private fun initViewStateObserver() {
|
private fun initViewStateObserver() {
|
||||||
viewModel.viewState.observe(this) { state ->
|
viewModel.viewState.observe(this) { state ->
|
||||||
when (state) {
|
when (state) {
|
||||||
@ -402,8 +444,10 @@ class ConversationInfoActivity :
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (conversation!!.type == ConversationEnums.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
|
conversation?.let {
|
||||||
viewModel.getProfileData(conversationUser, conversation!!.name)
|
if (it.type == ConversationEnums.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
|
||||||
|
viewModel.getProfileData(conversationUser, it.name)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -418,28 +462,48 @@ class ConversationInfoActivity :
|
|||||||
viewModel.getProfileViewState.observe(this) { state ->
|
viewModel.getProfileViewState.observe(this) { state ->
|
||||||
when (state) {
|
when (state) {
|
||||||
is ConversationInfoViewModel.GetProfileSuccessState -> {
|
is ConversationInfoViewModel.GetProfileSuccessState -> {
|
||||||
val profile = state.profile
|
try {
|
||||||
val pronouns = profile.pronouns ?: ""
|
// Pronouns
|
||||||
binding.pronouns.text = pronouns
|
val profile = state.profile
|
||||||
|
val pronouns = profile.pronouns ?: ""
|
||||||
|
binding.pronouns.text = pronouns
|
||||||
|
|
||||||
val concat1 = if (profile.role != null && profile.company != null) " @ " else ""
|
// Role @ Organization
|
||||||
val role = profile.role ?: ""
|
val concat1 = if (profile.role != null && profile.company != null) " @ " else ""
|
||||||
val company = profile.company ?: ""
|
val role = profile.role ?: ""
|
||||||
val professionCompanyText = "$role$concat1$company"
|
val company = profile.company ?: ""
|
||||||
binding.professionCompany.text = professionCompanyText
|
val professionCompanyText = "$role$concat1$company"
|
||||||
|
binding.professionCompany.text = professionCompanyText
|
||||||
|
|
||||||
val profileZoneOffset = ZoneOffset.ofTotalSeconds(0)
|
// Local Time: xX:xX · Address
|
||||||
val secondsToAdd = profile.timezoneOffset?.toLong() ?: 0
|
val profileZoneOffset = ZoneOffset.ofTotalSeconds(0)
|
||||||
val localTime = ZonedDateTime.ofInstant(Instant.now().plusSeconds(secondsToAdd), profileZoneOffset)
|
val secondsToAdd = profile.timezoneOffset?.toLong() ?: 0
|
||||||
val localTimeString = localTime.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT))
|
val localTime = ZonedDateTime.ofInstant(
|
||||||
val concat2 = if (profile.address != null) " · " else ""
|
Instant.now().plusSeconds(secondsToAdd),
|
||||||
val address = profile.address ?: ""
|
profileZoneOffset
|
||||||
val localTimeLocation = "$localTimeString$concat2$address"
|
)
|
||||||
binding.locationTime.text = resources.getString(R.string.local_time, localTimeLocation)
|
val localTimeString = localTime.format(
|
||||||
|
DateTimeFormatter
|
||||||
|
.ofLocalizedTime(FormatStyle.SHORT)
|
||||||
|
.withLocale(Locale.getDefault())
|
||||||
|
)
|
||||||
|
val concat2 = if (profile.address != null) " · " else ""
|
||||||
|
val address = profile.address ?: ""
|
||||||
|
val localTimeLocation = "$localTimeString$concat2$address"
|
||||||
|
binding.locationTime.text = resources.getString(R.string.local_time, localTimeLocation)
|
||||||
|
|
||||||
binding.pronouns.visibility = VISIBLE
|
binding.pronouns.visibility = VISIBLE
|
||||||
binding.professionCompany.visibility = if (professionCompanyText.isNotEmpty()) VISIBLE else GONE
|
binding.professionCompany.visibility = if (professionCompanyText.isNotEmpty()) VISIBLE else GONE
|
||||||
binding.locationTime.visibility = VISIBLE
|
binding.locationTime.visibility = VISIBLE
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.e(TAG, "Exception getting profile information", e)
|
||||||
|
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
is ConversationInfoViewModel.GetProfileErrorState -> {
|
||||||
|
Log.e(TAG, "Network error occurred getting profile information")
|
||||||
|
Snackbar.make(binding.root, R.string.nc_common_error_sorry, Snackbar.LENGTH_LONG).show()
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {}
|
else -> {}
|
||||||
@ -504,7 +568,8 @@ class ConversationInfoActivity :
|
|||||||
binding.guestAccessView.allowGuestsSwitch,
|
binding.guestAccessView.allowGuestsSwitch,
|
||||||
binding.guestAccessView.passwordProtectionSwitch,
|
binding.guestAccessView.passwordProtectionSwitch,
|
||||||
binding.recordingConsentView.recordingConsentForConversationSwitch,
|
binding.recordingConsentView.recordingConsentForConversationSwitch,
|
||||||
binding.lockConversationSwitch
|
binding.lockConversationSwitch,
|
||||||
|
binding.notificationSettingsView.sensitiveConversationSwitch
|
||||||
).forEach(viewThemeUtils.talk::colorSwitch)
|
).forEach(viewThemeUtils.talk::colorSwitch)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -817,16 +882,13 @@ class ConversationInfoActivity :
|
|||||||
private fun selectParticipantsToAdd() {
|
private fun selectParticipantsToAdd() {
|
||||||
val bundle = Bundle()
|
val bundle = Bundle()
|
||||||
val existingParticipants = ArrayList<AutocompleteUser>()
|
val existingParticipants = ArrayList<AutocompleteUser>()
|
||||||
|
|
||||||
for (userItem in userItems) {
|
for (userItem in userItems) {
|
||||||
if (userItem.model.calculatedActorType == USERS) {
|
val user = AutocompleteUser(
|
||||||
val user = AutocompleteUser(
|
userItem.model.calculatedActorId!!,
|
||||||
userItem.model.calculatedActorId!!,
|
userItem.model.displayName,
|
||||||
userItem.model.displayName,
|
userItem.model.calculatedActorType.name.lowercase()
|
||||||
userItem.model.calculatedActorType.name.lowercase()
|
)
|
||||||
)
|
existingParticipants.add(user)
|
||||||
existingParticipants.add(user)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bundle.putBoolean(BundleKeys.KEY_ADD_PARTICIPANTS, true)
|
bundle.putBoolean(BundleKeys.KEY_ADD_PARTICIPANTS, true)
|
||||||
@ -1025,6 +1087,31 @@ class ConversationInfoActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
binding.notificationSettingsView.importantConversationSwitch.isChecked = conversation!!.hasImportant
|
||||||
|
|
||||||
|
binding.notificationSettingsView.notificationSettingsImportantConversation.setOnClickListener {
|
||||||
|
val isChecked = binding.notificationSettingsView.importantConversationSwitch.isChecked
|
||||||
|
binding.notificationSettingsView.importantConversationSwitch.isChecked = !isChecked
|
||||||
|
if (!isChecked) {
|
||||||
|
viewModel.markConversationAsImportant(
|
||||||
|
credentials,
|
||||||
|
conversationUser.baseUrl!!,
|
||||||
|
conversation?.token!!
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
viewModel.markConversationAsUnimportant(
|
||||||
|
credentials,
|
||||||
|
conversationUser.baseUrl!!,
|
||||||
|
conversation?.token!!
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.IMPORTANT_CONVERSATIONS)) {
|
||||||
|
binding.notificationSettingsView.notificationSettingsImportantConversation.visibility = VISIBLE
|
||||||
|
} else {
|
||||||
|
binding.notificationSettingsView.notificationSettingsImportantConversation.visibility = GONE
|
||||||
|
}
|
||||||
|
|
||||||
if (!hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ARCHIVE_CONVERSATIONS)) {
|
if (!hasSpreedFeatureCapability(spreedCapabilities, SpreedFeatures.ARCHIVE_CONVERSATIONS)) {
|
||||||
binding.archiveConversationBtn.visibility = GONE
|
binding.archiveConversationBtn.visibility = GONE
|
||||||
binding.archiveConversationTextHint.visibility = GONE
|
binding.archiveConversationTextHint.visibility = GONE
|
||||||
@ -1756,13 +1843,6 @@ class ConversationInfoActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun setUpNotificationSettings(module: DatabaseStorageModule) {
|
private fun setUpNotificationSettings(module: DatabaseStorageModule) {
|
||||||
binding.notificationSettingsView.notificationSettingsImportantConversation.setOnClickListener {
|
|
||||||
val isChecked = binding.notificationSettingsView.importantConversationSwitch.isChecked
|
|
||||||
binding.notificationSettingsView.importantConversationSwitch.isChecked = !isChecked
|
|
||||||
lifecycleScope.launch {
|
|
||||||
module.saveBoolean("important_conversation_switch", !isChecked)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
binding.notificationSettingsView.notificationSettingsCallNotifications.setOnClickListener {
|
binding.notificationSettingsView.notificationSettingsCallNotifications.setOnClickListener {
|
||||||
val isChecked = binding.notificationSettingsView.callNotificationsSwitch.isChecked
|
val isChecked = binding.notificationSettingsView.callNotificationsSwitch.isChecked
|
||||||
binding.notificationSettingsView.callNotificationsSwitch.isChecked = !isChecked
|
binding.notificationSettingsView.callNotificationsSwitch.isChecked = !isChecked
|
||||||
@ -1780,9 +1860,6 @@ class ConversationInfoActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.notificationSettingsView.importantConversationSwitch.isChecked = module
|
|
||||||
.getBoolean("important_conversation_switch", false)
|
|
||||||
|
|
||||||
if (conversation!!.remoteServer.isNullOrEmpty()) {
|
if (conversation!!.remoteServer.isNullOrEmpty()) {
|
||||||
binding.notificationSettingsView.notificationSettingsCallNotifications.visibility = VISIBLE
|
binding.notificationSettingsView.notificationSettingsCallNotifications.visibility = VISIBLE
|
||||||
binding.notificationSettingsView.callNotificationsSwitch.isChecked = module
|
binding.notificationSettingsView.callNotificationsSwitch.isChecked = module
|
||||||
|
@ -124,6 +124,18 @@ class ConversationInfoViewModel @Inject constructor(
|
|||||||
val getConversationReadOnlyState: LiveData<SetConversationReadOnlyViewState>
|
val getConversationReadOnlyState: LiveData<SetConversationReadOnlyViewState>
|
||||||
get() = _getConversationReadOnlyState
|
get() = _getConversationReadOnlyState
|
||||||
|
|
||||||
|
@Suppress("PropertyName")
|
||||||
|
private val _markConversationAsImportantResult =
|
||||||
|
MutableLiveData<MarkConversationAsImportantViewState>(MarkConversationAsImportantViewState.None)
|
||||||
|
val markAsImportantResult: LiveData<MarkConversationAsImportantViewState>
|
||||||
|
get() = _markConversationAsImportantResult
|
||||||
|
|
||||||
|
@Suppress("PropertyName")
|
||||||
|
private val _markConversationAsUnimportantResult =
|
||||||
|
MutableLiveData<MarkConversationAsUnimportantViewState>(MarkConversationAsUnimportantViewState.None)
|
||||||
|
val markAsUnimportantResult: LiveData<MarkConversationAsUnimportantViewState>
|
||||||
|
get() = _markConversationAsUnimportantResult
|
||||||
|
|
||||||
private val _createRoomViewState = MutableLiveData<CreateRoomUIState>(CreateRoomUIState.None)
|
private val _createRoomViewState = MutableLiveData<CreateRoomUIState>(CreateRoomUIState.None)
|
||||||
val createRoomViewState: LiveData<CreateRoomUIState>
|
val createRoomViewState: LiveData<CreateRoomUIState>
|
||||||
get() = _createRoomViewState
|
get() = _createRoomViewState
|
||||||
@ -307,14 +319,19 @@ class ConversationInfoViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
fun getProfileData(user: User, userId: String) {
|
fun getProfileData(user: User, userId: String) {
|
||||||
val url = ApiUtils.getUrlForProfile(user.baseUrl!!, userId)
|
val url = ApiUtils.getUrlForProfile(user.baseUrl!!, userId)
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
val profile = conversationsRepository.getProfile(user.getCredentials(), url)
|
try {
|
||||||
if (profile != null) {
|
val profile = conversationsRepository.getProfile(user.getCredentials(), url)
|
||||||
_getProfileViewState.value = GetProfileSuccessState(profile)
|
if (profile != null) {
|
||||||
} else {
|
_getProfileViewState.value = GetProfileSuccessState(profile)
|
||||||
_getProfileViewState.value = GetProfileErrorState
|
} else {
|
||||||
|
_getProfileViewState.value = GetProfileErrorState
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
Log.w(TAG, "Failed to get profile data (if not supported there wil be http405)", e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -356,6 +373,34 @@ class ConversationInfoViewModel @Inject constructor(
|
|||||||
conversationsRepository.unarchiveConversation(user.getCredentials(), url)
|
conversationsRepository.unarchiveConversation(user.getCredentials(), url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
|
fun markConversationAsImportant(credentials: String, baseUrl: String, roomToken: String) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
try {
|
||||||
|
val response = conversationsRepository.markConversationAsImportant(credentials, baseUrl, roomToken)
|
||||||
|
_markConversationAsImportantResult.value =
|
||||||
|
MarkConversationAsImportantViewState.Success(response.ocs?.meta?.statusCode!!)
|
||||||
|
} catch (exception: Exception) {
|
||||||
|
_markConversationAsImportantResult.value =
|
||||||
|
MarkConversationAsImportantViewState.Error(exception)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
|
fun markConversationAsUnimportant(credentials: String, baseUrl: String, roomToken: String) {
|
||||||
|
viewModelScope.launch {
|
||||||
|
try {
|
||||||
|
val response = conversationsRepository.markConversationAsUnImportant(credentials, baseUrl, roomToken)
|
||||||
|
_markConversationAsUnimportantResult.value =
|
||||||
|
MarkConversationAsUnimportantViewState.Success(response.ocs?.meta?.statusCode!!)
|
||||||
|
} catch (exception: Exception) {
|
||||||
|
_markConversationAsUnimportantResult.value =
|
||||||
|
MarkConversationAsUnimportantViewState.Error(exception)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Suppress("Detekt.TooGenericExceptionCaught")
|
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||||
fun clearChatHistory(apiVersion: Int, roomToken: String) {
|
fun clearChatHistory(apiVersion: Int, roomToken: String) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
@ -480,4 +525,16 @@ class ConversationInfoViewModel @Inject constructor(
|
|||||||
data object Success : PasswordUiState()
|
data object Success : PasswordUiState()
|
||||||
data class Error(val exception: Exception) : PasswordUiState()
|
data class Error(val exception: Exception) : PasswordUiState()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sealed class MarkConversationAsImportantViewState {
|
||||||
|
data object None : MarkConversationAsImportantViewState()
|
||||||
|
data class Success(val statusCode: Int) : MarkConversationAsImportantViewState()
|
||||||
|
data class Error(val exception: Exception) : MarkConversationAsImportantViewState()
|
||||||
|
}
|
||||||
|
|
||||||
|
sealed class MarkConversationAsUnimportantViewState {
|
||||||
|
data object None : MarkConversationAsUnimportantViewState()
|
||||||
|
data class Success(val statusCode: Int) : MarkConversationAsUnimportantViewState()
|
||||||
|
data class Error(val exception: Exception) : MarkConversationAsUnimportantViewState()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ import android.animation.AnimatorInflater
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.app.SearchManager
|
import android.app.SearchManager
|
||||||
import android.content.ActivityNotFoundException
|
import android.content.ActivityNotFoundException
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
@ -41,6 +40,9 @@ import androidx.appcompat.app.AlertDialog
|
|||||||
import androidx.appcompat.widget.SearchView
|
import androidx.appcompat.widget.SearchView
|
||||||
import androidx.compose.runtime.mutableStateOf
|
import androidx.compose.runtime.mutableStateOf
|
||||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||||
|
import androidx.core.content.pm.ShortcutInfoCompat
|
||||||
|
import androidx.core.content.pm.ShortcutManagerCompat
|
||||||
|
import androidx.core.graphics.drawable.IconCompat
|
||||||
import androidx.core.graphics.drawable.toDrawable
|
import androidx.core.graphics.drawable.toDrawable
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import androidx.core.os.bundleOf
|
import androidx.core.os.bundleOf
|
||||||
@ -114,6 +116,9 @@ import com.nextcloud.talk.ui.dialog.ChooseAccountShareToDialogFragment
|
|||||||
import com.nextcloud.talk.ui.dialog.ContextChatCompose
|
import com.nextcloud.talk.ui.dialog.ContextChatCompose
|
||||||
import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog
|
import com.nextcloud.talk.ui.dialog.ConversationsListBottomDialog
|
||||||
import com.nextcloud.talk.ui.dialog.FilterConversationFragment
|
import com.nextcloud.talk.ui.dialog.FilterConversationFragment
|
||||||
|
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.ARCHIVE
|
||||||
|
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.MENTION
|
||||||
|
import com.nextcloud.talk.ui.dialog.FilterConversationFragment.Companion.UNREAD
|
||||||
import com.nextcloud.talk.users.UserManager
|
import com.nextcloud.talk.users.UserManager
|
||||||
import com.nextcloud.talk.utils.ApiUtils
|
import com.nextcloud.talk.utils.ApiUtils
|
||||||
import com.nextcloud.talk.utils.BrandingUtils
|
import com.nextcloud.talk.utils.BrandingUtils
|
||||||
@ -208,7 +213,7 @@ class ConversationsListActivity :
|
|||||||
private var adapter: FlexibleAdapter<AbstractFlexibleItem<*>>? = null
|
private var adapter: FlexibleAdapter<AbstractFlexibleItem<*>>? = null
|
||||||
private var conversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
private var conversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
||||||
private var conversationItemsWithHeader: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
private var conversationItemsWithHeader: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
||||||
private val searchableConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
private var searchableConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
||||||
private var filterableConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
private var filterableConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
||||||
private var nearFutureEventConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
private var nearFutureEventConversationItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
||||||
private var searchItem: MenuItem? = null
|
private var searchItem: MenuItem? = null
|
||||||
@ -232,9 +237,9 @@ class ConversationsListActivity :
|
|||||||
private var searchViewDisposable: Disposable? = null
|
private var searchViewDisposable: Disposable? = null
|
||||||
private var filterState =
|
private var filterState =
|
||||||
mutableMapOf(
|
mutableMapOf(
|
||||||
FilterConversationFragment.MENTION to false,
|
MENTION to false,
|
||||||
FilterConversationFragment.UNREAD to false,
|
UNREAD to false,
|
||||||
FilterConversationFragment.ARCHIVE to false,
|
ARCHIVE to false,
|
||||||
FilterConversationFragment.DEFAULT to true
|
FilterConversationFragment.DEFAULT to true
|
||||||
)
|
)
|
||||||
val searchBehaviorSubject = BehaviorSubject.createDefault(false)
|
val searchBehaviorSubject = BehaviorSubject.createDefault(false)
|
||||||
@ -406,6 +411,10 @@ class ConversationsListActivity :
|
|||||||
conversationsListViewModel.getRoomsFlow
|
conversationsListViewModel.getRoomsFlow
|
||||||
.onEach { list ->
|
.onEach { list ->
|
||||||
setConversationList(list)
|
setConversationList(list)
|
||||||
|
val noteToSelf = list
|
||||||
|
.firstOrNull { ConversationUtils.isNoteToSelfConversation(it) }
|
||||||
|
val isNoteToSelfAvailable = noteToSelf != null
|
||||||
|
handleNoteToSelfShortcut(isNoteToSelfAvailable, noteToSelf?.token ?: "")
|
||||||
}.collect()
|
}.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -458,7 +467,13 @@ class ConversationsListActivity :
|
|||||||
userItems.add(contactItem)
|
userItems.add(contactItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
searchableConversationItems.addAll(userItems)
|
val list = searchableConversationItems.filter {
|
||||||
|
it !is ContactItem
|
||||||
|
}.toMutableList()
|
||||||
|
|
||||||
|
list.addAll(userItems)
|
||||||
|
|
||||||
|
searchableConversationItems = list
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {}
|
else -> {}
|
||||||
@ -516,6 +531,29 @@ class ConversationsListActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun handleNoteToSelfShortcut(noteToSelfAvailable: Boolean, noteToSelfToken: String) {
|
||||||
|
if (noteToSelfAvailable) {
|
||||||
|
val bundle = Bundle()
|
||||||
|
bundle.putString(KEY_ROOM_TOKEN, noteToSelfToken)
|
||||||
|
bundle.putBoolean(BundleKeys.KEY_FOCUS_INPUT, true)
|
||||||
|
val intent = Intent(context, ChatActivity::class.java)
|
||||||
|
intent.putExtras(bundle)
|
||||||
|
intent.action = Intent.ACTION_VIEW
|
||||||
|
val openNotesString = resources.getString(R.string.open_notes)
|
||||||
|
|
||||||
|
val shortcut = ShortcutInfoCompat.Builder(context, NOTE_TO_SELF_SHORTCUT_ID)
|
||||||
|
.setShortLabel(openNotesString)
|
||||||
|
.setLongLabel(openNotesString)
|
||||||
|
.setIcon(IconCompat.createWithResource(context, R.drawable.ic_pencil_grey600_24dp))
|
||||||
|
.setIntent(intent)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)
|
||||||
|
} else {
|
||||||
|
ShortcutManagerCompat.removeDynamicShortcuts(context, listOf(NOTE_TO_SELF_SHORTCUT_ID))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setConversationList(list: List<ConversationModel>) {
|
private fun setConversationList(list: List<ConversationModel>) {
|
||||||
// Update Conversations
|
// Update Conversations
|
||||||
conversationItems.clear()
|
conversationItems.clear()
|
||||||
@ -523,26 +561,29 @@ class ConversationsListActivity :
|
|||||||
nearFutureEventConversationItems.clear()
|
nearFutureEventConversationItems.clear()
|
||||||
|
|
||||||
for (conversation in list) {
|
for (conversation in list) {
|
||||||
if (!isFutureEvent(conversation)) {
|
if (!isFutureEvent(conversation) && !conversation.hasArchived) {
|
||||||
addToNearFutureEventConversationItems(conversation)
|
addToNearFutureEventConversationItems(conversation)
|
||||||
}
|
}
|
||||||
addToConversationItems(conversation)
|
addToConversationItems(conversation)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getFilterStates()
|
||||||
|
val noFiltersActive = !(
|
||||||
|
filterState[MENTION] == true ||
|
||||||
|
filterState[UNREAD] == true ||
|
||||||
|
filterState[ARCHIVE] == true
|
||||||
|
)
|
||||||
|
|
||||||
sortConversations(conversationItems)
|
sortConversations(conversationItems)
|
||||||
sortConversations(conversationItemsWithHeader)
|
sortConversations(conversationItemsWithHeader)
|
||||||
sortConversations(nearFutureEventConversationItems)
|
sortConversations(nearFutureEventConversationItems)
|
||||||
|
|
||||||
if (!hasFilterEnabled() && searchBehaviorSubject.value == false) {
|
if (noFiltersActive && searchBehaviorSubject.value == false) {
|
||||||
adapter?.updateDataSet(nearFutureEventConversationItems, false)
|
adapter?.updateDataSet(nearFutureEventConversationItems, false)
|
||||||
} else {
|
} else {
|
||||||
// Filter Conversations
|
applyFilter()
|
||||||
if (!hasFilterEnabled()) {
|
|
||||||
filterableConversationItems = conversationItems
|
|
||||||
}
|
|
||||||
filterConversation()
|
|
||||||
adapter?.updateDataSet(filterableConversationItems, false)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Handler().postDelayed({ checkToShowUnreadBubble() }, UNREAD_BUBBLE_DELAY.toLong())
|
Handler().postDelayed({ checkToShowUnreadBubble() }, UNREAD_BUBBLE_DELAY.toLong())
|
||||||
|
|
||||||
// Fetch Open Conversations
|
// Fetch Open Conversations
|
||||||
@ -551,9 +592,14 @@ class ConversationsListActivity :
|
|||||||
intArrayOf(ApiUtils.API_V4, ApiUtils.API_V3, 1)
|
intArrayOf(ApiUtils.API_V4, ApiUtils.API_V3, 1)
|
||||||
)
|
)
|
||||||
fetchOpenConversations(apiVersion)
|
fetchOpenConversations(apiVersion)
|
||||||
|
}
|
||||||
|
|
||||||
// Get users
|
fun applyFilter() {
|
||||||
fetchUsers()
|
if (!hasFilterEnabled()) {
|
||||||
|
filterableConversationItems = conversationItems
|
||||||
|
}
|
||||||
|
filterConversation()
|
||||||
|
adapter?.updateDataSet(filterableConversationItems, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun hasFilterEnabled(): Boolean {
|
private fun hasFilterEnabled(): Boolean {
|
||||||
@ -585,32 +631,35 @@ class ConversationsListActivity :
|
|||||||
nearFutureEventConversationItems.add(conversationItem)
|
nearFutureEventConversationItems.add(conversationItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun filterConversation() {
|
fun getFilterStates() {
|
||||||
val accountId = UserIdUtils.getIdForUser(currentUser)
|
val accountId = UserIdUtils.getIdForUser(currentUser)
|
||||||
filterState[FilterConversationFragment.UNREAD] = (
|
filterState[UNREAD] = (
|
||||||
arbitraryStorageManager.getStorageSetting(
|
arbitraryStorageManager.getStorageSetting(
|
||||||
accountId,
|
accountId,
|
||||||
FilterConversationFragment.UNREAD,
|
UNREAD,
|
||||||
""
|
""
|
||||||
).blockingGet()?.value ?: ""
|
).blockingGet()?.value ?: ""
|
||||||
) == "true"
|
) == "true"
|
||||||
|
|
||||||
filterState[FilterConversationFragment.MENTION] = (
|
filterState[MENTION] = (
|
||||||
arbitraryStorageManager.getStorageSetting(
|
arbitraryStorageManager.getStorageSetting(
|
||||||
accountId,
|
accountId,
|
||||||
FilterConversationFragment.MENTION,
|
MENTION,
|
||||||
""
|
""
|
||||||
).blockingGet()?.value ?: ""
|
).blockingGet()?.value ?: ""
|
||||||
) == "true"
|
) == "true"
|
||||||
|
|
||||||
filterState[FilterConversationFragment.ARCHIVE] = (
|
filterState[ARCHIVE] = (
|
||||||
arbitraryStorageManager.getStorageSetting(
|
arbitraryStorageManager.getStorageSetting(
|
||||||
accountId,
|
accountId,
|
||||||
FilterConversationFragment.ARCHIVE,
|
ARCHIVE,
|
||||||
""
|
""
|
||||||
).blockingGet()?.value ?: ""
|
).blockingGet()?.value ?: ""
|
||||||
) == "true"
|
) == "true"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun filterConversation() {
|
||||||
|
getFilterStates()
|
||||||
val newItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
val newItems: MutableList<AbstractFlexibleItem<*>> = ArrayList()
|
||||||
val items = conversationItems
|
val items = conversationItems
|
||||||
for (i in items) {
|
for (i in items) {
|
||||||
@ -620,7 +669,7 @@ class ConversationsListActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val archiveFilterOn = filterState[FilterConversationFragment.ARCHIVE] ?: false
|
val archiveFilterOn = filterState[ARCHIVE] == true
|
||||||
if (archiveFilterOn && newItems.isEmpty()) {
|
if (archiveFilterOn && newItems.isEmpty()) {
|
||||||
binding.noArchivedConversationLayout.visibility = View.VISIBLE
|
binding.noArchivedConversationLayout.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
@ -642,7 +691,7 @@ class ConversationsListActivity :
|
|||||||
for ((k, v) in filterState) {
|
for ((k, v) in filterState) {
|
||||||
if (v) {
|
if (v) {
|
||||||
when (k) {
|
when (k) {
|
||||||
FilterConversationFragment.MENTION -> result = (result && conversation.unreadMention) ||
|
MENTION -> result = (result && conversation.unreadMention) ||
|
||||||
(
|
(
|
||||||
result &&
|
result &&
|
||||||
(
|
(
|
||||||
@ -652,10 +701,10 @@ class ConversationsListActivity :
|
|||||||
(conversation.unreadMessages > 0)
|
(conversation.unreadMessages > 0)
|
||||||
)
|
)
|
||||||
|
|
||||||
FilterConversationFragment.UNREAD -> result = result && (conversation.unreadMessages > 0)
|
UNREAD -> result = result && (conversation.unreadMessages > 0)
|
||||||
|
|
||||||
FilterConversationFragment.DEFAULT -> {
|
FilterConversationFragment.DEFAULT -> {
|
||||||
result = if (filterState[FilterConversationFragment.ARCHIVE] == true) {
|
result = if (filterState[ARCHIVE] == true) {
|
||||||
result && conversation.hasArchived
|
result && conversation.hasArchived
|
||||||
} else {
|
} else {
|
||||||
result && !conversation.hasArchived
|
result && !conversation.hasArchived
|
||||||
@ -735,7 +784,7 @@ class ConversationsListActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun initSearchView() {
|
private fun initSearchView() {
|
||||||
val searchManager = getSystemService(Context.SEARCH_SERVICE) as SearchManager?
|
val searchManager = getSystemService(SEARCH_SERVICE) as SearchManager?
|
||||||
if (searchItem != null) {
|
if (searchItem != null) {
|
||||||
searchView = MenuItemCompat.getActionView(searchItem) as SearchView
|
searchView = MenuItemCompat.getActionView(searchItem) as SearchView
|
||||||
viewThemeUtils.talk.themeSearchView(searchView!!)
|
viewThemeUtils.talk.themeSearchView(searchView!!)
|
||||||
@ -1151,8 +1200,8 @@ class ConversationsListActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fetchUsers() {
|
private fun fetchUsers(query: String = "") {
|
||||||
contactsViewModel.getContactsFromSearchParams()
|
contactsViewModel.getContactsFromSearchParams(query)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun handleHttpExceptions(throwable: Throwable) {
|
private fun handleHttpExceptions(throwable: Throwable) {
|
||||||
@ -1197,7 +1246,7 @@ class ConversationsListActivity :
|
|||||||
})
|
})
|
||||||
binding.recyclerView.setOnTouchListener { v: View, _: MotionEvent? ->
|
binding.recyclerView.setOnTouchListener { v: View, _: MotionEvent? ->
|
||||||
if (!isDestroyed) {
|
if (!isDestroyed) {
|
||||||
val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
|
val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
|
||||||
imm.hideSoftInputFromWindow(v.windowToken, 0)
|
imm.hideSoftInputFromWindow(v.windowToken, 0)
|
||||||
}
|
}
|
||||||
false
|
false
|
||||||
@ -1352,12 +1401,15 @@ class ConversationsListActivity :
|
|||||||
clearMessageSearchResults()
|
clearMessageSearchResults()
|
||||||
binding.noArchivedConversationLayout.visibility = View.GONE
|
binding.noArchivedConversationLayout.visibility = View.GONE
|
||||||
|
|
||||||
|
fetchUsers(filter)
|
||||||
|
|
||||||
if (hasFilterEnabled()) {
|
if (hasFilterEnabled()) {
|
||||||
adapter?.updateDataSet(conversationItems)
|
adapter?.updateDataSet(conversationItems)
|
||||||
adapter?.setFilter(filter)
|
adapter?.setFilter(filter)
|
||||||
adapter?.filterItems()
|
adapter?.filterItems()
|
||||||
adapter?.updateDataSet(filterableConversationItems)
|
adapter?.updateDataSet(filterableConversationItems)
|
||||||
} else {
|
} else {
|
||||||
|
adapter?.updateDataSet(searchableConversationItems)
|
||||||
adapter?.setFilter(filter)
|
adapter?.setFilter(filter)
|
||||||
adapter?.filterItems()
|
adapter?.filterItems()
|
||||||
}
|
}
|
||||||
@ -1372,9 +1424,10 @@ class ConversationsListActivity :
|
|||||||
|
|
||||||
private fun resetSearchResults() {
|
private fun resetSearchResults() {
|
||||||
clearMessageSearchResults()
|
clearMessageSearchResults()
|
||||||
|
adapter?.updateDataSet(conversationItems)
|
||||||
adapter?.setFilter("")
|
adapter?.setFilter("")
|
||||||
adapter?.filterItems()
|
adapter?.filterItems()
|
||||||
val archiveFilterOn = filterState[FilterConversationFragment.ARCHIVE] ?: false
|
val archiveFilterOn = filterState[ARCHIVE] == true
|
||||||
if (archiveFilterOn && adapter!!.isEmpty) {
|
if (archiveFilterOn && adapter!!.isEmpty) {
|
||||||
binding.noArchivedConversationLayout.visibility = View.VISIBLE
|
binding.noArchivedConversationLayout.visibility = View.VISIBLE
|
||||||
} else {
|
} else {
|
||||||
@ -1785,7 +1838,7 @@ class ConversationsListActivity :
|
|||||||
val callsChannelNotEnabled = !NotificationUtils.isCallsNotificationChannelEnabled(this)
|
val callsChannelNotEnabled = !NotificationUtils.isCallsNotificationChannelEnabled(this)
|
||||||
|
|
||||||
val serverNotificationAppInstalled =
|
val serverNotificationAppInstalled =
|
||||||
currentUser?.capabilities?.notificationsCapability?.features?.isNotEmpty() ?: false
|
currentUser?.capabilities?.notificationsCapability?.features?.isNotEmpty() == true
|
||||||
|
|
||||||
val settingsOfUserAreWrong = notificationPermissionNotGranted ||
|
val settingsOfUserAreWrong = notificationPermissionNotGranted ||
|
||||||
batteryOptimizationNotIgnored ||
|
batteryOptimizationNotIgnored ||
|
||||||
@ -2117,8 +2170,8 @@ class ConversationsListActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun updateFilterState(mention: Boolean, unread: Boolean) {
|
fun updateFilterState(mention: Boolean, unread: Boolean) {
|
||||||
filterState[FilterConversationFragment.MENTION] = mention
|
filterState[MENTION] = mention
|
||||||
filterState[FilterConversationFragment.UNREAD] = unread
|
filterState[UNREAD] = unread
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setFilterableItems(items: MutableList<AbstractFlexibleItem<*>>) {
|
fun setFilterableItems(items: MutableList<AbstractFlexibleItem<*>>) {
|
||||||
@ -2159,5 +2212,6 @@ class ConversationsListActivity :
|
|||||||
const val ROOM_TYPE_ONE_ONE = "1"
|
const val ROOM_TYPE_ONE_ONE = "1"
|
||||||
private const val SIXTEEN_HOURS_IN_SECONDS: Long = 57600
|
private const val SIXTEEN_HOURS_IN_SECONDS: Long = 57600
|
||||||
const val LONG_1000: Long = 1000
|
const val LONG_1000: Long = 1000
|
||||||
|
private const val NOTE_TO_SELF_SHORTCUT_ID = "NOTE_TO_SELF_SHORTCUT_ID"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,18 @@ interface ChatMessagesDao {
|
|||||||
)
|
)
|
||||||
fun getTempMessagesForConversation(internalConversationId: String): Flow<List<ChatMessageEntity>>
|
fun getTempMessagesForConversation(internalConversationId: String): Flow<List<ChatMessageEntity>>
|
||||||
|
|
||||||
|
@Query(
|
||||||
|
"""
|
||||||
|
SELECT *
|
||||||
|
FROM ChatMessages
|
||||||
|
WHERE internalConversationId = :internalConversationId
|
||||||
|
AND isTemporary = 1
|
||||||
|
AND sendStatus != 'SENT_PENDING_ACK'
|
||||||
|
ORDER BY timestamp DESC, id DESC
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
fun getTempUnsentMessagesForConversation(internalConversationId: String): Flow<List<ChatMessageEntity>>
|
||||||
|
|
||||||
@Query(
|
@Query(
|
||||||
"""
|
"""
|
||||||
SELECT *
|
SELECT *
|
||||||
|
@ -68,7 +68,7 @@ fun ChatMessageEntity.asModel() =
|
|||||||
isDeleted = deleted,
|
isDeleted = deleted,
|
||||||
referenceId = referenceId,
|
referenceId = referenceId,
|
||||||
isTemporary = isTemporary,
|
isTemporary = isTemporary,
|
||||||
sendingFailed = sendingFailed,
|
sendStatus = sendStatus,
|
||||||
readStatus = ReadStatus.NONE,
|
readStatus = ReadStatus.NONE,
|
||||||
silent = silent
|
silent = silent
|
||||||
)
|
)
|
||||||
|
@ -62,7 +62,8 @@ fun ConversationModel.asEntity() =
|
|||||||
remoteServer = remoteServer,
|
remoteServer = remoteServer,
|
||||||
remoteToken = remoteToken,
|
remoteToken = remoteToken,
|
||||||
hasArchived = hasArchived,
|
hasArchived = hasArchived,
|
||||||
hasSensitive = hasSensitive
|
hasSensitive = hasSensitive,
|
||||||
|
hasImportant = hasImportant
|
||||||
)
|
)
|
||||||
|
|
||||||
fun ConversationEntity.asModel() =
|
fun ConversationEntity.asModel() =
|
||||||
@ -115,7 +116,8 @@ fun ConversationEntity.asModel() =
|
|||||||
remoteServer = remoteServer,
|
remoteServer = remoteServer,
|
||||||
remoteToken = remoteToken,
|
remoteToken = remoteToken,
|
||||||
hasArchived = hasArchived,
|
hasArchived = hasArchived,
|
||||||
hasSensitive = hasSensitive
|
hasSensitive = hasSensitive,
|
||||||
|
hasImportant = hasImportant
|
||||||
)
|
)
|
||||||
|
|
||||||
fun Conversation.asEntity(accountId: Long) =
|
fun Conversation.asEntity(accountId: Long) =
|
||||||
@ -167,5 +169,6 @@ fun Conversation.asEntity(accountId: Long) =
|
|||||||
remoteServer = remoteServer,
|
remoteServer = remoteServer,
|
||||||
remoteToken = remoteToken,
|
remoteToken = remoteToken,
|
||||||
hasArchived = hasArchived,
|
hasArchived = hasArchived,
|
||||||
hasSensitive = hasSensitive
|
hasSensitive = hasSensitive,
|
||||||
|
hasImportant = hasImportant
|
||||||
)
|
)
|
||||||
|
@ -64,7 +64,7 @@ data class ChatMessageEntity(
|
|||||||
@ColumnInfo(name = "reactions") var reactions: LinkedHashMap<String, Int>? = null,
|
@ColumnInfo(name = "reactions") var reactions: LinkedHashMap<String, Int>? = null,
|
||||||
@ColumnInfo(name = "reactionsSelf") var reactionsSelf: ArrayList<String>? = null,
|
@ColumnInfo(name = "reactionsSelf") var reactionsSelf: ArrayList<String>? = null,
|
||||||
@ColumnInfo(name = "referenceId") var referenceId: String? = null,
|
@ColumnInfo(name = "referenceId") var referenceId: String? = null,
|
||||||
@ColumnInfo(name = "sendingFailed") var sendingFailed: Boolean = false,
|
@ColumnInfo(name = "sendStatus") var sendStatus: SendStatus? = null,
|
||||||
@ColumnInfo(name = "silent") var silent: Boolean = false,
|
@ColumnInfo(name = "silent") var silent: Boolean = false,
|
||||||
@ColumnInfo(name = "systemMessage") var systemMessageType: ChatMessage.SystemMessageType,
|
@ColumnInfo(name = "systemMessage") var systemMessageType: ChatMessage.SystemMessageType,
|
||||||
@ColumnInfo(name = "timestamp") var timestamp: Long = 0
|
@ColumnInfo(name = "timestamp") var timestamp: Long = 0
|
||||||
|
@ -95,7 +95,8 @@ data class ConversationEntity(
|
|||||||
@ColumnInfo(name = "unreadMentionDirect") var unreadMentionDirect: Boolean,
|
@ColumnInfo(name = "unreadMentionDirect") var unreadMentionDirect: Boolean,
|
||||||
@ColumnInfo(name = "unreadMessages") var unreadMessages: Int = 0,
|
@ColumnInfo(name = "unreadMessages") var unreadMessages: Int = 0,
|
||||||
@ColumnInfo(name = "hasArchived") var hasArchived: Boolean = false,
|
@ColumnInfo(name = "hasArchived") var hasArchived: Boolean = false,
|
||||||
@ColumnInfo(name = "hasSensitive") var hasSensitive: Boolean = false
|
@ColumnInfo(name = "hasSensitive") var hasSensitive: Boolean = false,
|
||||||
|
@ColumnInfo(name = "hasImportant") var hasImportant: Boolean = false
|
||||||
// missing/not needed: attendeeId
|
// missing/not needed: attendeeId
|
||||||
// missing/not needed: attendeePin
|
// missing/not needed: attendeePin
|
||||||
// missing/not needed: attendeePermissions
|
// missing/not needed: attendeePermissions
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* Nextcloud Talk - Android Client
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Marcel Hibbe <dev@mhibbe.de>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.nextcloud.talk.data.database.model
|
||||||
|
|
||||||
|
enum class SendStatus {
|
||||||
|
PENDING,
|
||||||
|
SENT_PENDING_ACK,
|
||||||
|
FAILED
|
||||||
|
}
|
@ -1,18 +1,31 @@
|
|||||||
/*
|
/*
|
||||||
* Nextcloud Talk - Android Client
|
* Nextcloud Talk - Android Client
|
||||||
*
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2024-2025 Marcel Hibbe <dev@mhibbe.de>
|
||||||
* SPDX-FileCopyrightText: 2022 Andy Scherzinger <info@andy-scherzinger.de>
|
* SPDX-FileCopyrightText: 2022 Andy Scherzinger <info@andy-scherzinger.de>
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.data.source.local
|
package com.nextcloud.talk.data.source.local
|
||||||
|
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import androidx.room.DeleteColumn
|
||||||
|
import androidx.room.migration.AutoMigrationSpec
|
||||||
import androidx.room.migration.Migration
|
import androidx.room.migration.Migration
|
||||||
import androidx.sqlite.db.SupportSQLiteDatabase
|
import androidx.sqlite.db.SupportSQLiteDatabase
|
||||||
import java.sql.SQLException
|
import java.sql.SQLException
|
||||||
|
|
||||||
@Suppress("MagicNumber")
|
@Suppress("MagicNumber")
|
||||||
object Migrations {
|
object Migrations {
|
||||||
|
|
||||||
|
//region Auto migrations
|
||||||
|
|
||||||
|
@DeleteColumn(tableName = "ChatMessages", columnName = "sendingFailed")
|
||||||
|
class AutoMigration16To17 : AutoMigrationSpec
|
||||||
|
|
||||||
|
//endregion
|
||||||
|
|
||||||
|
//region Manual migrations
|
||||||
|
|
||||||
val MIGRATION_6_8 = object : Migration(6, 8) {
|
val MIGRATION_6_8 = object : Migration(6, 8) {
|
||||||
override fun migrate(db: SupportSQLiteDatabase) {
|
override fun migrate(db: SupportSQLiteDatabase) {
|
||||||
Log.i("Migrations", "Migrating 6 to 8")
|
Log.i("Migrations", "Migrating 6 to 8")
|
||||||
@ -65,10 +78,19 @@ object Migrations {
|
|||||||
val MIGRATION_14_15 = object : Migration(14, 15) {
|
val MIGRATION_14_15 = object : Migration(14, 15) {
|
||||||
override fun migrate(db: SupportSQLiteDatabase) {
|
override fun migrate(db: SupportSQLiteDatabase) {
|
||||||
Log.i("Migrations", "Migrating 14 to 15")
|
Log.i("Migrations", "Migrating 14 to 15")
|
||||||
addisSensitive(db)
|
addIsSensitive(db)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val MIGRATION_15_16 = object : Migration(15, 16) {
|
||||||
|
override fun migrate(db: SupportSQLiteDatabase) {
|
||||||
|
Log.i("Migrations", "Migrating 15 to 16")
|
||||||
|
addIsImportant(db)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//endregion
|
||||||
|
|
||||||
fun migrateToRoom(db: SupportSQLiteDatabase) {
|
fun migrateToRoom(db: SupportSQLiteDatabase) {
|
||||||
db.execSQL(
|
db.execSQL(
|
||||||
"CREATE TABLE User_new (" +
|
"CREATE TABLE User_new (" +
|
||||||
@ -290,7 +312,7 @@ object Migrations {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addisSensitive(db: SupportSQLiteDatabase) {
|
fun addIsSensitive(db: SupportSQLiteDatabase) {
|
||||||
try {
|
try {
|
||||||
db.execSQL(
|
db.execSQL(
|
||||||
"ALTER TABLE Conversations " +
|
"ALTER TABLE Conversations " +
|
||||||
@ -301,6 +323,17 @@ object Migrations {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun addIsImportant(db: SupportSQLiteDatabase) {
|
||||||
|
try {
|
||||||
|
db.execSQL(
|
||||||
|
"ALTER TABLE Conversations " +
|
||||||
|
"ADD COLUMN hasImportant INTEGER NOT NULL DEFAULT 0;"
|
||||||
|
)
|
||||||
|
} catch (e: SQLException) {
|
||||||
|
Log.i("Migrations", "Something went wrong when adding column hasImportant to table Conversations")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun addTempMessagesSupport(db: SupportSQLiteDatabase) {
|
fun addTempMessagesSupport(db: SupportSQLiteDatabase) {
|
||||||
try {
|
try {
|
||||||
db.execSQL(
|
db.execSQL(
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Nextcloud Talk - Android Client
|
* Nextcloud Talk - Android Client
|
||||||
*
|
*
|
||||||
* SPDX-FileCopyrightText: 2023-2024 Marcel Hibbe <dev@mhibbe.de>
|
* SPDX-FileCopyrightText: 2023-2025 Marcel Hibbe <dev@mhibbe.de>
|
||||||
* SPDX-FileCopyrightText: 2022 Andy Scherzinger <info@andy-scherzinger.de>
|
* SPDX-FileCopyrightText: 2022 Andy Scherzinger <info@andy-scherzinger.de>
|
||||||
* SPDX-FileCopyrightText: 2017-2020 Mario Danic <mario@lovelyhq.com>
|
* SPDX-FileCopyrightText: 2017-2020 Mario Danic <mario@lovelyhq.com>
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
@ -23,12 +23,14 @@ import com.nextcloud.talk.data.database.dao.ConversationsDao
|
|||||||
import com.nextcloud.talk.data.database.model.ChatBlockEntity
|
import com.nextcloud.talk.data.database.model.ChatBlockEntity
|
||||||
import com.nextcloud.talk.data.database.model.ChatMessageEntity
|
import com.nextcloud.talk.data.database.model.ChatMessageEntity
|
||||||
import com.nextcloud.talk.data.database.model.ConversationEntity
|
import com.nextcloud.talk.data.database.model.ConversationEntity
|
||||||
|
import com.nextcloud.talk.data.source.local.Migrations.AutoMigration16To17
|
||||||
import com.nextcloud.talk.data.source.local.converters.ArrayListConverter
|
import com.nextcloud.talk.data.source.local.converters.ArrayListConverter
|
||||||
import com.nextcloud.talk.data.source.local.converters.CapabilitiesConverter
|
import com.nextcloud.talk.data.source.local.converters.CapabilitiesConverter
|
||||||
import com.nextcloud.talk.data.source.local.converters.ExternalSignalingServerConverter
|
import com.nextcloud.talk.data.source.local.converters.ExternalSignalingServerConverter
|
||||||
import com.nextcloud.talk.data.source.local.converters.HashMapHashMapConverter
|
import com.nextcloud.talk.data.source.local.converters.HashMapHashMapConverter
|
||||||
import com.nextcloud.talk.data.source.local.converters.LinkedHashMapConverter
|
import com.nextcloud.talk.data.source.local.converters.LinkedHashMapConverter
|
||||||
import com.nextcloud.talk.data.source.local.converters.PushConfigurationConverter
|
import com.nextcloud.talk.data.source.local.converters.PushConfigurationConverter
|
||||||
|
import com.nextcloud.talk.data.source.local.converters.SendStatusConverter
|
||||||
import com.nextcloud.talk.data.source.local.converters.ServerVersionConverter
|
import com.nextcloud.talk.data.source.local.converters.ServerVersionConverter
|
||||||
import com.nextcloud.talk.data.source.local.converters.SignalingSettingsConverter
|
import com.nextcloud.talk.data.source.local.converters.SignalingSettingsConverter
|
||||||
import com.nextcloud.talk.data.storage.ArbitraryStoragesDao
|
import com.nextcloud.talk.data.storage.ArbitraryStoragesDao
|
||||||
@ -49,9 +51,10 @@ import java.util.Locale
|
|||||||
ChatMessageEntity::class,
|
ChatMessageEntity::class,
|
||||||
ChatBlockEntity::class
|
ChatBlockEntity::class
|
||||||
],
|
],
|
||||||
version = 15,
|
version = 17,
|
||||||
autoMigrations = [
|
autoMigrations = [
|
||||||
AutoMigration(from = 9, to = 10)
|
AutoMigration(from = 9, to = 10),
|
||||||
|
AutoMigration(from = 16, to = 17, spec = AutoMigration16To17::class)
|
||||||
],
|
],
|
||||||
exportSchema = true
|
exportSchema = true
|
||||||
)
|
)
|
||||||
@ -63,7 +66,8 @@ import java.util.Locale
|
|||||||
SignalingSettingsConverter::class,
|
SignalingSettingsConverter::class,
|
||||||
HashMapHashMapConverter::class,
|
HashMapHashMapConverter::class,
|
||||||
LinkedHashMapConverter::class,
|
LinkedHashMapConverter::class,
|
||||||
ArrayListConverter::class
|
ArrayListConverter::class,
|
||||||
|
SendStatusConverter::class
|
||||||
)
|
)
|
||||||
abstract class TalkDatabase : RoomDatabase() {
|
abstract class TalkDatabase : RoomDatabase() {
|
||||||
|
|
||||||
@ -117,7 +121,8 @@ abstract class TalkDatabase : RoomDatabase() {
|
|||||||
Migrations.MIGRATION_11_12,
|
Migrations.MIGRATION_11_12,
|
||||||
Migrations.MIGRATION_12_13,
|
Migrations.MIGRATION_12_13,
|
||||||
Migrations.MIGRATION_13_14,
|
Migrations.MIGRATION_13_14,
|
||||||
Migrations.MIGRATION_14_15
|
Migrations.MIGRATION_14_15,
|
||||||
|
Migrations.MIGRATION_15_16
|
||||||
)
|
)
|
||||||
.allowMainThreadQueries()
|
.allowMainThreadQueries()
|
||||||
.addCallback(
|
.addCallback(
|
||||||
|
@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Nextcloud Talk - Android Client
|
||||||
|
*
|
||||||
|
* SPDX-FileCopyrightText: 2025 Marcel Hibbe <dev@mhibbe.de>
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.nextcloud.talk.data.source.local.converters
|
||||||
|
|
||||||
|
import androidx.room.TypeConverter
|
||||||
|
import com.nextcloud.talk.data.database.model.SendStatus
|
||||||
|
|
||||||
|
class SendStatusConverter {
|
||||||
|
@TypeConverter
|
||||||
|
fun fromStatus(value: SendStatus): String {
|
||||||
|
return value.name
|
||||||
|
}
|
||||||
|
|
||||||
|
@TypeConverter
|
||||||
|
fun toStatus(value: String): SendStatus {
|
||||||
|
return SendStatus.valueOf(value)
|
||||||
|
}
|
||||||
|
}
|
@ -190,6 +190,7 @@ class FullScreenMediaActivity : AppCompatActivity() {
|
|||||||
supportActionBar?.show()
|
supportActionBar?.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@OptIn(UnstableApi::class)
|
||||||
private fun applyWindowInsets() {
|
private fun applyWindowInsets() {
|
||||||
val playerView = binding.playerView
|
val playerView = binding.playerView
|
||||||
val exoControls = playerView.findViewById<FrameLayout>(R.id.exo_bottom_bar)
|
val exoControls = playerView.findViewById<FrameLayout>(R.id.exo_bottom_bar)
|
||||||
|
@ -62,10 +62,10 @@ class ConversationModel(
|
|||||||
var remoteToken: String? = null,
|
var remoteToken: String? = null,
|
||||||
var hasArchived: Boolean = false,
|
var hasArchived: Boolean = false,
|
||||||
var hasSensitive: Boolean = false,
|
var hasSensitive: Boolean = false,
|
||||||
|
var hasImportant: Boolean = false,
|
||||||
|
|
||||||
// attributes that don't come from API. This should be changed?!
|
// attributes that don't come from API. This should be changed?!
|
||||||
var password: String? = null
|
var password: String? = null
|
||||||
|
|
||||||
) {
|
) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@ -128,7 +128,8 @@ class ConversationModel(
|
|||||||
remoteServer = conversation.remoteServer,
|
remoteServer = conversation.remoteServer,
|
||||||
remoteToken = conversation.remoteToken,
|
remoteToken = conversation.remoteToken,
|
||||||
hasArchived = conversation.hasArchived,
|
hasArchived = conversation.hasArchived,
|
||||||
hasSensitive = conversation.hasSensitive
|
hasSensitive = conversation.hasSensitive,
|
||||||
|
hasImportant = conversation.hasImportant
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ class ChatUtils {
|
|||||||
return message
|
return message
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("Detekt.ComplexMethod")
|
@Suppress("Detekt.ComplexMethod", "Detekt.ComplexCondition")
|
||||||
private fun parse(messageParameters: HashMap<String?, HashMap<String?, String?>>, message: String?): String? {
|
private fun parse(messageParameters: HashMap<String?, HashMap<String?, String?>>, message: String?): String? {
|
||||||
var resultMessage = message
|
var resultMessage = message
|
||||||
for (key in messageParameters.keys) {
|
for (key in messageParameters.keys) {
|
||||||
@ -29,7 +29,9 @@ class ChatUtils {
|
|||||||
|
|
||||||
if (individualHashMap != null) {
|
if (individualHashMap != null) {
|
||||||
val type = individualHashMap["type"]
|
val type = individualHashMap["type"]
|
||||||
resultMessage = if (type == "user" || type == "guest" || type == "call" || type == "email") {
|
resultMessage = if (type == "user" || type == "guest" || type == "call" || type == "email" ||
|
||||||
|
type == "user-group" || type == "circle"
|
||||||
|
) {
|
||||||
resultMessage?.replace("{$key}", "@" + individualHashMap["name"])
|
resultMessage?.replace("{$key}", "@" + individualHashMap["name"])
|
||||||
} else if (type == "geo-location") {
|
} else if (type == "geo-location") {
|
||||||
individualHashMap["name"]
|
individualHashMap["name"]
|
||||||
|
@ -168,5 +168,8 @@ data class Conversation(
|
|||||||
var hasArchived: Boolean = false,
|
var hasArchived: Boolean = false,
|
||||||
|
|
||||||
@JsonField(name = ["isSensitive"])
|
@JsonField(name = ["isSensitive"])
|
||||||
var hasSensitive: Boolean = false
|
var hasSensitive: Boolean = false,
|
||||||
|
|
||||||
|
@JsonField(name = ["isImportant"])
|
||||||
|
var hasImportant: Boolean = false
|
||||||
) : Parcelable
|
) : Parcelable
|
||||||
|
@ -6,14 +6,17 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.receivers
|
package com.nextcloud.talk.receivers
|
||||||
|
|
||||||
|
import android.Manifest
|
||||||
import android.app.Notification
|
import android.app.Notification
|
||||||
import android.app.NotificationManager
|
import android.app.NotificationManager
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.pm.PackageManager
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.text.style.ForegroundColorSpan
|
import android.text.style.ForegroundColorSpan
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
|
import androidx.core.app.ActivityCompat
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
import androidx.core.app.Person
|
import androidx.core.app.Person
|
||||||
@ -162,9 +165,15 @@ class DirectReplyReceiver : BroadcastReceiver() {
|
|||||||
// Set the updated style
|
// Set the updated style
|
||||||
previousBuilder.setStyle(previousStyle)
|
previousBuilder.setStyle(previousStyle)
|
||||||
|
|
||||||
// Check if notification still exists
|
if (ActivityCompat.checkSelfPermission(
|
||||||
if (findActiveNotification(systemNotificationId!!) != null) {
|
context,
|
||||||
NotificationManagerCompat.from(context).notify(systemNotificationId!!, previousBuilder.build())
|
Manifest.permission.POST_NOTIFICATIONS
|
||||||
|
) == PackageManager.PERMISSION_GRANTED
|
||||||
|
) {
|
||||||
|
// Check if notification still exists
|
||||||
|
if (findActiveNotification(systemNotificationId!!) != null) {
|
||||||
|
NotificationManagerCompat.from(context).notify(systemNotificationId!!, previousBuilder.build())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
|
@ -53,4 +53,8 @@ interface ConversationsRepository {
|
|||||||
suspend fun markConversationAsSensitive(credentials: String, baseUrl: String, roomToken: String): GenericOverall
|
suspend fun markConversationAsSensitive(credentials: String, baseUrl: String, roomToken: String): GenericOverall
|
||||||
|
|
||||||
suspend fun markConversationAsInsensitive(credentials: String, baseUrl: String, roomToken: String): GenericOverall
|
suspend fun markConversationAsInsensitive(credentials: String, baseUrl: String, roomToken: String): GenericOverall
|
||||||
|
|
||||||
|
suspend fun markConversationAsImportant(credentials: String, baseUrl: String, roomToken: String): GenericOverall
|
||||||
|
|
||||||
|
suspend fun markConversationAsUnImportant(credentials: String, baseUrl: String, roomToken: String): GenericOverall
|
||||||
}
|
}
|
||||||
|
@ -139,6 +139,24 @@ class ConversationsRepositoryImpl(
|
|||||||
return coroutineApi.markConversationAsInsensitive(credentials, url)
|
return coroutineApi.markConversationAsInsensitive(credentials, url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun markConversationAsImportant(
|
||||||
|
credentials: String,
|
||||||
|
baseUrl: String,
|
||||||
|
roomToken: String
|
||||||
|
): GenericOverall {
|
||||||
|
val url = ApiUtils.getUrlForImportantConversation(baseUrl, roomToken)
|
||||||
|
return coroutineApi.markConversationAsImportant(credentials, url)
|
||||||
|
}
|
||||||
|
|
||||||
|
override suspend fun markConversationAsUnImportant(
|
||||||
|
credentials: String,
|
||||||
|
baseUrl: String,
|
||||||
|
roomToken: String
|
||||||
|
): GenericOverall {
|
||||||
|
val url = ApiUtils.getUrlForImportantConversation(baseUrl, roomToken)
|
||||||
|
return coroutineApi.markConversationAsUnimportant(credentials, url)
|
||||||
|
}
|
||||||
|
|
||||||
override suspend fun banActor(
|
override suspend fun banActor(
|
||||||
credentials: String,
|
credentials: String,
|
||||||
url: String,
|
url: String,
|
||||||
|
@ -118,7 +118,6 @@ class ConversationsListBottomDialog(
|
|||||||
currentUser.capabilities?.spreedCapability!!,
|
currentUser.capabilities?.spreedCapability!!,
|
||||||
SpreedFeatures.FAVORITES
|
SpreedFeatures.FAVORITES
|
||||||
)
|
)
|
||||||
val canModerate = ConversationUtils.canModerate(conversation, currentUser.capabilities?.spreedCapability!!)
|
|
||||||
|
|
||||||
binding.conversationRemoveFromFavorites.visibility = setVisibleIf(
|
binding.conversationRemoveFromFavorites.visibility = setVisibleIf(
|
||||||
hasFavoritesCapability && conversation.favorite
|
hasFavoritesCapability && conversation.favorite
|
||||||
@ -149,14 +148,11 @@ class ConversationsListBottomDialog(
|
|||||||
)
|
)
|
||||||
|
|
||||||
binding.conversationOperationDelete.visibility = setVisibleIf(
|
binding.conversationOperationDelete.visibility = setVisibleIf(
|
||||||
canModerate
|
conversation.canDeleteConversation
|
||||||
)
|
)
|
||||||
|
|
||||||
binding.conversationOperationLeave.visibility = setVisibleIf(
|
binding.conversationOperationLeave.visibility = setVisibleIf(
|
||||||
conversation.canLeaveConversation &&
|
conversation.canLeaveConversation
|
||||||
// leaving is by api not possible for the last user with moderator permissions.
|
|
||||||
// for now, hide this option for all moderators.
|
|
||||||
!ConversationUtils.canModerate(conversation, currentUser.capabilities!!.spreedCapability!!)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import com.nextcloud.talk.R
|
|||||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||||
import com.nextcloud.talk.chat.ChatActivity
|
import com.nextcloud.talk.chat.ChatActivity
|
||||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||||
|
import com.nextcloud.talk.data.database.model.SendStatus
|
||||||
import com.nextcloud.talk.data.network.NetworkMonitor
|
import com.nextcloud.talk.data.network.NetworkMonitor
|
||||||
import com.nextcloud.talk.databinding.DialogTempMessageActionsBinding
|
import com.nextcloud.talk.databinding.DialogTempMessageActionsBinding
|
||||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||||
@ -58,9 +59,10 @@ class TempMessageActionsDialog(
|
|||||||
|
|
||||||
private fun initMenuItems() {
|
private fun initMenuItems() {
|
||||||
this.lifecycleScope.launch {
|
this.lifecycleScope.launch {
|
||||||
initResendMessage(message.sendingFailed && networkMonitor.isOnline.value)
|
val sendingFailed = message.sendStatus == SendStatus.FAILED
|
||||||
initMenuEditMessage(message.sendingFailed || !networkMonitor.isOnline.value)
|
initResendMessage(sendingFailed && networkMonitor.isOnline.value)
|
||||||
initMenuDeleteMessage(message.sendingFailed || !networkMonitor.isOnline.value)
|
initMenuEditMessage(sendingFailed || !networkMonitor.isOnline.value)
|
||||||
|
initMenuDeleteMessage(sendingFailed || !networkMonitor.isOnline.value)
|
||||||
initMenuItemCopy()
|
initMenuItemCopy()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -205,6 +205,10 @@ object ApiUtils {
|
|||||||
return getUrlForParticipants(version, baseUrl, token) + "/active"
|
return getUrlForParticipants(version, baseUrl, token) + "/active"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getUrlForImportantConversation(baseUrl: String, roomToken: String): String {
|
||||||
|
return "$baseUrl$OCS_API_VERSION/apps/spreed/api/v4/room/$roomToken/important"
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getUrlForParticipantsSelf(version: Int, baseUrl: String?, token: String?): String {
|
fun getUrlForParticipantsSelf(version: Int, baseUrl: String?, token: String?): String {
|
||||||
return getUrlForParticipants(version, baseUrl, token) + "/self"
|
return getUrlForParticipants(version, baseUrl, token) + "/self"
|
||||||
|
@ -59,7 +59,8 @@ enum class SpreedFeatures(val value: String) {
|
|||||||
ARCHIVE_CONVERSATIONS("archived-conversations-v2"),
|
ARCHIVE_CONVERSATIONS("archived-conversations-v2"),
|
||||||
CONVERSATION_CREATION_ALL("conversation-creation-all"),
|
CONVERSATION_CREATION_ALL("conversation-creation-all"),
|
||||||
UNBIND_CONVERSATION("unbind-conversation"),
|
UNBIND_CONVERSATION("unbind-conversation"),
|
||||||
SENSITIVE_CONVERSATIONS("sensitive-conversations")
|
SENSITIVE_CONVERSATIONS("sensitive-conversations"),
|
||||||
|
IMPORTANT_CONVERSATIONS("important-conversations")
|
||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("TooManyFunctions")
|
@Suppress("TooManyFunctions")
|
||||||
|
@ -81,4 +81,5 @@ object BundleKeys {
|
|||||||
const val KEY_FIELD_MAP: String = "KEY_FIELD_MAP"
|
const val KEY_FIELD_MAP: String = "KEY_FIELD_MAP"
|
||||||
const val KEY_CHAT_URL: String = "KEY_CHAT_URL"
|
const val KEY_CHAT_URL: String = "KEY_CHAT_URL"
|
||||||
const val KEY_SCROLL_TO_NOTIFICATION_CATEGORY: String = "KEY_SCROLL_TO_NOTIFICATION_CATEGORY"
|
const val KEY_SCROLL_TO_NOTIFICATION_CATEGORY: String = "KEY_SCROLL_TO_NOTIFICATION_CATEGORY"
|
||||||
|
const val KEY_FOCUS_INPUT: String = "KEY_FOCUS_INPUT"
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,11 @@ class DummyChatMessagesDaoImpl : ChatMessagesDao {
|
|||||||
override fun getTempMessagesForConversation(internalConversationId: String): Flow<List<ChatMessageEntity>> =
|
override fun getTempMessagesForConversation(internalConversationId: String): Flow<List<ChatMessageEntity>> =
|
||||||
flowOf()
|
flowOf()
|
||||||
|
|
||||||
|
override fun getTempUnsentMessagesForConversation(internalConversationId: String): Flow<List<ChatMessageEntity>> {
|
||||||
|
// nothing to return here as long this class is only used for the Search window
|
||||||
|
return flowOf()
|
||||||
|
}
|
||||||
|
|
||||||
override fun getTempMessageForConversation(
|
override fun getTempMessageForConversation(
|
||||||
internalConversationId: String,
|
internalConversationId: String,
|
||||||
referenceId: String
|
referenceId: String
|
||||||
|
@ -195,37 +195,6 @@
|
|||||||
android:textSize="@dimen/bottom_sheet_text_size" />
|
android:textSize="@dimen/bottom_sheet_text_size" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/conversation_archive"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="@dimen/bottom_sheet_item_height"
|
|
||||||
android:background="?android:attr/selectableItemBackground"
|
|
||||||
android:gravity="center_vertical"
|
|
||||||
android:orientation="horizontal"
|
|
||||||
android:paddingStart="@dimen/standard_padding"
|
|
||||||
android:paddingEnd="@dimen/standard_padding"
|
|
||||||
tools:ignore="UseCompoundDrawables">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:contentDescription="@null"
|
|
||||||
android:src="@drawable/outline_archive_24"
|
|
||||||
app:tint="@color/high_emphasis_menu_icon" />
|
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
|
||||||
android:id="@+id/conversation_archive_text"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_gravity="start|center_vertical"
|
|
||||||
android:paddingStart="40dp"
|
|
||||||
android:paddingEnd="@dimen/zero"
|
|
||||||
android:text="@string/archive_conversation"
|
|
||||||
android:textAlignment="viewStart"
|
|
||||||
android:textColor="@color/high_emphasis_text"
|
|
||||||
android:textSize="@dimen/bottom_sheet_text_size" />
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/conversation_operation_rename"
|
android:id="@+id/conversation_operation_rename"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@ -257,7 +226,7 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/conversation_operation_delete"
|
android:id="@+id/conversation_archive"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/bottom_sheet_item_height"
|
android:layout_height="@dimen/bottom_sheet_item_height"
|
||||||
android:background="?android:attr/selectableItemBackground"
|
android:background="?android:attr/selectableItemBackground"
|
||||||
@ -271,16 +240,17 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:contentDescription="@null"
|
android:contentDescription="@null"
|
||||||
android:src="@drawable/ic_delete_grey600_24dp"
|
android:src="@drawable/outline_archive_24"
|
||||||
app:tint="@color/high_emphasis_menu_icon" />
|
app:tint="@color/high_emphasis_menu_icon" />
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatTextView
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:id="@+id/conversation_archive_text"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="start|center_vertical"
|
android:layout_gravity="start|center_vertical"
|
||||||
android:paddingStart="40dp"
|
android:paddingStart="40dp"
|
||||||
android:paddingEnd="@dimen/zero"
|
android:paddingEnd="@dimen/zero"
|
||||||
android:text="@string/nc_delete_call"
|
android:text="@string/archive_conversation"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
android:textColor="@color/high_emphasis_text"
|
android:textColor="@color/high_emphasis_text"
|
||||||
android:textSize="@dimen/bottom_sheet_text_size" />
|
android:textSize="@dimen/bottom_sheet_text_size" />
|
||||||
@ -316,6 +286,36 @@
|
|||||||
android:textSize="@dimen/bottom_sheet_text_size" />
|
android:textSize="@dimen/bottom_sheet_text_size" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/conversation_operation_delete"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/bottom_sheet_item_height"
|
||||||
|
android:background="?android:attr/selectableItemBackground"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingStart="@dimen/standard_padding"
|
||||||
|
android:paddingEnd="@dimen/standard_padding"
|
||||||
|
tools:ignore="UseCompoundDrawables">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:contentDescription="@null"
|
||||||
|
android:src="@drawable/ic_delete_grey600_24dp"
|
||||||
|
app:tint="@color/high_emphasis_menu_icon" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatTextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="start|center_vertical"
|
||||||
|
android:paddingStart="40dp"
|
||||||
|
android:paddingEnd="@dimen/zero"
|
||||||
|
android:text="@string/nc_delete_call"
|
||||||
|
android:textAlignment="viewStart"
|
||||||
|
android:textColor="@color/high_emphasis_text"
|
||||||
|
android:textSize="@dimen/bottom_sheet_text_size" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
@ -12,13 +12,12 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:padding="16dp"
|
android:padding="16dp"
|
||||||
android:background="@color/grey_600">
|
android:background="@color/bg_bottom_sheet">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/event_scheduled"
|
android:id="@+id/event_scheduled"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textColor="@color/black"
|
|
||||||
android:text="@string/nc_event_schedule"
|
android:text="@string/nc_event_schedule"
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:textSize="18sp" />
|
android:textSize="18sp" />
|
||||||
@ -27,7 +26,6 @@
|
|||||||
android:id="@+id/meetingTime"
|
android:id="@+id/meetingTime"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textColor="@color/black"
|
|
||||||
android:textSize="16sp"
|
android:textSize="16sp"
|
||||||
tools:text="Meeting at 8:00 pm"/>
|
tools:text="Meeting at 8:00 pm"/>
|
||||||
|
|
||||||
@ -46,7 +44,6 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/archive_conversation"
|
android:text="@string/archive_conversation"
|
||||||
android:textColor="@color/black"
|
|
||||||
android:visibility = "gone"
|
android:visibility = "gone"
|
||||||
|
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
@ -57,7 +54,6 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/unarchive_conversation"
|
android:text="@string/unarchive_conversation"
|
||||||
android:textColor="@color/black"
|
|
||||||
android:visibility = "gone"
|
android:visibility = "gone"
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
android:paddingTop="24dp"/>
|
android:paddingTop="24dp"/>
|
||||||
|
@ -62,7 +62,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:layout_marginStart="@dimen/standard_margin"
|
android:layout_marginStart="@dimen/standard_margin"
|
||||||
android:clickable="false" />
|
android:checked="false"
|
||||||
|
android:clickable="false"/>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@ -111,7 +112,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="@dimen/standard_margin"
|
android:layout_marginStart="@dimen/standard_margin"
|
||||||
android:checked="true"
|
android:checked="true"
|
||||||
android:clickable="false" />
|
android:clickable="false"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
|
@ -19,7 +19,6 @@
|
|||||||
android:id="@+id/deletion_message"
|
android:id="@+id/deletion_message"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/nc_conversation_auto_delete_notice"
|
|
||||||
android:textSize="14sp"
|
android:textSize="14sp"
|
||||||
android:lineSpacingExtra="4dp"
|
android:lineSpacingExtra="4dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
@ -39,6 +38,7 @@
|
|||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
app:icon="@drawable/ic_delete"
|
app:icon="@drawable/ic_delete"
|
||||||
app:iconPadding="8dp"
|
app:iconPadding="8dp"
|
||||||
|
app:iconTint="@color/white"
|
||||||
app:iconGravity="textStart"
|
app:iconGravity="textStart"
|
||||||
android:backgroundTint="@color/nc_darkRed"
|
android:backgroundTint="@color/nc_darkRed"
|
||||||
android:layout_marginEnd="16dp" />
|
android:layout_marginEnd="16dp" />
|
||||||
|
@ -64,6 +64,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/dialogName"
|
android:layout_below="@id/dialogName"
|
||||||
android:layout_marginTop="6dp"
|
android:layout_marginTop="6dp"
|
||||||
|
android:id="@+id/relativeLayout"
|
||||||
android:layout_toEndOf="@id/dialogAvatarFrameLayout">
|
android:layout_toEndOf="@id/dialogAvatarFrameLayout">
|
||||||
|
|
||||||
<androidx.emoji2.widget.EmojiTextView
|
<androidx.emoji2.widget.EmojiTextView
|
||||||
@ -121,8 +122,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignTop="@id/dialogAvatarFrameLayout"
|
android:layout_alignTop="@id/dialogAvatarFrameLayout"
|
||||||
android:layout_marginTop="2dp"
|
android:layout_marginTop="2dp"
|
||||||
android:layout_toStartOf="@id/dialogDate"
|
|
||||||
android:layout_toEndOf="@id/dialogAvatarFrameLayout"
|
android:layout_toEndOf="@id/dialogAvatarFrameLayout"
|
||||||
|
android:layout_toStartOf="@id/dialogDate"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:includeFontPadding="false"
|
android:includeFontPadding="false"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">تحرير</string>
|
<string name= "nc_edit">تحرير</string>
|
||||||
|
<string name="add_participants">إضافة </string>
|
||||||
<string name="add_to_notes">إضافة إلى الملاحظات</string>
|
<string name="add_to_notes">إضافة إلى الملاحظات</string>
|
||||||
<string name="added_to_favorites">إضافة المحادثة %1$sإلى المُفضّلة</string>
|
<string name="added_to_favorites">إضافة المحادثة %1$sإلى المُفضّلة</string>
|
||||||
<string name="appbar_search_in">بحث في %s</string>
|
<string name="appbar_search_in">بحث في %s</string>
|
||||||
@ -274,9 +275,9 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">تحسين البطارية لا يتم تجاهله. يجب تغيير هذا للتأكد من أن الإشعارات تعمل في الخلفية! الرجاء النقر فوق \"موافق OK\" ثم تحديد \"جميع التطبيقات All apps\" -> %1$s -> \"لا تقم بالتحسين Do not optimize\"</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">تحسين البطارية لا يتم تجاهله. يجب تغيير هذا للتأكد من أن الإشعارات تعمل في الخلفية! الرجاء النقر فوق \"موافق OK\" ثم تحديد \"جميع التطبيقات All apps\" -> %1$s -> \"لا تقم بالتحسين Do not optimize\"</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">تجاهل توفير البطارية</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">تجاهل توفير البطارية</string>
|
||||||
<string name="nc_important_conversation">محادثة مهمة</string>
|
<string name="nc_important_conversation">محادثة مهمة</string>
|
||||||
<string name="nc_important_conversation_desc">الاشعارات في هذه المحادثة ستتجاوز إعداد الحالة \"يُرجى عدم الإزعاج\"</string>
|
|
||||||
<string name="nc_invitations">دعوات</string>
|
<string name="nc_invitations">دعوات</string>
|
||||||
<string name="nc_join_open_conversations">الانضمام إلى محادثات جارية</string>
|
<string name="nc_join_open_conversations">الانضمام إلى محادثات جارية</string>
|
||||||
|
<string name="nc_keep">حفظ</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">تحتاج إلى إنشاء ميسر جديد قبل أن تتمكن من مغادرة المحادثة</string>
|
<string name="nc_last_moderator_leaving_room_warning">تحتاج إلى إنشاء ميسر جديد قبل أن تتمكن من مغادرة المحادثة</string>
|
||||||
<string name="nc_last_modified">%1$s| آخر تعديل: %2$s</string>
|
<string name="nc_last_modified">%1$s| آخر تعديل: %2$s</string>
|
||||||
<string name="nc_leave">غادر المحادثة</string>
|
<string name="nc_leave">غادر المحادثة</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Editar</string>
|
<string name= "nc_edit">Editar</string>
|
||||||
|
<string name="add_participants">Amestar</string>
|
||||||
<string name="add_to_notes">Amestar a Notes</string>
|
<string name="add_to_notes">Amestar a Notes</string>
|
||||||
<string name="added_to_favorites">La conversación «%1$s» metióse en Favoritos</string>
|
<string name="added_to_favorites">La conversación «%1$s» metióse en Favoritos</string>
|
||||||
<string name="appbar_search_in">Buscar en: %s</string>
|
<string name="appbar_search_in">Buscar en: %s</string>
|
||||||
@ -162,6 +163,7 @@
|
|||||||
<string name="nc_guest_access_share_link">Compartir l\'enllaz de la converación</string>
|
<string name="nc_guest_access_share_link">Compartir l\'enllaz de la converación</string>
|
||||||
<string name="nc_important_conversation">Converación importante</string>
|
<string name="nc_important_conversation">Converación importante</string>
|
||||||
<string name="nc_invitations">Invitaciones</string>
|
<string name="nc_invitations">Invitaciones</string>
|
||||||
|
<string name="nc_keep">Caltener</string>
|
||||||
<string name="nc_leave">Colar de la conversación</string>
|
<string name="nc_leave">Colar de la conversación</string>
|
||||||
<string name="nc_leaving_call">Colando de la llamada…</string>
|
<string name="nc_leaving_call">Colando de la llamada…</string>
|
||||||
<string name="nc_license_title">Llicencia</string>
|
<string name="nc_license_title">Llicencia</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Edit</string>
|
<string name= "nc_edit">Edit</string>
|
||||||
|
<string name="add_participants">Add</string>
|
||||||
<string name="add_to_notes">Add to Notes</string>
|
<string name="add_to_notes">Add to Notes</string>
|
||||||
<string name="added_to_favorites">Added conversation %1$s to favourites</string>
|
<string name="added_to_favorites">Added conversation %1$s to favourites</string>
|
||||||
<string name="appbar_search_in">Search in %s</string>
|
<string name="appbar_search_in">Search in %s</string>
|
||||||
@ -284,10 +285,11 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Battery optimization is not ignored. This should be changed to make sure that notifications work in the background! Please click OK and select \"All apps\" -> %1$s -> Do not optimize</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Battery optimization is not ignored. This should be changed to make sure that notifications work in the background! Please click OK and select \"All apps\" -> %1$s -> Do not optimize</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignore battery optimization</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignore battery optimization</string>
|
||||||
<string name="nc_important_conversation">Important conversation</string>
|
<string name="nc_important_conversation">Important conversation</string>
|
||||||
<string name="nc_important_conversation_desc">Notifications in this conversation will override Do Not Disturb settings</string>
|
<string name="nc_important_conversation_desc">\"Do not disturb\" user status is ignored for important conversations</string>
|
||||||
<string name="nc_invalid_time">Invalid time</string>
|
<string name="nc_invalid_time">Invalid time</string>
|
||||||
<string name="nc_invitations">Invitations</string>
|
<string name="nc_invitations">Invitations</string>
|
||||||
<string name="nc_join_open_conversations">Join open conversations</string>
|
<string name="nc_join_open_conversations">Join open conversations</string>
|
||||||
|
<string name="nc_keep">Keep</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">You need to promote a new moderator before you can leave the conversation</string>
|
<string name="nc_last_moderator_leaving_room_warning">You need to promote a new moderator before you can leave the conversation</string>
|
||||||
<string name="nc_last_modified">%1$s | Last modified: %2$s</string>
|
<string name="nc_last_modified">%1$s | Last modified: %2$s</string>
|
||||||
<string name="nc_leave">Leave conversation</string>
|
<string name="nc_leave">Leave conversation</string>
|
||||||
@ -307,6 +309,10 @@
|
|||||||
<string name="nc_manual">Not set</string>
|
<string name="nc_manual">Not set</string>
|
||||||
<string name="nc_mark_as_read">Mark as read</string>
|
<string name="nc_mark_as_read">Mark as read</string>
|
||||||
<string name="nc_mark_as_unread">Mark as unread</string>
|
<string name="nc_mark_as_unread">Mark as unread</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Conversation marked as important</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Conversation unmarked as sensitive</string>
|
||||||
|
<string name="nc_mark_conversation_as_sensitive">Conversation marked as sensitive</string>
|
||||||
|
<string name="nc_mark_conversation_as_unimportant">Conversation unmarked as important</string>
|
||||||
<string name="nc_meeting_ended">Meeting ended</string>
|
<string name="nc_meeting_ended">Meeting ended</string>
|
||||||
<string name="nc_message_added_to_notes">Message added to notes</string>
|
<string name="nc_message_added_to_notes">Message added to notes</string>
|
||||||
<string name="nc_message_failed">Failed</string>
|
<string name="nc_message_failed">Failed</string>
|
||||||
@ -385,6 +391,7 @@
|
|||||||
<string name="nc_rename_confirm">Rename</string>
|
<string name="nc_rename_confirm">Rename</string>
|
||||||
<string name="nc_reply">Reply</string>
|
<string name="nc_reply">Reply</string>
|
||||||
<string name="nc_reply_privately">Reply privately</string>
|
<string name="nc_reply_privately">Reply privately</string>
|
||||||
|
<string name="nc_room_retention">Room is retained successfully</string>
|
||||||
<string name="nc_save_message">Save</string>
|
<string name="nc_save_message">Save</string>
|
||||||
<string name="nc_save_success">Saved successfully</string>
|
<string name="nc_save_success">Saved successfully</string>
|
||||||
<string name="nc_screen_lock_timeout_30">30 seconds</string>
|
<string name="nc_screen_lock_timeout_30">30 seconds</string>
|
||||||
@ -399,6 +406,8 @@
|
|||||||
<string name="nc_search">Search</string>
|
<string name="nc_search">Search</string>
|
||||||
<string name="nc_select_an_account">Select an account</string>
|
<string name="nc_select_an_account">Select an account</string>
|
||||||
<string name="nc_send_edit_message">Update message</string>
|
<string name="nc_send_edit_message">Update message</string>
|
||||||
|
<string name="nc_sensitive_conversation">Sensitive conversation</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Message preview will be disabled in conversation list and notifications</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s sent a GIF.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s sent a GIF.</string>
|
||||||
<string name="nc_sent_a_gif_you">You sent a GIF.</string>
|
<string name="nc_sent_a_gif_you">You sent a GIF.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s sent a video.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s sent a video.</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Редактиране</string>
|
<string name= "nc_edit">Редактиране</string>
|
||||||
|
<string name="add_participants">Добавяне</string>
|
||||||
<string name="appbar_search_in">Търсене в %s</string>
|
<string name="appbar_search_in">Търсене в %s</string>
|
||||||
<string name="archived">Архивирано</string>
|
<string name="archived">Архивирано</string>
|
||||||
<string name="audio_output_bluetooth">Bluetooth /Блутут/</string>
|
<string name="audio_output_bluetooth">Bluetooth /Блутут/</string>
|
||||||
@ -16,7 +17,7 @@
|
|||||||
<string name="call_without_notification">Обаждане без известие</string>
|
<string name="call_without_notification">Обаждане без известие</string>
|
||||||
<string name="camera_permission_granted">Дадено е право на камера. Моля, изберете камера отново. </string>
|
<string name="camera_permission_granted">Дадено е право на камера. Моля, изберете камера отново. </string>
|
||||||
<string name="choose_avatar_from_cloud">Избор на аватар от облака</string>
|
<string name="choose_avatar_from_cloud">Избор на аватар от облака</string>
|
||||||
<string name="clear_status_message">Изчистване на съобщението за състоянието</string>
|
<string name="clear_status_message">Изчисти състоянието</string>
|
||||||
<string name="clear_status_message_after">Изчистване на съобщение за състоянието след</string>
|
<string name="clear_status_message_after">Изчистване на съобщение за състоянието след</string>
|
||||||
<string name="close">Затваряне</string>
|
<string name="close">Затваряне</string>
|
||||||
<string name="connection_established">Осъществена е връзка</string>
|
<string name="connection_established">Осъществена е връзка</string>
|
||||||
@ -37,7 +38,7 @@
|
|||||||
<string name="file_list_folder">папка</string>
|
<string name="file_list_folder">папка</string>
|
||||||
<string name="file_list_loading">Зареждане …</string>
|
<string name="file_list_loading">Зареждане …</string>
|
||||||
<string name="filename_progress">%1$s (%2$d)</string>
|
<string name="filename_progress">%1$s (%2$d)</string>
|
||||||
<string name="fourHours">4 часа</string>
|
<string name="fourHours">4 чàса</string>
|
||||||
<string name="invisible">Невидим</string>
|
<string name="invisible">Невидим</string>
|
||||||
<string name="leave_call">Напускане на обаждането</string>
|
<string name="leave_call">Напускане на обаждането</string>
|
||||||
<string name="load_more_results">Зареждане на още резултати</string>
|
<string name="load_more_results">Зареждане на още резултати</string>
|
||||||
@ -64,7 +65,7 @@
|
|||||||
<string name="nc_action_open_main_menu">Отворяне на главното меню</string>
|
<string name="nc_action_open_main_menu">Отворяне на главното меню</string>
|
||||||
<string name="nc_add_attachment">Добавяне на прикачен файл</string>
|
<string name="nc_add_attachment">Добавяне на прикачен файл</string>
|
||||||
<string name="nc_add_emojis">Добавяне на емотикони</string>
|
<string name="nc_add_emojis">Добавяне на емотикони</string>
|
||||||
<string name="nc_add_file">Добавяне към разговор</string>
|
<string name="nc_add_file">Добави към разговор</string>
|
||||||
<string name="nc_add_participants">Добавяне на участници</string>
|
<string name="nc_add_participants">Добавяне на участници</string>
|
||||||
<string name="nc_add_to_favorites">Добави към любимите</string>
|
<string name="nc_add_to_favorites">Добави към любимите</string>
|
||||||
<string name="nc_all_ok_operation">Добре, всичко е готово!</string>
|
<string name="nc_all_ok_operation">Добре, всичко е готово!</string>
|
||||||
@ -112,6 +113,7 @@
|
|||||||
<string name="nc_common_disabled">Изключено</string>
|
<string name="nc_common_disabled">Изключено</string>
|
||||||
<string name="nc_common_dismiss">Отхвърляне</string>
|
<string name="nc_common_dismiss">Отхвърляне</string>
|
||||||
<string name="nc_common_error_sorry">Съжалявам нещо се обърка!</string>
|
<string name="nc_common_error_sorry">Съжалявам нещо се обърка!</string>
|
||||||
|
<string name="nc_common_more_options">Още опции</string>
|
||||||
<string name="nc_common_set">Настройка</string>
|
<string name="nc_common_set">Настройка</string>
|
||||||
<string name="nc_common_skip">Пропусни</string>
|
<string name="nc_common_skip">Пропусни</string>
|
||||||
<string name="nc_common_unknown">Неизвестен</string>
|
<string name="nc_common_unknown">Неизвестен</string>
|
||||||
@ -196,7 +198,7 @@
|
|||||||
<string name="nc_guest_access_share_link">Споделяне на връзка за разговор</string>
|
<string name="nc_guest_access_share_link">Споделяне на връзка за разговор</string>
|
||||||
<string name="nc_hint_enter_a_message">Въвеждане на съобщение …</string>
|
<string name="nc_hint_enter_a_message">Въвеждане на съобщение …</string>
|
||||||
<string name="nc_important_conversation">Важен разговор</string>
|
<string name="nc_important_conversation">Важен разговор</string>
|
||||||
<string name="nc_important_conversation_desc">Известията в този разговор ще отменят настройките „Не безпокойте“</string>
|
<string name="nc_keep">Запази</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Трябва да повишите нов модератор, преди да можете да напуснете разговора</string>
|
<string name="nc_last_moderator_leaving_room_warning">Трябва да повишите нов модератор, преди да можете да напуснете разговора</string>
|
||||||
<string name="nc_last_modified">%1$s Последна промяна: %2$s</string>
|
<string name="nc_last_modified">%1$s Последна промяна: %2$s</string>
|
||||||
<string name="nc_leave">Напускане на разговор</string>
|
<string name="nc_leave">Напускане на разговор</string>
|
||||||
@ -224,6 +226,7 @@
|
|||||||
<string name="nc_missed_call">Пропуснахте обаждане от %s</string>
|
<string name="nc_missed_call">Пропуснахте обаждане от %s</string>
|
||||||
<string name="nc_moderator">Модератор</string>
|
<string name="nc_moderator">Модератор</string>
|
||||||
<string name="nc_new_conversation">Нов разговор</string>
|
<string name="nc_new_conversation">Нов разговор</string>
|
||||||
|
<string name="nc_new_conversation_visibility">Видимост</string>
|
||||||
<string name="nc_new_mention">Непрочетени споменавания</string>
|
<string name="nc_new_mention">Непрочетени споменавания</string>
|
||||||
<string name="nc_new_messages">Непрочетени съобщения.</string>
|
<string name="nc_new_messages">Непрочетени съобщения.</string>
|
||||||
<string name="nc_nextcloud_talk_app_not_installed">%1$s не е наличен (не е инсталиран или е ограничен от администратора)</string>
|
<string name="nc_nextcloud_talk_app_not_installed">%1$s не е наличен (не е инсталиран или е ограничен от администратора)</string>
|
||||||
@ -392,7 +395,7 @@
|
|||||||
<string name="no_phone_book_integration_due_to_permissions">Няма интеграция на телефонен номер поради липсващи права</string>
|
<string name="no_phone_book_integration_due_to_permissions">Няма интеграция на телефонен номер поради липсващи права</string>
|
||||||
<string name="oneHour">1 час</string>
|
<string name="oneHour">1 час</string>
|
||||||
<string name="online">На линия</string>
|
<string name="online">На линия</string>
|
||||||
<string name="online_status">Състояние на линия</string>
|
<string name="online_status">Състояние</string>
|
||||||
<string name="openConversations">Отворени разговори</string>
|
<string name="openConversations">Отворени разговори</string>
|
||||||
<string name="open_in_files_app">Отворяне в приложението Файлове</string>
|
<string name="open_in_files_app">Отворяне в приложението Файлове</string>
|
||||||
<string name="play_pause_voice_message">Възпроизвеждане/пауза на гласово съобщение</string>
|
<string name="play_pause_voice_message">Възпроизвеждане/пауза на гласово съобщение</string>
|
||||||
@ -428,10 +431,10 @@
|
|||||||
<string name="save">Записване</string>
|
<string name="save">Записване</string>
|
||||||
<string name="scope_federated_description">Синхронизиране само с доверени сървъри</string>
|
<string name="scope_federated_description">Синхронизиране само с доверени сървъри</string>
|
||||||
<string name="scope_federated_title">Федериран</string>
|
<string name="scope_federated_title">Федериран</string>
|
||||||
<string name="scope_local_description">Видим само за хора от този случай и гости</string>
|
<string name="scope_local_description">Видимо за потребители на тази инстанция на сървъра, както и гости.</string>
|
||||||
<string name="scope_local_title">Локално</string>
|
<string name="scope_local_title">Локално</string>
|
||||||
<string name="scope_private_description">Видим само за хора, съчетани чрез интегриране на телефонен номер чрез Talk на мобилен телефон</string>
|
<string name="scope_private_description">Видим само за хора, открити по телефонен номер, който е зададен в \"Talk\".</string>
|
||||||
<string name="scope_private_title">Частен</string>
|
<string name="scope_private_title">Лично</string>
|
||||||
<string name="scope_published_description">Синхронизиране с доверени сървъри и с глобалната и публичната адресна книга</string>
|
<string name="scope_published_description">Синхронизиране с доверени сървъри и с глобалната и публичната адресна книга</string>
|
||||||
<string name="scope_published_title">Публикувано</string>
|
<string name="scope_published_title">Публикувано</string>
|
||||||
<string name="scope_toggle">Превключване на обхват</string>
|
<string name="scope_toggle">Превключване на обхват</string>
|
||||||
@ -447,7 +450,7 @@
|
|||||||
<string name="set">Да се зададе</string>
|
<string name="set">Да се зададе</string>
|
||||||
<string name="set_avatar_from_camera">Задаване на аватар от камерата</string>
|
<string name="set_avatar_from_camera">Задаване на аватар от камерата</string>
|
||||||
<string name="set_status">Задаване на състояние</string>
|
<string name="set_status">Задаване на състояние</string>
|
||||||
<string name="set_status_message">Задаване на съобщение за състояние</string>
|
<string name="set_status_message">Задай състояние</string>
|
||||||
<string name="share">Споделяне</string>
|
<string name="share">Споделяне</string>
|
||||||
<string name="shared_items_audio">Аудио</string>
|
<string name="shared_items_audio">Аудио</string>
|
||||||
<string name="shared_items_file">Файл</string>
|
<string name="shared_items_file">Файл</string>
|
||||||
@ -495,7 +498,7 @@
|
|||||||
<string name="userinfo_no_info_headline">Няма зададена лична информация</string>
|
<string name="userinfo_no_info_headline">Няма зададена лична информация</string>
|
||||||
<string name="userinfo_no_info_text">Добавяне на име, снимка и подробности за контакт към страницата на вашия профил.</string>
|
<string name="userinfo_no_info_text">Добавяне на име, снимка и подробности за контакт към страницата на вашия профил.</string>
|
||||||
<string name="video_call">Видео разговор</string>
|
<string name="video_call">Видео разговор</string>
|
||||||
<string name="whats_your_status">Какъв е вашият статус?</string>
|
<string name="whats_your_status">Какво е вашето състояние?</string>
|
||||||
<plurals name="polls_amount_voters">
|
<plurals name="polls_amount_voters">
|
||||||
<item quantity="one">%dгласувания </item>
|
<item quantity="one">%dгласувания </item>
|
||||||
<item quantity="other">%d гласувания</item>
|
<item quantity="other">%d гласувания</item>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Edició</string>
|
<string name= "nc_edit">Edició</string>
|
||||||
|
<string name="add_participants">Afegeix</string>
|
||||||
<string name="add_to_notes">Afegeix-ho a les notes</string>
|
<string name="add_to_notes">Afegeix-ho a les notes</string>
|
||||||
<string name="added_to_favorites">S\'ha afegit la conversa %1$s als preferits</string>
|
<string name="added_to_favorites">S\'ha afegit la conversa %1$s als preferits</string>
|
||||||
<string name="appbar_search_in">Cerca a %s</string>
|
<string name="appbar_search_in">Cerca a %s</string>
|
||||||
@ -271,9 +272,9 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">L\'optimització de la bateria no s\'ignora. Això hauria de canviar-se per a garantir que les notificacions funcionin en segon pla. Feu clic a D\'acord i seleccioneu \"Totes les aplicacions\" -> %1$s -> No optimitzis</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">L\'optimització de la bateria no s\'ignora. Això hauria de canviar-se per a garantir que les notificacions funcionin en segon pla. Feu clic a D\'acord i seleccioneu \"Totes les aplicacions\" -> %1$s -> No optimitzis</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignora l\'optimització de la bateria</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignora l\'optimització de la bateria</string>
|
||||||
<string name="nc_important_conversation">Conversa important</string>
|
<string name="nc_important_conversation">Conversa important</string>
|
||||||
<string name="nc_important_conversation_desc">Les notificacions d\'aquesta conversa anul·laran els paràmetres de no destorbar.</string>
|
|
||||||
<string name="nc_invitations">Invitacions</string>
|
<string name="nc_invitations">Invitacions</string>
|
||||||
<string name="nc_join_open_conversations">Uneix-te a converses obertes</string>
|
<string name="nc_join_open_conversations">Uneix-te a converses obertes</string>
|
||||||
|
<string name="nc_keep">Mantén</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Heu de promocionar un nou moderador abans de deixar la conversa</string>
|
<string name="nc_last_moderator_leaving_room_warning">Heu de promocionar un nou moderador abans de deixar la conversa</string>
|
||||||
<string name="nc_last_modified">%1$s | Darrera modificació: %2$s</string>
|
<string name="nc_last_modified">%1$s | Darrera modificació: %2$s</string>
|
||||||
<string name="nc_leave">Surt de la conversa</string>
|
<string name="nc_leave">Surt de la conversa</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Upravit</string>
|
<string name= "nc_edit">Upravit</string>
|
||||||
|
<string name="add_participants">Přidat</string>
|
||||||
<string name="add_to_notes">Přidat do Poznámek</string>
|
<string name="add_to_notes">Přidat do Poznámek</string>
|
||||||
<string name="added_to_favorites">Konverzace %1$s přidána do oblíbených</string>
|
<string name="added_to_favorites">Konverzace %1$s přidána do oblíbených</string>
|
||||||
<string name="appbar_search_in">Hledat v %s</string>
|
<string name="appbar_search_in">Hledat v %s</string>
|
||||||
@ -71,6 +72,7 @@
|
|||||||
<string name="leave_call">Opustit hovor</string>
|
<string name="leave_call">Opustit hovor</string>
|
||||||
<string name="left_conversation">Opustili jste konverzaci %1$s</string>
|
<string name="left_conversation">Opustili jste konverzaci %1$s</string>
|
||||||
<string name="load_more_results">Načíst další výsledky</string>
|
<string name="load_more_results">Načíst další výsledky</string>
|
||||||
|
<string name="local_time">Místní čas: %1$s</string>
|
||||||
<string name="lock_conversation">Uzamknout konverzaci</string>
|
<string name="lock_conversation">Uzamknout konverzaci</string>
|
||||||
<string name="lock_symbol">Symbol zámku</string>
|
<string name="lock_symbol">Symbol zámku</string>
|
||||||
<string name="lower_hand">Přestat se hlásit</string>
|
<string name="lower_hand">Přestat se hlásit</string>
|
||||||
@ -177,6 +179,7 @@
|
|||||||
<string name="nc_delete_conversation_more">Pokud konverzaci smažete, bude smazána také pro všechny její ostatní účastníky.</string>
|
<string name="nc_delete_conversation_more">Pokud konverzaci smažete, bude smazána také pro všechny její ostatní účastníky.</string>
|
||||||
<string name="nc_delete_message">Smazat</string>
|
<string name="nc_delete_message">Smazat</string>
|
||||||
<string name="nc_delete_message_leaked_to_matterbridge">Zpráva úspěšně smazána, ale možná unikla do jiných služeb</string>
|
<string name="nc_delete_message_leaked_to_matterbridge">Zpráva úspěšně smazána, ale možná unikla do jiných služeb</string>
|
||||||
|
<string name="nc_delete_now">Smazat nyní</string>
|
||||||
<string name="nc_deleted_user">Uživatel %1$s byl odebrán</string>
|
<string name="nc_deleted_user">Uživatel %1$s byl odebrán</string>
|
||||||
<string name="nc_demote">Odebrat oprávnění moderátora</string>
|
<string name="nc_demote">Odebrat oprávnění moderátora</string>
|
||||||
<string name="nc_description_record_voice">Nahrát hlasovou zprávu</string>
|
<string name="nc_description_record_voice">Nahrát hlasovou zprávu</string>
|
||||||
@ -282,10 +285,11 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Úspora energie z akumulátoru není ignorována. Pokud chcete, aby upozorňování na pozadí fungovalo správně, mělo by toto být změněno! Klikněte na OK a vyberte „Všechny aplikace“ -> %1$s -> neoptimalizovat</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Úspora energie z akumulátoru není ignorována. Pokud chcete, aby upozorňování na pozadí fungovalo správně, mělo by toto být změněno! Klikněte na OK a vyberte „Všechny aplikace“ -> %1$s -> neoptimalizovat</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorovat úsporu energie z akumulátoru</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorovat úsporu energie z akumulátoru</string>
|
||||||
<string name="nc_important_conversation">Důležitá konverzace</string>
|
<string name="nc_important_conversation">Důležitá konverzace</string>
|
||||||
<string name="nc_important_conversation_desc">Upozornění v této konverzaci budou ignorovat režim Nerušit</string>
|
<string name="nc_important_conversation_desc">Stav uživatele „Nevyrušovat“ bude v případě důležitých konverzací ignorován</string>
|
||||||
<string name="nc_invalid_time">Neplatný čas</string>
|
<string name="nc_invalid_time">Neplatný čas</string>
|
||||||
<string name="nc_invitations">Pozvání</string>
|
<string name="nc_invitations">Pozvání</string>
|
||||||
<string name="nc_join_open_conversations">Přidat se do všem přístupných konverzací</string>
|
<string name="nc_join_open_conversations">Přidat se do všem přístupných konverzací</string>
|
||||||
|
<string name="nc_keep">Ponechat</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Než budete moci konverzaci opustit, je třeba předat někomu roli moderátora</string>
|
<string name="nc_last_moderator_leaving_room_warning">Než budete moci konverzaci opustit, je třeba předat někomu roli moderátora</string>
|
||||||
<string name="nc_last_modified">%1$s | Naposledy upraveno: %2$s</string>
|
<string name="nc_last_modified">%1$s | Naposledy upraveno: %2$s</string>
|
||||||
<string name="nc_leave">Opustit konverzaci</string>
|
<string name="nc_leave">Opustit konverzaci</string>
|
||||||
@ -305,6 +309,10 @@
|
|||||||
<string name="nc_manual">Nenastaveno</string>
|
<string name="nc_manual">Nenastaveno</string>
|
||||||
<string name="nc_mark_as_read">Označit jako přečtené</string>
|
<string name="nc_mark_as_read">Označit jako přečtené</string>
|
||||||
<string name="nc_mark_as_unread">Označit jako nepřečtené</string>
|
<string name="nc_mark_as_unread">Označit jako nepřečtené</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Konverzace označena jako důležitá</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Zrušeno značení konverzace coby citlivé</string>
|
||||||
|
<string name="nc_mark_conversation_as_sensitive">Konverzace označena jako citlivá</string>
|
||||||
|
<string name="nc_mark_conversation_as_unimportant">Zrušeno značení konverzace coby důležité</string>
|
||||||
<string name="nc_meeting_ended">Schůzka skončila</string>
|
<string name="nc_meeting_ended">Schůzka skončila</string>
|
||||||
<string name="nc_message_added_to_notes">Zpráva přidána do poznámek</string>
|
<string name="nc_message_added_to_notes">Zpráva přidána do poznámek</string>
|
||||||
<string name="nc_message_failed">Nezdařilo se</string>
|
<string name="nc_message_failed">Nezdařilo se</string>
|
||||||
@ -383,6 +391,7 @@
|
|||||||
<string name="nc_rename_confirm">Přejmenovat</string>
|
<string name="nc_rename_confirm">Přejmenovat</string>
|
||||||
<string name="nc_reply">Odpovědět</string>
|
<string name="nc_reply">Odpovědět</string>
|
||||||
<string name="nc_reply_privately">Odpovědět soukromě</string>
|
<string name="nc_reply_privately">Odpovědět soukromě</string>
|
||||||
|
<string name="nc_room_retention">Místnost je úspěšně ponechána</string>
|
||||||
<string name="nc_save_message">Uložit</string>
|
<string name="nc_save_message">Uložit</string>
|
||||||
<string name="nc_save_success">Úspěšně uloženo</string>
|
<string name="nc_save_success">Úspěšně uloženo</string>
|
||||||
<string name="nc_screen_lock_timeout_30">30 sekund</string>
|
<string name="nc_screen_lock_timeout_30">30 sekund</string>
|
||||||
@ -397,6 +406,8 @@
|
|||||||
<string name="nc_search">Hledat</string>
|
<string name="nc_search">Hledat</string>
|
||||||
<string name="nc_select_an_account">Vyberte účet</string>
|
<string name="nc_select_an_account">Vyberte účet</string>
|
||||||
<string name="nc_send_edit_message">Aktualizovat zprávu</string>
|
<string name="nc_send_edit_message">Aktualizovat zprávu</string>
|
||||||
|
<string name="nc_sensitive_conversation">Citlivá konverzace</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Náhled zprávy bude vypnut pro seznam konverzací a notifikace</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s poslal(a) GIF animaci.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s poslal(a) GIF animaci.</string>
|
||||||
<string name="nc_sent_a_gif_you">Odeslali jste GIF animaci.</string>
|
<string name="nc_sent_a_gif_you">Odeslali jste GIF animaci.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s poslal(a) video.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s poslal(a) video.</string>
|
||||||
@ -532,6 +543,7 @@
|
|||||||
<string name="online_status">Stav online</string>
|
<string name="online_status">Stav online</string>
|
||||||
<string name="openConversations">Otevřít konverzace</string>
|
<string name="openConversations">Otevřít konverzace</string>
|
||||||
<string name="open_in_files_app">Otevřít v aplikaci Soubory</string>
|
<string name="open_in_files_app">Otevřít v aplikaci Soubory</string>
|
||||||
|
<string name="open_notes">Otevřít poznámky</string>
|
||||||
<string name="play_pause_voice_message">Přehrát/pozastavit hlasovou zprávu</string>
|
<string name="play_pause_voice_message">Přehrát/pozastavit hlasovou zprávu</string>
|
||||||
<string name="playback_speed_control">Ovládání rychlosti přehrávání</string>
|
<string name="playback_speed_control">Ovládání rychlosti přehrávání</string>
|
||||||
<string name="polls_add_option">Přidat volbu</string>
|
<string name="polls_add_option">Přidat volbu</string>
|
||||||
@ -671,6 +683,12 @@
|
|||||||
<item quantity="many">Viz %d podobných zpráv</item>
|
<item quantity="many">Viz %d podobných zpráv</item>
|
||||||
<item quantity="other">Viz %d podobné zprávy</item>
|
<item quantity="other">Viz %d podobné zprávy</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<plurals name="nc_conversation_auto_delete_info">
|
||||||
|
<item quantity="one">Tato konverzace bude automaticky smazána pro kohokoli po %1$d dni bez jakékoli aktivity.</item>
|
||||||
|
<item quantity="few">Tato konverzace bude automaticky smazána pro kohokoli po %1$d dnech bez jakékoli aktivity.</item>
|
||||||
|
<item quantity="many">Tato konverzace bude automaticky smazána pro kohokoli po %1$d dnech bez jakékoli aktivity.</item>
|
||||||
|
<item quantity="other">Tato konverzace bude automaticky smazána pro kohokoli po %1$d dnech bez jakékoli aktivity.</item>
|
||||||
|
</plurals>
|
||||||
<plurals name="polls_amount_voters">
|
<plurals name="polls_amount_voters">
|
||||||
<item quantity="one">%d hlas</item>
|
<item quantity="one">%d hlas</item>
|
||||||
<item quantity="few">%d hlasy</item>
|
<item quantity="few">%d hlasy</item>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Rediger</string>
|
<string name= "nc_edit">Rediger</string>
|
||||||
|
<string name="add_participants">Tilføj</string>
|
||||||
<string name="add_to_notes">Tilføj til Noter</string>
|
<string name="add_to_notes">Tilføj til Noter</string>
|
||||||
<string name="added_to_favorites">Tilføjede samtalen %1$s til favoritter</string>
|
<string name="added_to_favorites">Tilføjede samtalen %1$s til favoritter</string>
|
||||||
<string name="appbar_search_in">Søg i %s</string>
|
<string name="appbar_search_in">Søg i %s</string>
|
||||||
@ -269,7 +270,6 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Batterioptimering bliver ikke ignoreret. Dette bør ændres for at være sikker på at notifikationer virker i baggrunden! Klik venligst på OK og vælg \"Alle apps\" -> %1$s -> Optimer ikke</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Batterioptimering bliver ikke ignoreret. Dette bør ændres for at være sikker på at notifikationer virker i baggrunden! Klik venligst på OK og vælg \"Alle apps\" -> %1$s -> Optimer ikke</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorer batterioptimering</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorer batterioptimering</string>
|
||||||
<string name="nc_important_conversation">Vigtig samtale</string>
|
<string name="nc_important_conversation">Vigtig samtale</string>
|
||||||
<string name="nc_important_conversation_desc">notifikationer under denne samtale vil ignorere Forstyr ikke indstillinger</string>
|
|
||||||
<string name="nc_invitations">Invitationer</string>
|
<string name="nc_invitations">Invitationer</string>
|
||||||
<string name="nc_join_open_conversations">Deltag i åbne samtaler</string>
|
<string name="nc_join_open_conversations">Deltag i åbne samtaler</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Du skal udnævne en ny moderator inden du kan forlade samtalen.</string>
|
<string name="nc_last_moderator_leaving_room_warning">Du skal udnævne en ny moderator inden du kan forlade samtalen.</string>
|
||||||
@ -390,9 +390,9 @@
|
|||||||
<string name="nc_server_failed_to_import_account">Den valgte konto kunne ikke importeres</string>
|
<string name="nc_server_failed_to_import_account">Den valgte konto kunne ikke importeres</string>
|
||||||
<string name="nc_server_helper_text">Linket til dit %1$s web interface når du åbner den i browseren.</string>
|
<string name="nc_server_helper_text">Linket til dit %1$s web interface når du åbner den i browseren.</string>
|
||||||
<string name="nc_server_import_account">Importer konto fra %1$s appen</string>
|
<string name="nc_server_import_account">Importer konto fra %1$s appen</string>
|
||||||
<string name="nc_server_import_account_plain">Importer konto</string>
|
<string name="nc_server_import_account_plain">Importér konto</string>
|
||||||
<string name="nc_server_import_accounts">Importer konti fra %1$s appen</string>
|
<string name="nc_server_import_accounts">Importer konti fra %1$s appen</string>
|
||||||
<string name="nc_server_import_accounts_plain">Importer konti</string>
|
<string name="nc_server_import_accounts_plain">Importér konti</string>
|
||||||
<string name="nc_server_maintenance">Få venligst %1$s ud fra vedligeholdelse </string>
|
<string name="nc_server_maintenance">Få venligst %1$s ud fra vedligeholdelse </string>
|
||||||
<string name="nc_server_not_installed">Afslut venligst din %1$s installation</string>
|
<string name="nc_server_not_installed">Afslut venligst din %1$s installation</string>
|
||||||
<string name="nc_server_testing_connection">Tester forbindelsen</string>
|
<string name="nc_server_testing_connection">Tester forbindelsen</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Bearbeiten</string>
|
<string name= "nc_edit">Bearbeiten</string>
|
||||||
|
<string name="add_participants">Hinzufügen</string>
|
||||||
<string name="add_to_notes">Zu Notizen hinzufügen</string>
|
<string name="add_to_notes">Zu Notizen hinzufügen</string>
|
||||||
<string name="added_to_favorites">Unterhaltung %1$s zu Favoriten hinzugefügt</string>
|
<string name="added_to_favorites">Unterhaltung %1$s zu Favoriten hinzugefügt</string>
|
||||||
<string name="appbar_search_in">Suche in %s</string>
|
<string name="appbar_search_in">Suche in %s</string>
|
||||||
@ -284,10 +285,11 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Die Batterieoptimierung ist aktiviert. Dies sollte geändert werden, um sicherzustellen, dass Benachrichtigungen im Hintergrund funktionieren! Bitte klicken Sie auf OK und wählen Sie \"Alle Apps\" -> %1$s -> Nicht optimieren</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Die Batterieoptimierung ist aktiviert. Dies sollte geändert werden, um sicherzustellen, dass Benachrichtigungen im Hintergrund funktionieren! Bitte klicken Sie auf OK und wählen Sie \"Alle Apps\" -> %1$s -> Nicht optimieren</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Batterieoptimierung ignorieren</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Batterieoptimierung ignorieren</string>
|
||||||
<string name="nc_important_conversation">Wichtige Unterhaltung</string>
|
<string name="nc_important_conversation">Wichtige Unterhaltung</string>
|
||||||
<string name="nc_important_conversation_desc">Benachrichtigungen in dieser Unterhaltung überschreiben Nicht-Stören-Einstellungen</string>
|
<string name="nc_important_conversation_desc">\"Nicht stören\"-Benutzerstatus wird für wichtige Unterhaltungen ignoriert</string>
|
||||||
<string name="nc_invalid_time">Ungültige Zeit</string>
|
<string name="nc_invalid_time">Ungültige Zeit</string>
|
||||||
<string name="nc_invitations">Einladungen</string>
|
<string name="nc_invitations">Einladungen</string>
|
||||||
<string name="nc_join_open_conversations">Offenen Unterhaltungen beitreten</string>
|
<string name="nc_join_open_conversations">Offenen Unterhaltungen beitreten</string>
|
||||||
|
<string name="nc_keep">Behalten</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Sie müssen einen neuen Moderator bestimmen, bevor Sie die Unterhaltung verlassen können.</string>
|
<string name="nc_last_moderator_leaving_room_warning">Sie müssen einen neuen Moderator bestimmen, bevor Sie die Unterhaltung verlassen können.</string>
|
||||||
<string name="nc_last_modified">%1$s | Zuletzt geändert: %2$s</string>
|
<string name="nc_last_modified">%1$s | Zuletzt geändert: %2$s</string>
|
||||||
<string name="nc_leave">Unterhaltung verlassen</string>
|
<string name="nc_leave">Unterhaltung verlassen</string>
|
||||||
@ -307,6 +309,10 @@
|
|||||||
<string name="nc_manual">Nicht eingestellt</string>
|
<string name="nc_manual">Nicht eingestellt</string>
|
||||||
<string name="nc_mark_as_read">Als gelesen markieren</string>
|
<string name="nc_mark_as_read">Als gelesen markieren</string>
|
||||||
<string name="nc_mark_as_unread">Als ungelesen markieren</string>
|
<string name="nc_mark_as_unread">Als ungelesen markieren</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Unterhaltung als wichtig markiert</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Unterhaltung nicht als sensibel markiert</string>
|
||||||
|
<string name="nc_mark_conversation_as_sensitive">Unterhaltung als sensibel markiert</string>
|
||||||
|
<string name="nc_mark_conversation_as_unimportant">Unterhaltung nicht als wichtig markiert</string>
|
||||||
<string name="nc_meeting_ended">Meeting beendet</string>
|
<string name="nc_meeting_ended">Meeting beendet</string>
|
||||||
<string name="nc_message_added_to_notes">Nachricht zu den Notizen hinzugefügt</string>
|
<string name="nc_message_added_to_notes">Nachricht zu den Notizen hinzugefügt</string>
|
||||||
<string name="nc_message_failed">Fehlgeschlagen</string>
|
<string name="nc_message_failed">Fehlgeschlagen</string>
|
||||||
@ -385,6 +391,7 @@
|
|||||||
<string name="nc_rename_confirm">Umbenennen</string>
|
<string name="nc_rename_confirm">Umbenennen</string>
|
||||||
<string name="nc_reply">Antworten</string>
|
<string name="nc_reply">Antworten</string>
|
||||||
<string name="nc_reply_privately">Privat antworten</string>
|
<string name="nc_reply_privately">Privat antworten</string>
|
||||||
|
<string name="nc_room_retention">Raum wird beibehalten</string>
|
||||||
<string name="nc_save_message">Speichern</string>
|
<string name="nc_save_message">Speichern</string>
|
||||||
<string name="nc_save_success">Gespeichert</string>
|
<string name="nc_save_success">Gespeichert</string>
|
||||||
<string name="nc_screen_lock_timeout_30">30 Sekunden</string>
|
<string name="nc_screen_lock_timeout_30">30 Sekunden</string>
|
||||||
@ -399,6 +406,8 @@
|
|||||||
<string name="nc_search">Suchen</string>
|
<string name="nc_search">Suchen</string>
|
||||||
<string name="nc_select_an_account">Konto auswählen</string>
|
<string name="nc_select_an_account">Konto auswählen</string>
|
||||||
<string name="nc_send_edit_message">Nachricht aktualisieren</string>
|
<string name="nc_send_edit_message">Nachricht aktualisieren</string>
|
||||||
|
<string name="nc_sensitive_conversation">Sensible Unterhaltung</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Die Nachrichtenvorschau wird in der Unterhaltungsliste und den Benachrichtigungen deaktiviert</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s hat ein GIF gesendet.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s hat ein GIF gesendet.</string>
|
||||||
<string name="nc_sent_a_gif_you">Sie haben ein GIF gesendet.</string>
|
<string name="nc_sent_a_gif_you">Sie haben ein GIF gesendet.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s hat ein Video gesendet.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s hat ein Video gesendet.</string>
|
||||||
@ -534,6 +543,7 @@
|
|||||||
<string name="online_status">Online-Status</string>
|
<string name="online_status">Online-Status</string>
|
||||||
<string name="openConversations">Offene Unterhaltungen</string>
|
<string name="openConversations">Offene Unterhaltungen</string>
|
||||||
<string name="open_in_files_app">In Dateien-App öffnen</string>
|
<string name="open_in_files_app">In Dateien-App öffnen</string>
|
||||||
|
<string name="open_notes">Notizen öffnen</string>
|
||||||
<string name="play_pause_voice_message">Sprachnachricht wiedergeben/pausieren</string>
|
<string name="play_pause_voice_message">Sprachnachricht wiedergeben/pausieren</string>
|
||||||
<string name="playback_speed_control">Steuerung der Wiedergabegeschwindigkeit</string>
|
<string name="playback_speed_control">Steuerung der Wiedergabegeschwindigkeit</string>
|
||||||
<string name="polls_add_option">Option hinzufügen</string>
|
<string name="polls_add_option">Option hinzufügen</string>
|
||||||
@ -671,6 +681,10 @@
|
|||||||
<item quantity="one">%d ähnliche Nachricht ansehen</item>
|
<item quantity="one">%d ähnliche Nachricht ansehen</item>
|
||||||
<item quantity="other">%d ähnliche Nachrichten ansehen</item>
|
<item quantity="other">%d ähnliche Nachrichten ansehen</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<plurals name="nc_conversation_auto_delete_info">
|
||||||
|
<item quantity="one">Diese Unterhaltung wird für alle bei Inaktivität in %1$d Tag gelöscht</item>
|
||||||
|
<item quantity="other">Diese Unterhaltung wird für alle bei Inaktivität in %1$d Tagen gelöscht</item>
|
||||||
|
</plurals>
|
||||||
<plurals name="polls_amount_voters">
|
<plurals name="polls_amount_voters">
|
||||||
<item quantity="one">%d Stimme</item>
|
<item quantity="one">%d Stimme</item>
|
||||||
<item quantity="other">%d Stimmen</item>
|
<item quantity="other">%d Stimmen</item>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Επεξεργασία</string>
|
<string name= "nc_edit">Επεξεργασία</string>
|
||||||
|
<string name="add_participants">Προσθήκη</string>
|
||||||
<string name="appbar_search_in">Αναζήτηση στο %s</string>
|
<string name="appbar_search_in">Αναζήτηση στο %s</string>
|
||||||
<string name="archived">Αρχειοθετήθηκε</string>
|
<string name="archived">Αρχειοθετήθηκε</string>
|
||||||
<string name="audio_output_dialog_headline">Έξοδος ήχου</string>
|
<string name="audio_output_dialog_headline">Έξοδος ήχου</string>
|
||||||
@ -106,6 +107,7 @@
|
|||||||
<string name="nc_conversations_empty">Συμμετέχετε σε συνομιλία ή ξεκινήστε μια νέα</string>
|
<string name="nc_conversations_empty">Συμμετέχετε σε συνομιλία ή ξεκινήστε μια νέα</string>
|
||||||
<string name="nc_conversations_empty_details">Πείτε γειά σε φίλους και συνεργάτες!</string>
|
<string name="nc_conversations_empty_details">Πείτε γειά σε φίλους και συνεργάτες!</string>
|
||||||
<string name="nc_copy_message">Αντιγραφή</string>
|
<string name="nc_copy_message">Αντιγραφή</string>
|
||||||
|
<string name="nc_create_new_conversation">Δημιουργία νέας συνομιλίας</string>
|
||||||
<string name="nc_create_poll">Δημιουργία ψηφοφορίας</string>
|
<string name="nc_create_poll">Δημιουργία ψηφοφορίας</string>
|
||||||
<string name="nc_date_header_today">Σήμερα</string>
|
<string name="nc_date_header_today">Σήμερα</string>
|
||||||
<string name="nc_date_header_yesterday">Χθές</string>
|
<string name="nc_date_header_yesterday">Χθές</string>
|
||||||
@ -165,8 +167,8 @@
|
|||||||
<string name="nc_guest_access_share_link">Κοινή χρήση συνδέσμου συνομιλίας</string>
|
<string name="nc_guest_access_share_link">Κοινή χρήση συνδέσμου συνομιλίας</string>
|
||||||
<string name="nc_hint_enter_a_message">Εισάγετε ένα μήνυμα ...</string>
|
<string name="nc_hint_enter_a_message">Εισάγετε ένα μήνυμα ...</string>
|
||||||
<string name="nc_important_conversation">Σημαντική συνομιλία</string>
|
<string name="nc_important_conversation">Σημαντική συνομιλία</string>
|
||||||
<string name="nc_important_conversation_desc">Οι Ειδοποιήσεις σε αυτή την συνομιλία θα παρακάμψουν τις ρυθμίσεις Μην ενοχλείτε</string>
|
|
||||||
<string name="nc_invitations">Προσκλήσεις</string>
|
<string name="nc_invitations">Προσκλήσεις</string>
|
||||||
|
<string name="nc_join_open_conversations">Δημιουργία νέας συνομιλίας</string>
|
||||||
<string name="nc_last_modified">%1$s Τελευταία τροποποίηση %2$s</string>
|
<string name="nc_last_modified">%1$s Τελευταία τροποποίηση %2$s</string>
|
||||||
<string name="nc_leave">Εγκατάλειψη συνομιλίας</string>
|
<string name="nc_leave">Εγκατάλειψη συνομιλίας</string>
|
||||||
<string name="nc_leaving_call">Αποχώρηση από την κλήση ...</string>
|
<string name="nc_leaving_call">Αποχώρηση από την κλήση ...</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Editar</string>
|
<string name= "nc_edit">Editar</string>
|
||||||
|
<string name="add_participants">Guardar</string>
|
||||||
<string name="appbar_search_in">Compartir en %s</string>
|
<string name="appbar_search_in">Compartir en %s</string>
|
||||||
<string name="archived">Archivado</string>
|
<string name="archived">Archivado</string>
|
||||||
<string name="audio_output_bluetooth">Bluetooth</string>
|
<string name="audio_output_bluetooth">Bluetooth</string>
|
||||||
@ -200,7 +201,6 @@
|
|||||||
<string name="nc_guest_access_share_link">Compartir enlace de la conversación</string>
|
<string name="nc_guest_access_share_link">Compartir enlace de la conversación</string>
|
||||||
<string name="nc_hint_enter_a_message">Escribe un mensaje...</string>
|
<string name="nc_hint_enter_a_message">Escribe un mensaje...</string>
|
||||||
<string name="nc_important_conversation">Conversación importante</string>
|
<string name="nc_important_conversation">Conversación importante</string>
|
||||||
<string name="nc_important_conversation_desc">Las notificaciones en esta conversación anularán la configuración de No molestar</string>
|
|
||||||
<string name="nc_keep">Mantén</string>
|
<string name="nc_keep">Mantén</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Necesitas promover un nuevo moderador antes de poder abandonar la conversación</string>
|
<string name="nc_last_moderator_leaving_room_warning">Necesitas promover un nuevo moderador antes de poder abandonar la conversación</string>
|
||||||
<string name="nc_last_modified">%1$s | Última modificación: %2$s</string>
|
<string name="nc_last_modified">%1$s | Última modificación: %2$s</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Editar</string>
|
<string name= "nc_edit">Editar</string>
|
||||||
|
<string name="add_participants">Añadir</string>
|
||||||
<string name="add_to_notes">Añadir a Notas</string>
|
<string name="add_to_notes">Añadir a Notas</string>
|
||||||
<string name="added_to_favorites">Se añadió la conversación %1$s a los favoritos</string>
|
<string name="added_to_favorites">Se añadió la conversación %1$s a los favoritos</string>
|
||||||
<string name="appbar_search_in">Buscar en %s</string>
|
<string name="appbar_search_in">Buscar en %s</string>
|
||||||
@ -275,7 +276,6 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">La optimización de batería no se está ignorando. ¡Esto debería ser cambiado para garantizar que las notificaciones funcionen en segundo plano!. Por favor, haga clic en OK y seleccione \"Todas las apps\" -> %1$s -> No optimizar</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">La optimización de batería no se está ignorando. ¡Esto debería ser cambiado para garantizar que las notificaciones funcionen en segundo plano!. Por favor, haga clic en OK y seleccione \"Todas las apps\" -> %1$s -> No optimizar</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorar la optimización de batería</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorar la optimización de batería</string>
|
||||||
<string name="nc_important_conversation">Conversación importante</string>
|
<string name="nc_important_conversation">Conversación importante</string>
|
||||||
<string name="nc_important_conversation_desc">Las notificaciones de esta conversación anularán el ajuste de No Molestar</string>
|
|
||||||
<string name="nc_invitations">Invitaciones</string>
|
<string name="nc_invitations">Invitaciones</string>
|
||||||
<string name="nc_join_open_conversations">Unirse a conversaciones abiertas</string>
|
<string name="nc_join_open_conversations">Unirse a conversaciones abiertas</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Debe escoger a un nuevo moderador antes de que pueda abandonar la conversación</string>
|
<string name="nc_last_moderator_leaving_room_warning">Debe escoger a un nuevo moderador antes de que pueda abandonar la conversación</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Muuda</string>
|
<string name= "nc_edit">Muuda</string>
|
||||||
|
<string name="add_participants">Lisa</string>
|
||||||
<string name="add_to_notes">Lisa Märkmetesse</string>
|
<string name="add_to_notes">Lisa Märkmetesse</string>
|
||||||
<string name="added_to_favorites">„%1$s“ vestlus on märgitud lemmikuks</string>
|
<string name="added_to_favorites">„%1$s“ vestlus on märgitud lemmikuks</string>
|
||||||
<string name="appbar_search_in">Otsi siin: %s</string>
|
<string name="appbar_search_in">Otsi siin: %s</string>
|
||||||
@ -27,8 +28,8 @@
|
|||||||
<string name="call_without_notification">Kõne ilma teavituseta</string>
|
<string name="call_without_notification">Kõne ilma teavituseta</string>
|
||||||
<string name="camera_permission_granted">Õigused kaamera kasutamiseks on nüüd olemas. Palun vali kaamera uuesti.</string>
|
<string name="camera_permission_granted">Õigused kaamera kasutamiseks on nüüd olemas. Palun vali kaamera uuesti.</string>
|
||||||
<string name="choose_avatar_from_cloud">Vali tunnuspilt pilvest</string>
|
<string name="choose_avatar_from_cloud">Vali tunnuspilt pilvest</string>
|
||||||
<string name="clear_status_message">Tühjenda staatuseteade</string>
|
<string name="clear_status_message">Eemalda olekuteade</string>
|
||||||
<string name="clear_status_message_after">Tühjenda staatuseteade pärast</string>
|
<string name="clear_status_message_after">Eemalda olekuteade pärast</string>
|
||||||
<string name="close">Sulge</string>
|
<string name="close">Sulge</string>
|
||||||
<string name="close_icon">Sulgemise ikoon</string>
|
<string name="close_icon">Sulgemise ikoon</string>
|
||||||
<string name="connection_established">Saadi ühendus</string>
|
<string name="connection_established">Saadi ühendus</string>
|
||||||
@ -284,7 +285,7 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Akukasutuse optimeerimine pole eiratud. Et teavituste saatmine toimiks taustal, siis peaksid seda muutma. Palun klõpsi „Sobib“ ja vali „Kõik rakendused“ → „%1$s“ → „Ära optimeeri“</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Akukasutuse optimeerimine pole eiratud. Et teavituste saatmine toimiks taustal, siis peaksid seda muutma. Palun klõpsi „Sobib“ ja vali „Kõik rakendused“ → „%1$s“ → „Ära optimeeri“</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Eira akukasutuse optimeerimist</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Eira akukasutuse optimeerimist</string>
|
||||||
<string name="nc_important_conversation">Oluline vestlus</string>
|
<string name="nc_important_conversation">Oluline vestlus</string>
|
||||||
<string name="nc_important_conversation_desc">Selle vestluse teavituste seadistused on ülemuslikud „Ära sega“ seadistuste suhtes</string>
|
<string name="nc_important_conversation_desc">„Ära sega“ olek on oluliste vestluste puhul eiratud</string>
|
||||||
<string name="nc_invalid_time">Vigane aeg</string>
|
<string name="nc_invalid_time">Vigane aeg</string>
|
||||||
<string name="nc_invitations">Kutsed</string>
|
<string name="nc_invitations">Kutsed</string>
|
||||||
<string name="nc_join_open_conversations">Liitu avalike vestlustega</string>
|
<string name="nc_join_open_conversations">Liitu avalike vestlustega</string>
|
||||||
@ -308,13 +309,17 @@
|
|||||||
<string name="nc_manual">Pole määratud</string>
|
<string name="nc_manual">Pole määratud</string>
|
||||||
<string name="nc_mark_as_read">Märgi loetuks</string>
|
<string name="nc_mark_as_read">Märgi loetuks</string>
|
||||||
<string name="nc_mark_as_unread">Märgi mitteloetuks</string>
|
<string name="nc_mark_as_unread">Märgi mitteloetuks</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Vestlus on märgitud oluliseks</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Vestlus on märgitud mittedelikaatseks</string>
|
||||||
|
<string name="nc_mark_conversation_as_sensitive">Vestlus on märgitud delikaatseks</string>
|
||||||
|
<string name="nc_mark_conversation_as_unimportant">Vestlus on märgitud mitteoluliseks</string>
|
||||||
<string name="nc_meeting_ended">Kohtumine on lõppenud</string>
|
<string name="nc_meeting_ended">Kohtumine on lõppenud</string>
|
||||||
<string name="nc_message_added_to_notes">Teade on lisatud märkmetesse</string>
|
<string name="nc_message_added_to_notes">Teade on lisatud märkmetesse</string>
|
||||||
<string name="nc_message_failed">Ebaõnnestus</string>
|
<string name="nc_message_failed">Ebaõnnestus</string>
|
||||||
<string name="nc_message_failed_to_send">Sõnumi saatmine ei õnnestunud:</string>
|
<string name="nc_message_failed_to_send">Sõnumi saatmine ei õnnestunud:</string>
|
||||||
<string name="nc_message_offline">Pole võrgus</string>
|
<string name="nc_message_offline">Pole võrgus</string>
|
||||||
<string name="nc_message_quote_cancel_reply">Katkesta vastamine</string>
|
<string name="nc_message_quote_cancel_reply">Katkesta vastamine</string>
|
||||||
<string name="nc_message_read">Sõnim on loetud</string>
|
<string name="nc_message_read">Sõnum on loetud</string>
|
||||||
<string name="nc_message_sending">Saatmisel</string>
|
<string name="nc_message_sending">Saatmisel</string>
|
||||||
<string name="nc_message_sent">Sõnum on saadetud</string>
|
<string name="nc_message_sent">Sõnum on saadetud</string>
|
||||||
<string name="nc_microphone_permission_hint">Et saaksid suhtlemisel kasutada heliedastust, palun luba rakendusel kasutada mikrofoni.</string>
|
<string name="nc_microphone_permission_hint">Et saaksid suhtlemisel kasutada heliedastust, palun luba rakendusel kasutada mikrofoni.</string>
|
||||||
@ -386,6 +391,7 @@
|
|||||||
<string name="nc_rename_confirm">Muuda nime</string>
|
<string name="nc_rename_confirm">Muuda nime</string>
|
||||||
<string name="nc_reply">Vasta</string>
|
<string name="nc_reply">Vasta</string>
|
||||||
<string name="nc_reply_privately">Vasta privaatselt</string>
|
<string name="nc_reply_privately">Vasta privaatselt</string>
|
||||||
|
<string name="nc_room_retention">Jututoa allesjätmine õnnestus</string>
|
||||||
<string name="nc_save_message">Salvesta</string>
|
<string name="nc_save_message">Salvesta</string>
|
||||||
<string name="nc_save_success">Salvestamine õnnestus</string>
|
<string name="nc_save_success">Salvestamine õnnestus</string>
|
||||||
<string name="nc_screen_lock_timeout_30">30 sekundit</string>
|
<string name="nc_screen_lock_timeout_30">30 sekundit</string>
|
||||||
@ -400,6 +406,8 @@
|
|||||||
<string name="nc_search">Otsi</string>
|
<string name="nc_search">Otsi</string>
|
||||||
<string name="nc_select_an_account">Otsi kasutajakontot</string>
|
<string name="nc_select_an_account">Otsi kasutajakontot</string>
|
||||||
<string name="nc_send_edit_message">Uuenda sõnumit</string>
|
<string name="nc_send_edit_message">Uuenda sõnumit</string>
|
||||||
|
<string name="nc_sensitive_conversation">Vestlus tundlikul teemal</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Sõnumite eelvaated saava vestluste loendis ja teavitustes olema peidetud</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s saatis gif-faili.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s saatis gif-faili.</string>
|
||||||
<string name="nc_sent_a_gif_you">Sina saatsid gif-faili.</string>
|
<string name="nc_sent_a_gif_you">Sina saatsid gif-faili.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s saatis video.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s saatis video.</string>
|
||||||
@ -535,6 +543,7 @@
|
|||||||
<string name="online_status">Võrgus staatus</string>
|
<string name="online_status">Võrgus staatus</string>
|
||||||
<string name="openConversations">Ava vestlused</string>
|
<string name="openConversations">Ava vestlused</string>
|
||||||
<string name="open_in_files_app">Ava failirakenduses</string>
|
<string name="open_in_files_app">Ava failirakenduses</string>
|
||||||
|
<string name="open_notes">Ava märkmik</string>
|
||||||
<string name="play_pause_voice_message">Esita häälsõnumit või peata esitus</string>
|
<string name="play_pause_voice_message">Esita häälsõnumit või peata esitus</string>
|
||||||
<string name="playback_speed_control">Taasesituse kiiruse juhtimine</string>
|
<string name="playback_speed_control">Taasesituse kiiruse juhtimine</string>
|
||||||
<string name="polls_add_option">Lisa valik</string>
|
<string name="polls_add_option">Lisa valik</string>
|
||||||
@ -672,6 +681,10 @@
|
|||||||
<item quantity="one">Vaata %d sarnast sõnumit</item>
|
<item quantity="one">Vaata %d sarnast sõnumit</item>
|
||||||
<item quantity="other">Vaata %d sarnast sõnumit</item>
|
<item quantity="other">Vaata %d sarnast sõnumit</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<plurals name="nc_conversation_auto_delete_info">
|
||||||
|
<item quantity="one">See vestlus kustub automaatselt kõigi osalejate jaoks, kui siin pole olnud tegevust %1$d päeva jooksul.</item>
|
||||||
|
<item quantity="other">See vestlus kustub automaatselt kõigi osalejate jaoks, kui siin pole olnud tegevust %1$d päeva jooksul.</item>
|
||||||
|
</plurals>
|
||||||
<plurals name="polls_amount_voters">
|
<plurals name="polls_amount_voters">
|
||||||
<item quantity="one">%d hääl</item>
|
<item quantity="one">%d hääl</item>
|
||||||
<item quantity="other">%d häält</item>
|
<item quantity="other">%d häält</item>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Aldatu</string>
|
<string name= "nc_edit">Aldatu</string>
|
||||||
|
<string name="add_participants">Gehitu</string>
|
||||||
<string name="add_to_notes">Gehitu oharretara</string>
|
<string name="add_to_notes">Gehitu oharretara</string>
|
||||||
<string name="added_to_favorites">%1$s elkarrizketa gogokoetara gehitu da</string>
|
<string name="added_to_favorites">%1$s elkarrizketa gogokoetara gehitu da</string>
|
||||||
<string name="appbar_search_in">Bilatu %s(e)n</string>
|
<string name="appbar_search_in">Bilatu %s(e)n</string>
|
||||||
@ -235,7 +236,6 @@
|
|||||||
<string name="nc_guest_access_share_link">Partekatu elkarrizketa esteka</string>
|
<string name="nc_guest_access_share_link">Partekatu elkarrizketa esteka</string>
|
||||||
<string name="nc_hint_enter_a_message">Idatzi mezu bat …</string>
|
<string name="nc_hint_enter_a_message">Idatzi mezu bat …</string>
|
||||||
<string name="nc_important_conversation">Elkarrizketa garrantzitsua</string>
|
<string name="nc_important_conversation">Elkarrizketa garrantzitsua</string>
|
||||||
<string name="nc_important_conversation_desc">Ez Molestatu ezarpenek sahiestuko dituzte elkarrizketa honen jakinarazpenak </string>
|
|
||||||
<string name="nc_invitations">Gonbidapenak</string>
|
<string name="nc_invitations">Gonbidapenak</string>
|
||||||
<string name="nc_join_open_conversations">Sartu elkarrizketa irekietara</string>
|
<string name="nc_join_open_conversations">Sartu elkarrizketa irekietara</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Moderatzaile berri bat sustatu behar duzu elkarrizketatik irten aurretik</string>
|
<string name="nc_last_moderator_leaving_room_warning">Moderatzaile berri bat sustatu behar duzu elkarrizketatik irten aurretik</string>
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
<string name="later_today">تا آخر وقت همین امروز</string>
|
<string name="later_today">تا آخر وقت همین امروز</string>
|
||||||
<string name="leave_call">Leave call</string>
|
<string name="leave_call">Leave call</string>
|
||||||
<string name="load_more_results">بار کردن نتیحههای بیشتر</string>
|
<string name="load_more_results">بار کردن نتیحههای بیشتر</string>
|
||||||
|
<string name="local_time">زمان محلی: %1$s</string>
|
||||||
<string name="lock_conversation">Lock conversation</string>
|
<string name="lock_conversation">Lock conversation</string>
|
||||||
<string name="lock_symbol">نماد قفل</string>
|
<string name="lock_symbol">نماد قفل</string>
|
||||||
<string name="mentioned">Mentioned</string>
|
<string name="mentioned">Mentioned</string>
|
||||||
@ -195,9 +196,11 @@
|
|||||||
<string name="nc_mark_as_unread">علامت به عنوان خواندهنشده</string>
|
<string name="nc_mark_as_unread">علامت به عنوان خواندهنشده</string>
|
||||||
<string name="nc_message_failed">Failed</string>
|
<string name="nc_message_failed">Failed</string>
|
||||||
<string name="nc_message_failed_to_send">ناتوانی در فرستادن پیام:</string>
|
<string name="nc_message_failed_to_send">ناتوانی در فرستادن پیام:</string>
|
||||||
|
<string name="nc_message_offline">آفلاین</string>
|
||||||
<string name="nc_message_quote_cancel_reply">لغو پاسخ</string>
|
<string name="nc_message_quote_cancel_reply">لغو پاسخ</string>
|
||||||
<string name="nc_message_read">پیام، خوانده شد</string>
|
<string name="nc_message_read">پیام، خوانده شد</string>
|
||||||
<string name="nc_message_sent">پیام، ارسال شد</string>
|
<string name="nc_message_sent">پیام، ارسال شد</string>
|
||||||
|
<string name="nc_missed_call">شما یک تماس از %s را از دست دادید</string>
|
||||||
<string name="nc_moderator">مدیر</string>
|
<string name="nc_moderator">مدیر</string>
|
||||||
<string name="nc_new_conversation">گفتگوی جدید</string>
|
<string name="nc_new_conversation">گفتگوی جدید</string>
|
||||||
<string name="nc_new_conversation_visibility">Visibility</string>
|
<string name="nc_new_conversation_visibility">Visibility</string>
|
||||||
@ -399,6 +402,7 @@
|
|||||||
<string name="translation_copy_translated_text">رونوشت متن ترجمه</string>
|
<string name="translation_copy_translated_text">رونوشت متن ترجمه</string>
|
||||||
<string name="translation_detect_language">تشخیص زبان</string>
|
<string name="translation_detect_language">تشخیص زبان</string>
|
||||||
<string name="translation_device_settings">تنظیمات افزاره</string>
|
<string name="translation_device_settings">تنظیمات افزاره</string>
|
||||||
|
<string name="translation_error_message">امکان تشخیص زبان وجود ندارد.</string>
|
||||||
<string name="translation_from">از</string>
|
<string name="translation_from">از</string>
|
||||||
<string name="translation_to">به</string>
|
<string name="translation_to">به</string>
|
||||||
<string name="user_avatar">آواتار کاربر</string>
|
<string name="user_avatar">آواتار کاربر</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Muokkaa</string>
|
<string name= "nc_edit">Muokkaa</string>
|
||||||
|
<string name="add_participants">Lisää</string>
|
||||||
<string name="appbar_search_in">Etsi kohteesta %s</string>
|
<string name="appbar_search_in">Etsi kohteesta %s</string>
|
||||||
<string name="archived">Arkistoitu</string>
|
<string name="archived">Arkistoitu</string>
|
||||||
<string name="audio_output_bluetooth">Bluetooth</string>
|
<string name="audio_output_bluetooth">Bluetooth</string>
|
||||||
@ -167,7 +168,6 @@
|
|||||||
<string name="nc_guest_access_share_link">Jaa keskustelulinkki</string>
|
<string name="nc_guest_access_share_link">Jaa keskustelulinkki</string>
|
||||||
<string name="nc_hint_enter_a_message">Kirjoita viesti…</string>
|
<string name="nc_hint_enter_a_message">Kirjoita viesti…</string>
|
||||||
<string name="nc_important_conversation">Tärkeä keskustelu</string>
|
<string name="nc_important_conversation">Tärkeä keskustelu</string>
|
||||||
<string name="nc_important_conversation_desc">Tämän keskustelun ilmoitukset eivät noudata Älä häiritse -asetuksia</string>
|
|
||||||
<string name="nc_invitations">Kutsut</string>
|
<string name="nc_invitations">Kutsut</string>
|
||||||
<string name="nc_join_open_conversations">Liity avoimiin keskusteluihin</string>
|
<string name="nc_join_open_conversations">Liity avoimiin keskusteluihin</string>
|
||||||
<string name="nc_last_modified">%1$s | Viimeksi muokattu: %2$s</string>
|
<string name="nc_last_modified">%1$s | Viimeksi muokattu: %2$s</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Modifier</string>
|
<string name= "nc_edit">Modifier</string>
|
||||||
|
<string name="add_participants">Ajouter</string>
|
||||||
<string name="add_to_notes">Ajouter à Notes</string>
|
<string name="add_to_notes">Ajouter à Notes</string>
|
||||||
<string name="added_to_favorites">La conversation %1$s a été ajoutée aux favoris</string>
|
<string name="added_to_favorites">La conversation %1$s a été ajoutée aux favoris</string>
|
||||||
<string name="appbar_search_in">Rechercher dans %s</string>
|
<string name="appbar_search_in">Rechercher dans %s</string>
|
||||||
@ -71,6 +72,7 @@
|
|||||||
<string name="leave_call">Quitter l\'appel</string>
|
<string name="leave_call">Quitter l\'appel</string>
|
||||||
<string name="left_conversation">Vous avez quitté la conversation %1$s</string>
|
<string name="left_conversation">Vous avez quitté la conversation %1$s</string>
|
||||||
<string name="load_more_results">Charger plus de résultats</string>
|
<string name="load_more_results">Charger plus de résultats</string>
|
||||||
|
<string name="local_time">Heure locale : %1$s</string>
|
||||||
<string name="lock_conversation">Verrouiller la conversation</string>
|
<string name="lock_conversation">Verrouiller la conversation</string>
|
||||||
<string name="lock_symbol">Symbole de verrouillage</string>
|
<string name="lock_symbol">Symbole de verrouillage</string>
|
||||||
<string name="lower_hand">Baisser la main</string>
|
<string name="lower_hand">Baisser la main</string>
|
||||||
@ -177,6 +179,7 @@
|
|||||||
<string name="nc_delete_conversation_more">Si vous supprimez la conversation, elle sera supprimée pour tous les participants.</string>
|
<string name="nc_delete_conversation_more">Si vous supprimez la conversation, elle sera supprimée pour tous les participants.</string>
|
||||||
<string name="nc_delete_message">Supprimer</string>
|
<string name="nc_delete_message">Supprimer</string>
|
||||||
<string name="nc_delete_message_leaked_to_matterbridge">Message supprimé avec succès, mais il pourrait avoir été divulgué à d’autres services</string>
|
<string name="nc_delete_message_leaked_to_matterbridge">Message supprimé avec succès, mais il pourrait avoir été divulgué à d’autres services</string>
|
||||||
|
<string name="nc_delete_now">Supprimer maintenant</string>
|
||||||
<string name="nc_deleted_user">L\'utilisateur %1$s a été supprimé</string>
|
<string name="nc_deleted_user">L\'utilisateur %1$s a été supprimé</string>
|
||||||
<string name="nc_demote">Destituer de modérateur</string>
|
<string name="nc_demote">Destituer de modérateur</string>
|
||||||
<string name="nc_description_record_voice">Enregistrer un message vocal</string>
|
<string name="nc_description_record_voice">Enregistrer un message vocal</string>
|
||||||
@ -282,7 +285,7 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">L\'optimisation de la batterie n\'est pas ignorée. Ceci devrait être modifié pour vous assurer que les notifications fonctionnent en arrière-plan. Merci de cliquer OK et sélectionner \"Toutes les applications\" -> %1$s -> Ne pas optimiser</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">L\'optimisation de la batterie n\'est pas ignorée. Ceci devrait être modifié pour vous assurer que les notifications fonctionnent en arrière-plan. Merci de cliquer OK et sélectionner \"Toutes les applications\" -> %1$s -> Ne pas optimiser</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorer l\'optimisation de batterie</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorer l\'optimisation de batterie</string>
|
||||||
<string name="nc_important_conversation">Conversation importante</string>
|
<string name="nc_important_conversation">Conversation importante</string>
|
||||||
<string name="nc_important_conversation_desc">Les notifications dans cette conversation l\'emportent sur les paramètres « Ne Pas Déranger ».</string>
|
<string name="nc_important_conversation_desc">Le statut utilisateur \"Ne pas déranger\" est ignoré pour les conversations importantes.</string>
|
||||||
<string name="nc_invalid_time">Heure invalide</string>
|
<string name="nc_invalid_time">Heure invalide</string>
|
||||||
<string name="nc_invitations">Invitations</string>
|
<string name="nc_invitations">Invitations</string>
|
||||||
<string name="nc_join_open_conversations">Rejoindre des conversations ouvertes</string>
|
<string name="nc_join_open_conversations">Rejoindre des conversations ouvertes</string>
|
||||||
@ -398,6 +401,8 @@
|
|||||||
<string name="nc_search">Recherche</string>
|
<string name="nc_search">Recherche</string>
|
||||||
<string name="nc_select_an_account">Choisissez un compte</string>
|
<string name="nc_select_an_account">Choisissez un compte</string>
|
||||||
<string name="nc_send_edit_message">Message de mise à jour</string>
|
<string name="nc_send_edit_message">Message de mise à jour</string>
|
||||||
|
<string name="nc_sensitive_conversation">Conversation sensible</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">La prévisualisation des messages sera désactivée dans la liste des conversations et les notifiactions</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s a envoyé un GIF.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s a envoyé un GIF.</string>
|
||||||
<string name="nc_sent_a_gif_you">Vous avez envoyé un GIF.</string>
|
<string name="nc_sent_a_gif_you">Vous avez envoyé un GIF.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s a envoyé une vidéo.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s a envoyé une vidéo.</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Cuir in eagar</string>
|
<string name= "nc_edit">Cuir in eagar</string>
|
||||||
|
<string name="add_participants">Cuir</string>
|
||||||
<string name="add_to_notes">Cuir le Nótaí</string>
|
<string name="add_to_notes">Cuir le Nótaí</string>
|
||||||
<string name="added_to_favorites">Cuireadh comhrá %1$s le ceanáin</string>
|
<string name="added_to_favorites">Cuireadh comhrá %1$s le ceanáin</string>
|
||||||
<string name="appbar_search_in">Cuardaigh i %s</string>
|
<string name="appbar_search_in">Cuardaigh i %s</string>
|
||||||
@ -71,6 +72,7 @@
|
|||||||
<string name="leave_call">Fág glaoch</string>
|
<string name="leave_call">Fág glaoch</string>
|
||||||
<string name="left_conversation">D\'fhág tú an comhrá %1$s</string>
|
<string name="left_conversation">D\'fhág tú an comhrá %1$s</string>
|
||||||
<string name="load_more_results">Íoslódáil níos mó torthaí</string>
|
<string name="load_more_results">Íoslódáil níos mó torthaí</string>
|
||||||
|
<string name="local_time">Am áitiúil: %1$s</string>
|
||||||
<string name="lock_conversation">Cuir glas ar an gcomhrá</string>
|
<string name="lock_conversation">Cuir glas ar an gcomhrá</string>
|
||||||
<string name="lock_symbol">Siombail ghlais</string>
|
<string name="lock_symbol">Siombail ghlais</string>
|
||||||
<string name="lower_hand">Lámh íochtair</string>
|
<string name="lower_hand">Lámh íochtair</string>
|
||||||
@ -283,7 +285,7 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Ní thugtar aird ar bharrfheabhsú ceallraí. Ba cheart é seo a athrú chun a chinntiú go n-oibríonn fógraí sa chúlra! Cliceáil OK agus roghnaigh \"Gach aip\" -> %1$s -> Ná optamaigh le do thoil</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Ní thugtar aird ar bharrfheabhsú ceallraí. Ba cheart é seo a athrú chun a chinntiú go n-oibríonn fógraí sa chúlra! Cliceáil OK agus roghnaigh \"Gach aip\" -> %1$s -> Ná optamaigh le do thoil</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Déan neamhaird de bharrfheabhsú ceallraí</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Déan neamhaird de bharrfheabhsú ceallraí</string>
|
||||||
<string name="nc_important_conversation">Comhrá tábhachtach</string>
|
<string name="nc_important_conversation">Comhrá tábhachtach</string>
|
||||||
<string name="nc_important_conversation_desc">Sáróidh fógraí sa chomhrá seo na socruithe Ná Cuir Isteach</string>
|
<string name="nc_important_conversation_desc">Déantar neamhaird ar stádas an úsáideora \"Ná cuir isteach\" i gcás comhráite tábhachtacha</string>
|
||||||
<string name="nc_invalid_time">Am neamhbhailí</string>
|
<string name="nc_invalid_time">Am neamhbhailí</string>
|
||||||
<string name="nc_invitations">cuirí</string>
|
<string name="nc_invitations">cuirí</string>
|
||||||
<string name="nc_join_open_conversations">Glac páirt i gcomhráite oscailte</string>
|
<string name="nc_join_open_conversations">Glac páirt i gcomhráite oscailte</string>
|
||||||
@ -307,6 +309,10 @@
|
|||||||
<string name="nc_manual">Gan socraithe</string>
|
<string name="nc_manual">Gan socraithe</string>
|
||||||
<string name="nc_mark_as_read">Marcáil mar léite</string>
|
<string name="nc_mark_as_read">Marcáil mar léite</string>
|
||||||
<string name="nc_mark_as_unread">Marcáil mar neamhléite</string>
|
<string name="nc_mark_as_unread">Marcáil mar neamhléite</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Comhrá marcáilte mar thábhachtach</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Dímharcáladh an comhrá mar chomhrá íogair</string>
|
||||||
|
<string name="nc_mark_conversation_as_sensitive">Comhrá marcáilte mar íogair</string>
|
||||||
|
<string name="nc_mark_conversation_as_unimportant">Dímharcáladh an comhrá mar chomhrá tábhachtach</string>
|
||||||
<string name="nc_meeting_ended">Deireadh leis an gcruinniú</string>
|
<string name="nc_meeting_ended">Deireadh leis an gcruinniú</string>
|
||||||
<string name="nc_message_added_to_notes">Teachtaireacht curtha leis na nótaí</string>
|
<string name="nc_message_added_to_notes">Teachtaireacht curtha leis na nótaí</string>
|
||||||
<string name="nc_message_failed">Theip</string>
|
<string name="nc_message_failed">Theip</string>
|
||||||
@ -385,6 +391,7 @@
|
|||||||
<string name="nc_rename_confirm">Athainmnigh</string>
|
<string name="nc_rename_confirm">Athainmnigh</string>
|
||||||
<string name="nc_reply">Freagra</string>
|
<string name="nc_reply">Freagra</string>
|
||||||
<string name="nc_reply_privately">Freagair go príobháideach</string>
|
<string name="nc_reply_privately">Freagair go príobháideach</string>
|
||||||
|
<string name="nc_room_retention">Coinníodh an seomra go rathúil</string>
|
||||||
<string name="nc_save_message">Sábháil</string>
|
<string name="nc_save_message">Sábháil</string>
|
||||||
<string name="nc_save_success">Sábháilte go rathúil</string>
|
<string name="nc_save_success">Sábháilte go rathúil</string>
|
||||||
<string name="nc_screen_lock_timeout_30">30 soicind</string>
|
<string name="nc_screen_lock_timeout_30">30 soicind</string>
|
||||||
@ -399,6 +406,8 @@
|
|||||||
<string name="nc_search">Cuardach</string>
|
<string name="nc_search">Cuardach</string>
|
||||||
<string name="nc_select_an_account">Roghnaigh cuntas</string>
|
<string name="nc_select_an_account">Roghnaigh cuntas</string>
|
||||||
<string name="nc_send_edit_message">Nuashonraigh teachtaireacht</string>
|
<string name="nc_send_edit_message">Nuashonraigh teachtaireacht</string>
|
||||||
|
<string name="nc_sensitive_conversation">Comhrá íogair</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Díchumasófar réamhamharc teachtaireachta sa liosta comhráite agus sna fógraí</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">Sheol %1$s GIF.</string>
|
<string name="nc_sent_a_gif" formatted="true">Sheol %1$s GIF.</string>
|
||||||
<string name="nc_sent_a_gif_you">Sheol tú GIF.</string>
|
<string name="nc_sent_a_gif_you">Sheol tú GIF.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">Sheol %1$s físeán.</string>
|
<string name="nc_sent_a_video" formatted="true">Sheol %1$s físeán.</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Editar</string>
|
<string name= "nc_edit">Editar</string>
|
||||||
|
<string name="add_participants">Engadir</string>
|
||||||
<string name="add_to_notes">Engadir a Notas</string>
|
<string name="add_to_notes">Engadir a Notas</string>
|
||||||
<string name="added_to_favorites">Engadiuse a conversa %1$s aos favoritos</string>
|
<string name="added_to_favorites">Engadiuse a conversa %1$s aos favoritos</string>
|
||||||
<string name="appbar_search_in">Buscar en %s</string>
|
<string name="appbar_search_in">Buscar en %s</string>
|
||||||
@ -274,7 +275,6 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Non se ignora a optimización da batería. Isto debería cambiarse para asegurarse de que as notificacións funcionan en segundo plano. Prema en Aceptar e seleccione «Todas as aplicacións» → %1$s → Non optimizar</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Non se ignora a optimización da batería. Isto debería cambiarse para asegurarse de que as notificacións funcionan en segundo plano. Prema en Aceptar e seleccione «Todas as aplicacións» → %1$s → Non optimizar</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorar a optimización da batería</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorar a optimización da batería</string>
|
||||||
<string name="nc_important_conversation">Conversa importante</string>
|
<string name="nc_important_conversation">Conversa importante</string>
|
||||||
<string name="nc_important_conversation_desc">As notificacións nesta conversa anularán os axustes de «Non molestar»</string>
|
|
||||||
<string name="nc_invitations">Convites</string>
|
<string name="nc_invitations">Convites</string>
|
||||||
<string name="nc_join_open_conversations">Unirse a conversas abertas</string>
|
<string name="nc_join_open_conversations">Unirse a conversas abertas</string>
|
||||||
<string name="nc_keep">Manter</string>
|
<string name="nc_keep">Manter</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Uredi</string>
|
<string name= "nc_edit">Uredi</string>
|
||||||
|
<string name="add_participants">Dodaj</string>
|
||||||
<string name="appbar_search_in">Traži u %s</string>
|
<string name="appbar_search_in">Traži u %s</string>
|
||||||
<string name="archived">Arhivirano</string>
|
<string name="archived">Arhivirano</string>
|
||||||
<string name="audio_output_phone">Telefon</string>
|
<string name="audio_output_phone">Telefon</string>
|
||||||
@ -158,7 +159,6 @@
|
|||||||
<string name="nc_guest_access_share_link">Dijeli poveznicu za razgovor</string>
|
<string name="nc_guest_access_share_link">Dijeli poveznicu za razgovor</string>
|
||||||
<string name="nc_hint_enter_a_message">Unesi poruku …</string>
|
<string name="nc_hint_enter_a_message">Unesi poruku …</string>
|
||||||
<string name="nc_important_conversation">Važan razgovor</string>
|
<string name="nc_important_conversation">Važan razgovor</string>
|
||||||
<string name="nc_important_conversation_desc">Obavijesti u okviru ovog razgovora prikazuju se neovisno o postavkama Ne uznemiravaj</string>
|
|
||||||
<string name="nc_invitations">Pozivnice</string>
|
<string name="nc_invitations">Pozivnice</string>
|
||||||
<string name="nc_last_modified">%1$s | Posljednja izmjena: %2$s</string>
|
<string name="nc_last_modified">%1$s | Posljednja izmjena: %2$s</string>
|
||||||
<string name="nc_leave">Napusti razgovor</string>
|
<string name="nc_leave">Napusti razgovor</string>
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Szerkesztés</string>
|
<string name= "nc_edit">Szerkesztés</string>
|
||||||
|
<string name="add_participants">Hozzáadás</string>
|
||||||
|
<string name="add_to_notes">Hozzáadás a jegyzetekhez</string>
|
||||||
<string name="added_to_favorites">A(z) %1$s beszélgetés hozzáadva a kedvencekhez</string>
|
<string name="added_to_favorites">A(z) %1$s beszélgetés hozzáadva a kedvencekhez</string>
|
||||||
<string name="appbar_search_in">Keresés itt: %s</string>
|
<string name="appbar_search_in">Keresés itt: %s</string>
|
||||||
|
<string name="archive_conversation">Beszélgetés archiválása</string>
|
||||||
|
<string name="archive_hint">Ha archivál egy beszélgetést, akkor alapértelmezetten el lesz rejtve. Válassza az „Archiválva” szűrőt az archivált beszélgetések megtekintéséhez. A közvetlen említéseket továbbra is meg fogja kapni.</string>
|
||||||
<string name="archived">Archiválva</string>
|
<string name="archived">Archiválva</string>
|
||||||
|
<string name="archived_conversation">Archiválva: %1$s</string>
|
||||||
|
<string name="audio_call">Hanghívás</string>
|
||||||
<string name="audio_output_bluetooth">Bluetooth</string>
|
<string name="audio_output_bluetooth">Bluetooth</string>
|
||||||
<string name="audio_output_dialog_headline">Hangkimenet</string>
|
<string name="audio_output_dialog_headline">Hangkimenet</string>
|
||||||
<string name="audio_output_phone">Telefon</string>
|
<string name="audio_output_phone">Telefon</string>
|
||||||
@ -12,6 +18,10 @@
|
|||||||
<string name="automatic_status_set">Az állapota automatikusan lett beállítva</string>
|
<string name="automatic_status_set">Az állapota automatikusan lett beállítva</string>
|
||||||
<string name="avatar">Profilkép</string>
|
<string name="avatar">Profilkép</string>
|
||||||
<string name="away">Távol</string>
|
<string name="away">Távol</string>
|
||||||
|
<string name="back_button">Vissza gomb</string>
|
||||||
|
<string name="ban">Tiltás</string>
|
||||||
|
<string name="ban_participant">Résztvevő letiltása</string>
|
||||||
|
<string name="bans_list">Tiltólista</string>
|
||||||
<string name="calendar">Naptár</string>
|
<string name="calendar">Naptár</string>
|
||||||
<string name="call_more_actions_dialog_headline">Speciális hívásbeállítások</string>
|
<string name="call_more_actions_dialog_headline">Speciális hívásbeállítások</string>
|
||||||
<string name="call_running_since_one_hour">A hívás egy órája tart.</string>
|
<string name="call_running_since_one_hour">A hívás egy órája tart.</string>
|
||||||
@ -23,33 +33,46 @@
|
|||||||
<string name="close">Bezárás</string>
|
<string name="close">Bezárás</string>
|
||||||
<string name="close_icon">Bezárás ikon</string>
|
<string name="close_icon">Bezárás ikon</string>
|
||||||
<string name="connection_established">A kapcsolat létrejött</string>
|
<string name="connection_established">A kapcsolat létrejött</string>
|
||||||
|
<string name="connection_lost">Nincs kapcsolat a kiszolgálóval</string>
|
||||||
|
<string name="connection_lost_sent_messages_are_queued">A kapcsolat elveszett – Elküldött üzenetek sorba állítva</string>
|
||||||
<string name="continuous_voice_message_recording">Felvétel zárolása a hangüzenet folyamatos rögzítéséhez</string>
|
<string name="continuous_voice_message_recording">Felvétel zárolása a hangüzenet folyamatos rögzítéséhez</string>
|
||||||
|
<string name="conversation_archived">A beszélgetés archiválva van</string>
|
||||||
|
<string name="conversation_is_read_only">A beszélgetés csak olvasható</string>
|
||||||
|
<string name="conversation_read_only_failed">Nem sikerült csak olvashatóvá állítani a beszélgetést</string>
|
||||||
<string name="conversations">Beszélgetések</string>
|
<string name="conversations">Beszélgetések</string>
|
||||||
<string name="create_conversation">Beszélgetés létrehozása</string>
|
<string name="create_conversation">Beszélgetés létrehozása</string>
|
||||||
<string name="create_issue">Hibajegy létrehozása</string>
|
<string name="create_issue">Hibajegy létrehozása</string>
|
||||||
<string name="custom">Egyéni</string>
|
<string name="custom">Egyéni</string>
|
||||||
<string name="danger_zone">Veszélyes területet</string>
|
<string name="danger_zone">Veszélyes területet</string>
|
||||||
|
<string name="deck_card_description">%1$s itt: %2$s</string>
|
||||||
<string name="delete_avatar">Profilkép törlése</string>
|
<string name="delete_avatar">Profilkép törlése</string>
|
||||||
<string name="deleted_conversation">%1$s beszélgetés törlése</string>
|
<string name="deleted_conversation">%1$s beszélgetés törlése</string>
|
||||||
<string name="dnd">Ne zavarjanak</string>
|
<string name="dnd">Ne zavarjanak</string>
|
||||||
<string name="dontClear">Ne törölje</string>
|
<string name="dontClear">Ne törölje</string>
|
||||||
<string name="edit">Szerkesztés</string>
|
<string name="edit">Szerkesztés</string>
|
||||||
|
<string name="edit_error_24_hours_old_message">A 24 óránál régebbi beszélgetések nem szerkeszthetőek</string>
|
||||||
<string name="edit_message_icon_description">Üzenet szerkesztése</string>
|
<string name="edit_message_icon_description">Üzenet szerkesztése</string>
|
||||||
<string name="emoji_category_recent">Legutóbbiak</string>
|
<string name="emoji_category_recent">Legutóbbiak</string>
|
||||||
<string name="encrypted">Titkosított</string>
|
<string name="encrypted">Titkosított</string>
|
||||||
<string name="end_call_for_everyone">Hívás befejezése mindenki számára</string>
|
<string name="end_call_for_everyone">Hívás befejezése mindenki számára</string>
|
||||||
<string name="error_loading_chats">Hiba történt a csevegések betöltése során</string>
|
<string name="error_loading_chats">Hiba történt a csevegések betöltése során</string>
|
||||||
|
<string name="error_unbanning">Hiba történt a résztvevő tiltásának visszavonása során</string>
|
||||||
<string name="failed_to_save">Sikertelen mentés: %1$s</string>
|
<string name="failed_to_save">Sikertelen mentés: %1$s</string>
|
||||||
<string name="file_list_folder">mappa</string>
|
<string name="file_list_folder">mappa</string>
|
||||||
<string name="file_list_loading">Betöltés…</string>
|
<string name="file_list_loading">Betöltés…</string>
|
||||||
<string name="filename_progress">%1$s (%2$d)</string>
|
<string name="filename_progress">%1$s (%2$d)</string>
|
||||||
<string name="fourHours">4 óra </string>
|
<string name="fourHours">4 óra </string>
|
||||||
|
<string name="get_invitations_error">A függőben lévő meghívások lekérése sikertelen</string>
|
||||||
|
<string name="hint_edited_message">(szerkesztve)</string>
|
||||||
<string name="internal_note">Belső jegyzet</string>
|
<string name="internal_note">Belső jegyzet</string>
|
||||||
<string name="invisible">Láthatatlan</string>
|
<string name="invisible">Láthatatlan</string>
|
||||||
|
<string name="languages_error_message">A nyelveket nem lehet lekérni</string>
|
||||||
|
<string name="languages_error_title">Lekérés sikertelen</string>
|
||||||
<string name="later_today">Mai nap később</string>
|
<string name="later_today">Mai nap később</string>
|
||||||
<string name="leave_call">Hívás elhagyása</string>
|
<string name="leave_call">Hívás elhagyása</string>
|
||||||
<string name="left_conversation">Elhagyta a következő beszélgetést: %1$s</string>
|
<string name="left_conversation">Elhagyta a következő beszélgetést: %1$s</string>
|
||||||
<string name="load_more_results">További találatok betöltése</string>
|
<string name="load_more_results">További találatok betöltése</string>
|
||||||
|
<string name="local_time">Helyi idő: %1$s</string>
|
||||||
<string name="lock_conversation">Beszélgetés zárolása</string>
|
<string name="lock_conversation">Beszélgetés zárolása</string>
|
||||||
<string name="lock_symbol">Zár szimbólum</string>
|
<string name="lock_symbol">Zár szimbólum</string>
|
||||||
<string name="lower_hand">Kéz letétele</string>
|
<string name="lower_hand">Kéz letétele</string>
|
||||||
@ -62,7 +85,9 @@
|
|||||||
<string name="menu_item_sort_by_name_z_a">Z – A</string>
|
<string name="menu_item_sort_by_name_z_a">Z – A</string>
|
||||||
<string name="menu_item_sort_by_size_biggest_first">Legnagyobb elöl</string>
|
<string name="menu_item_sort_by_size_biggest_first">Legnagyobb elöl</string>
|
||||||
<string name="menu_item_sort_by_size_smallest_first">Legkisebb elöl</string>
|
<string name="menu_item_sort_by_size_smallest_first">Legkisebb elöl</string>
|
||||||
|
<string name="message_copied">Üzenet másolva</string>
|
||||||
<string name="message_deleted_by_you">Törölte az üzenetet</string>
|
<string name="message_deleted_by_you">Törölte az üzenetet</string>
|
||||||
|
<string name="message_last_edited_by">Szerkesztette: %1$s</string>
|
||||||
<string name="message_poll_tap_to_open">Koppintson a szavazás megnyitásához</string>
|
<string name="message_poll_tap_to_open">Koppintson a szavazás megnyitásához</string>
|
||||||
<string name="message_search_begin_empty">Nincs találat</string>
|
<string name="message_search_begin_empty">Nincs találat</string>
|
||||||
<string name="message_search_begin_typing">Kezdjen el gépelni a kereséshez…</string>
|
<string name="message_search_begin_typing">Kezdjen el gépelni a kereséshez…</string>
|
||||||
@ -82,6 +107,7 @@
|
|||||||
<string name="nc_all_ok_operation">Rendben, minden kész!</string>
|
<string name="nc_all_ok_operation">Rendben, minden kész!</string>
|
||||||
<string name="nc_attendee_pin">PIN: %1$s</string>
|
<string name="nc_attendee_pin">PIN: %1$s</string>
|
||||||
<string name="nc_biometric_unlock">%1$s feloldása</string>
|
<string name="nc_biometric_unlock">%1$s feloldása</string>
|
||||||
|
<string name="nc_bluetooth_permission_hint">A bluetooth-os hangszórók engedélyezéséhez adja meg a „Közeli eszközök” engedélyt.</string>
|
||||||
<string name="nc_call_button_content_description_answer_video_call">Válasz videóhívásként</string>
|
<string name="nc_call_button_content_description_answer_video_call">Válasz videóhívásként</string>
|
||||||
<string name="nc_call_button_content_description_answer_voice_only">Válasz csak hanghívásként</string>
|
<string name="nc_call_button_content_description_answer_voice_only">Válasz csak hanghívásként</string>
|
||||||
<string name="nc_call_button_content_description_audio_output">Hangkimenet módosítása</string>
|
<string name="nc_call_button_content_description_audio_output">Hangkimenet módosítása</string>
|
||||||
@ -101,11 +127,12 @@
|
|||||||
<string name="nc_call_state_with_video">%1$s videóval</string>
|
<string name="nc_call_state_with_video">%1$s videóval</string>
|
||||||
<string name="nc_call_timeout">Nincs válasz 45 másodpercen belül, koppintson az újrapróbálkozáshoz</string>
|
<string name="nc_call_timeout">Nincs válasz 45 másodpercen belül, koppintson az újrapróbálkozáshoz</string>
|
||||||
<string name="nc_call_unknown">%s hívás</string>
|
<string name="nc_call_unknown">%s hívás</string>
|
||||||
<string name="nc_call_video">%s videohívás</string>
|
<string name="nc_call_video">%s videóhívás</string>
|
||||||
<string name="nc_call_voice">%s hanghívás</string>
|
<string name="nc_call_voice">%s hanghívás</string>
|
||||||
<string name="nc_camera_permission_hint">A videohívás engedélyezéséhez meg kell adnia a „Kamera” engedélyt.</string>
|
<string name="nc_camera_permission_hint">A videóhívás engedélyezéséhez adja meg a „Kamera” engedélyt.</string>
|
||||||
<string name="nc_cancel">Mégse</string>
|
<string name="nc_cancel">Mégse</string>
|
||||||
<string name="nc_capabilities_failed">A lehetőségek lekérdezése sikertelen, megszakítás</string>
|
<string name="nc_capabilities_failed">A lehetőségek lekérdezése sikertelen, megszakítás</string>
|
||||||
|
<string name="nc_caption">Felirat</string>
|
||||||
<string name="nc_certificate_dialog_text">Megbízik a(z) %1$s által a(z) %2$s részére kiállított, %3$s és %4$s között érvényes, korábban ismeretlen SSL tanúsítványban?</string>
|
<string name="nc_certificate_dialog_text">Megbízik a(z) %1$s által a(z) %2$s részére kiállított, %3$s és %4$s között érvényes, korábban ismeretlen SSL tanúsítványban?</string>
|
||||||
<string name="nc_certificate_dialog_title">Ellenőrizze a tanúsítványt</string>
|
<string name="nc_certificate_dialog_title">Ellenőrizze a tanúsítványt</string>
|
||||||
<string name="nc_certificate_error">Az SSL beállítás megakadályozta a kapcsolódást</string>
|
<string name="nc_certificate_error">Az SSL beállítás megakadályozta a kapcsolódást</string>
|
||||||
@ -134,14 +161,16 @@
|
|||||||
<string name="nc_contacts_done">Kész</string>
|
<string name="nc_contacts_done">Kész</string>
|
||||||
<string name="nc_conversation_description">Beszélgetés leírása</string>
|
<string name="nc_conversation_description">Beszélgetés leírása</string>
|
||||||
<string name="nc_conversation_menu_conversation_info">Beszélgetés információk</string>
|
<string name="nc_conversation_menu_conversation_info">Beszélgetés információk</string>
|
||||||
<string name="nc_conversation_menu_video_call">Videohívás</string>
|
<string name="nc_conversation_menu_video_call">Videóhívás</string>
|
||||||
<string name="nc_conversation_menu_voice_call">Hanghívás</string>
|
<string name="nc_conversation_menu_voice_call">Hanghívás</string>
|
||||||
|
<string name="nc_conversation_not_found">Beszélgetés nem található</string>
|
||||||
<string name="nc_conversation_settings">Beszélgetésbeállítások</string>
|
<string name="nc_conversation_settings">Beszélgetésbeállítások</string>
|
||||||
<string name="nc_conversations_empty">Csatlakozzon egy beszélgetéshez, vagy indítson egy újat</string>
|
<string name="nc_conversations_empty">Csatlakozzon egy beszélgetéshez, vagy indítson egy újat</string>
|
||||||
<string name="nc_conversations_empty_details">Üdvözölje a barátait és munkatársait!</string>
|
<string name="nc_conversations_empty_details">Üdvözölje a barátait és munkatársait!</string>
|
||||||
<string name="nc_copy_message">Másolás</string>
|
<string name="nc_copy_message">Másolás</string>
|
||||||
<string name="nc_create_new_conversation">Új beszélgetés létrehozása</string>
|
<string name="nc_create_new_conversation">Új beszélgetés létrehozása</string>
|
||||||
<string name="nc_create_poll">Szavazás létrehozása</string>
|
<string name="nc_create_poll">Szavazás létrehozása</string>
|
||||||
|
<string name="nc_current_user">Ön:</string>
|
||||||
<string name="nc_date_header_today">Ma</string>
|
<string name="nc_date_header_today">Ma</string>
|
||||||
<string name="nc_date_header_yesterday">Tegnap</string>
|
<string name="nc_date_header_yesterday">Tegnap</string>
|
||||||
<string name="nc_delete">Törlés</string>
|
<string name="nc_delete">Törlés</string>
|
||||||
@ -150,19 +179,38 @@
|
|||||||
<string name="nc_delete_conversation_more">Ha törli a beszélgetést, akkor az összes többi résztvevő számára is törölve lesz.</string>
|
<string name="nc_delete_conversation_more">Ha törli a beszélgetést, akkor az összes többi résztvevő számára is törölve lesz.</string>
|
||||||
<string name="nc_delete_message">Törlés</string>
|
<string name="nc_delete_message">Törlés</string>
|
||||||
<string name="nc_delete_message_leaked_to_matterbridge">Az üzenet törlése sikeresen megtörtént, de lehet, hogy az már megjelent más szolgáltatásokon</string>
|
<string name="nc_delete_message_leaked_to_matterbridge">Az üzenet törlése sikeresen megtörtént, de lehet, hogy az már megjelent más szolgáltatásokon</string>
|
||||||
|
<string name="nc_delete_now">Törlés most</string>
|
||||||
|
<string name="nc_deleted_user">%1$s felhasználó el lett távolítva</string>
|
||||||
<string name="nc_demote">Lefokozás moderátorról</string>
|
<string name="nc_demote">Lefokozás moderátorról</string>
|
||||||
<string name="nc_description_record_voice">Hangüzenet felvétele</string>
|
<string name="nc_description_record_voice">Hangüzenet felvétele</string>
|
||||||
<string name="nc_description_send_message_button">Üzenet küldése</string>
|
<string name="nc_description_send_message_button">Üzenet küldése</string>
|
||||||
<string name="nc_diagnose_account_category_title">Jelenlegi fiók</string>
|
<string name="nc_diagnose_account_category_title">Jelenlegi fiók</string>
|
||||||
<string name="nc_diagnose_account_server">Kiszolgáló</string>
|
<string name="nc_diagnose_account_server">Kiszolgáló</string>
|
||||||
|
<string name="nc_diagnose_account_server_notification_app">A kiszolgálóértesítések alkalmazása telepítve van?</string>
|
||||||
<string name="nc_diagnose_account_user_name">Felhasználó</string>
|
<string name="nc_diagnose_account_user_name">Felhasználó</string>
|
||||||
|
<string name="nc_diagnose_account_user_status_enabled">A felhasználói állapot engedélyezett?</string>
|
||||||
<string name="nc_diagnose_android_version_title">Android verzió</string>
|
<string name="nc_diagnose_android_version_title">Android verzió</string>
|
||||||
<string name="nc_diagnose_app_category_title">Alkalmazás</string>
|
<string name="nc_diagnose_app_category_title">Alkalmazás</string>
|
||||||
<string name="nc_diagnose_app_name_title">Alkalmazásnév</string>
|
<string name="nc_diagnose_app_name_title">Alkalmazásnév</string>
|
||||||
<string name="nc_diagnose_app_users_amount">Regisztrált felhasználók</string>
|
<string name="nc_diagnose_app_users_amount">Regisztrált felhasználók</string>
|
||||||
|
<string name="nc_diagnose_app_version_title">Alkalmazásverzió</string>
|
||||||
|
<string name="nc_diagnose_battery_optimization_ignored">Az akkumulátoroptimalizálás figyelmen kívül hagyva, minden rendben</string>
|
||||||
|
<string name="nc_diagnose_battery_optimization_not_ignored">Az akkumulátoroptimalizálás engedélyezve van, amely problémákat okozhat. Ajánlatos letiltani az akkumulátoroptimalizálást.</string>
|
||||||
<string name="nc_diagnose_battery_optimization_title">Akkumulátorbeállítások</string>
|
<string name="nc_diagnose_battery_optimization_title">Akkumulátorbeállítások</string>
|
||||||
<string name="nc_diagnose_device_name_title">Eszköz</string>
|
<string name="nc_diagnose_device_name_title">Eszköz</string>
|
||||||
|
<string name="nc_diagnose_dialog_open_checklist">Hibaelhárítási ellenőrzőlista megnyitása</string>
|
||||||
|
<string name="nc_diagnose_dialog_open_diagnose">Diagnosztikai képernyő megnyitása</string>
|
||||||
|
<string name="nc_diagnose_dialog_open_dontkillmyapp_website">A dontkillmyapp.com megnyitása</string>
|
||||||
|
<string name="nc_diagnose_gplay_available_title">Google Play szolgáltatások</string>
|
||||||
|
<string name="nc_diagnose_gplay_available_yes">A Google Play szolgáltatások elérhetőek</string>
|
||||||
|
<string name="nc_diagnose_meta_category_title">Metainformációk</string>
|
||||||
|
<string name="nc_diagnose_meta_system_report_date">Rendszerjelentés előállítása</string>
|
||||||
|
<string name="nc_diagnose_notification_calls_channel_permission">Engedélyezve van a hívások értesítési csatornája?</string>
|
||||||
|
<string name="nc_diagnose_notification_messages_channel_permission">Engedélyezve van az üzenetek értesítési csatornája?</string>
|
||||||
|
<string name="nc_diagnose_notification_permission">Értesítési engedély</string>
|
||||||
<string name="nc_diagnose_phone_category_title">Telefon</string>
|
<string name="nc_diagnose_phone_category_title">Telefon</string>
|
||||||
|
<string name="nc_diagnose_server_talk_version">Kiszolgáló Beszélgetés verziója</string>
|
||||||
|
<string name="nc_diagnose_server_version">Kiszolgáló verziója</string>
|
||||||
<string name="nc_diagnose_signaling_mode_extern">Külső</string>
|
<string name="nc_diagnose_signaling_mode_extern">Külső</string>
|
||||||
<string name="nc_diagnose_signaling_mode_intern">Belső</string>
|
<string name="nc_diagnose_signaling_mode_intern">Belső</string>
|
||||||
<string name="nc_dialog_invalid_password">Érvénytelen jelszó</string>
|
<string name="nc_dialog_invalid_password">Érvénytelen jelszó</string>
|
||||||
@ -171,7 +219,9 @@
|
|||||||
<string name="nc_dialog_outdated_client_description">Az alkalmazás túl régi, és már nem támogatja ez a kiszolgáló. Frissítse.</string>
|
<string name="nc_dialog_outdated_client_description">Az alkalmazás túl régi, és már nem támogatja ez a kiszolgáló. Frissítse.</string>
|
||||||
<string name="nc_dialog_outdated_client_option_update">Frissítés</string>
|
<string name="nc_dialog_outdated_client_option_update">Frissítés</string>
|
||||||
<string name="nc_dialog_reauth_or_delete">Újrahitelesíti vagy törli ezt a fiókot?</string>
|
<string name="nc_dialog_reauth_or_delete">Újrahitelesíti vagy törli ezt a fiókot?</string>
|
||||||
|
<string name="nc_dialog_save_to_storage_continue">Folytatja?</string>
|
||||||
<string name="nc_dialog_save_to_storage_no">Nem</string>
|
<string name="nc_dialog_save_to_storage_no">Nem</string>
|
||||||
|
<string name="nc_dialog_save_to_storage_title">Menti a tárolóba?</string>
|
||||||
<string name="nc_dialog_save_to_storage_yes">Igen</string>
|
<string name="nc_dialog_save_to_storage_yes">Igen</string>
|
||||||
<string name="nc_display_name_not_fetched">A megjelenítendő név nem kérhető le, megszakítás</string>
|
<string name="nc_display_name_not_fetched">A megjelenítendő név nem kérhető le, megszakítás</string>
|
||||||
<string name="nc_display_name_not_stored">A megjelenítendő név nem tárolható, megszakítás</string>
|
<string name="nc_display_name_not_stored">A megjelenítendő név nem tárolható, megszakítás</string>
|
||||||
@ -215,7 +265,7 @@
|
|||||||
<string name="nc_guest_access_share_link">Beszélgetés hivatkozásának megosztása</string>
|
<string name="nc_guest_access_share_link">Beszélgetés hivatkozásának megosztása</string>
|
||||||
<string name="nc_hint_enter_a_message">Írjon üzenetet…</string>
|
<string name="nc_hint_enter_a_message">Írjon üzenetet…</string>
|
||||||
<string name="nc_important_conversation">Fontos beszélgetés</string>
|
<string name="nc_important_conversation">Fontos beszélgetés</string>
|
||||||
<string name="nc_important_conversation_desc">E beszélgetés értesítései felülírják a Ne zavarjanak beállításokat</string>
|
<string name="nc_invalid_time">Érvénytelen idő</string>
|
||||||
<string name="nc_invitations">Meghívások</string>
|
<string name="nc_invitations">Meghívások</string>
|
||||||
<string name="nc_join_open_conversations">Csatlakozás a nyílt beszélgetésekhez</string>
|
<string name="nc_join_open_conversations">Csatlakozás a nyílt beszélgetésekhez</string>
|
||||||
<string name="nc_keep">Megtartás</string>
|
<string name="nc_keep">Megtartás</string>
|
||||||
@ -278,9 +328,9 @@
|
|||||||
<string name="nc_participants">Résztvevők</string>
|
<string name="nc_participants">Résztvevők</string>
|
||||||
<string name="nc_participants_add">Résztvevők hozzáadása</string>
|
<string name="nc_participants_add">Résztvevők hozzáadása</string>
|
||||||
<string name="nc_password">Jelszó</string>
|
<string name="nc_password">Jelszó</string>
|
||||||
<string name="nc_permissions_ask">Jogosultságok beállításaa</string>
|
<string name="nc_permissions_ask">Engedélyek beállítása</string>
|
||||||
<string name="nc_permissions_denied">Néhány jogosultság meg lett tagadva.</string>
|
<string name="nc_permissions_denied">Néhány engedély meg lett tagadva.</string>
|
||||||
<string name="nc_permissions_rationale_dialog_title">Engedélyezzen jogosultságokat</string>
|
<string name="nc_permissions_rationale_dialog_title">Adja meg az engedélyeket</string>
|
||||||
<string name="nc_permissions_settings">Beállítások megnyitása</string>
|
<string name="nc_permissions_settings">Beállítások megnyitása</string>
|
||||||
<string name="nc_permissions_settings_hint">Adjon engedélyt a Beállítások > Engedélyek menüpontban</string>
|
<string name="nc_permissions_settings_hint">Adjon engedélyt a Beállítások > Engedélyek menüpontban</string>
|
||||||
<string name="nc_phone_book_integration_account_not_found">A fiók nem található</string>
|
<string name="nc_phone_book_integration_account_not_found">A fiók nem található</string>
|
||||||
@ -349,7 +399,7 @@
|
|||||||
<string name="nc_settings_notification_sounds_post_oreo">Értesítések</string>
|
<string name="nc_settings_notification_sounds_post_oreo">Értesítések</string>
|
||||||
<string name="nc_settings_other_notifications_ringtone">Üzenetek</string>
|
<string name="nc_settings_other_notifications_ringtone">Üzenetek</string>
|
||||||
<string name="nc_settings_phone_book_integration_desc">Párosítsa a névjegyeket telefonszám alapján, hogy integrálja a Beszélgetéseket a rendszer Névjegyek alkalmazásba</string>
|
<string name="nc_settings_phone_book_integration_desc">Párosítsa a névjegyeket telefonszám alapján, hogy integrálja a Beszélgetéseket a rendszer Névjegyek alkalmazásba</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_429">429-es hiba Túl Sok Kérés</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_429">429-es hiba – Túl sok kérés</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_description">Beállíthatja telefonszámát, hogy a többi felhasználó megtalálja Önt</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_description">Beállíthatja telefonszámát, hogy a többi felhasználó megtalálja Önt</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_edit_text_hint">Írja be a telefonszámot</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_edit_text_hint">Írja be a telefonszámot</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_invalid">Érvénytelen telefonszám-formátum</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_invalid">Érvénytelen telefonszám-formátum</string>
|
||||||
@ -513,7 +563,7 @@
|
|||||||
<string name="take_photo_toggle_torch">Lámpa be/ki</string>
|
<string name="take_photo_toggle_torch">Lámpa be/ki</string>
|
||||||
<string name="thirtyMinutes">30 perc</string>
|
<string name="thirtyMinutes">30 perc</string>
|
||||||
<string name="thisWeek">Ez a hét</string>
|
<string name="thisWeek">Ez a hét</string>
|
||||||
<string name="this_is_a_test_message">Ez egy teszt üzenet</string>
|
<string name="this_is_a_test_message">Ez egy tesztüzenet</string>
|
||||||
<string name="this_weekend">Ezen a hétvégén</string>
|
<string name="this_weekend">Ezen a hétvégén</string>
|
||||||
<string name="today">Ma</string>
|
<string name="today">Ma</string>
|
||||||
<string name="tomorrow">Holnap</string>
|
<string name="tomorrow">Holnap</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Modifica</string>
|
<string name= "nc_edit">Modifica</string>
|
||||||
|
<string name="add_participants">Aggiungi</string>
|
||||||
<string name="appbar_search_in">Cerca in %s</string>
|
<string name="appbar_search_in">Cerca in %s</string>
|
||||||
<string name="archived">Archiviati</string>
|
<string name="archived">Archiviati</string>
|
||||||
<string name="archived_conversation">Archiviato %1$s</string>
|
<string name="archived_conversation">Archiviato %1$s</string>
|
||||||
@ -184,7 +185,6 @@
|
|||||||
<string name="nc_guest_access_share_link">Condividi collegamento della conversazione</string>
|
<string name="nc_guest_access_share_link">Condividi collegamento della conversazione</string>
|
||||||
<string name="nc_hint_enter_a_message">Digita un messaggio …</string>
|
<string name="nc_hint_enter_a_message">Digita un messaggio …</string>
|
||||||
<string name="nc_important_conversation">Conversazione importante</string>
|
<string name="nc_important_conversation">Conversazione importante</string>
|
||||||
<string name="nc_important_conversation_desc">Le notifiche in questa conversazione ignoreranno l\'impostazione Non disturbare</string>
|
|
||||||
<string name="nc_invitations">Inviti</string>
|
<string name="nc_invitations">Inviti</string>
|
||||||
<string name="nc_last_modified">%1$s | Ultima modifica: %2$s</string>
|
<string name="nc_last_modified">%1$s | Ultima modifica: %2$s</string>
|
||||||
<string name="nc_leave">Lascia la conversazione</string>
|
<string name="nc_leave">Lascia la conversazione</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">編集</string>
|
<string name= "nc_edit">編集</string>
|
||||||
|
<string name="add_participants">追加</string>
|
||||||
<string name="add_to_notes">メモに追加する</string>
|
<string name="add_to_notes">メモに追加する</string>
|
||||||
<string name="added_to_favorites">%1$s会話をお気に入りに追加した</string>
|
<string name="added_to_favorites">%1$s会話をお気に入りに追加した</string>
|
||||||
<string name="appbar_search_in">%sを検索</string>
|
<string name="appbar_search_in">%sを検索</string>
|
||||||
@ -259,7 +260,6 @@
|
|||||||
<string name="nc_hint_enter_a_message">メッセージを入力…</string>
|
<string name="nc_hint_enter_a_message">メッセージを入力…</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">バッテリーの最適化を無視する</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">バッテリーの最適化を無視する</string>
|
||||||
<string name="nc_important_conversation">重要な会議</string>
|
<string name="nc_important_conversation">重要な会議</string>
|
||||||
<string name="nc_important_conversation_desc">この会話の通知設定は、取り込み中設定を上書きします</string>
|
|
||||||
<string name="nc_invitations">招待</string>
|
<string name="nc_invitations">招待</string>
|
||||||
<string name="nc_join_open_conversations">オープンな会話に参加する</string>
|
<string name="nc_join_open_conversations">オープンな会話に参加する</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">会話から離れる前に、新しいモデレーターを昇格させる必要があります</string>
|
<string name="nc_last_moderator_leaving_room_warning">会話から離れる前に、新しいモデレーターを昇格させる必要があります</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">편집</string>
|
<string name= "nc_edit">편집</string>
|
||||||
|
<string name="add_participants">추가</string>
|
||||||
<string name="appbar_search_in">%s 검색</string>
|
<string name="appbar_search_in">%s 검색</string>
|
||||||
<string name="archived">보관된</string>
|
<string name="archived">보관된</string>
|
||||||
<string name="audio_output_bluetooth">블루투스</string>
|
<string name="audio_output_bluetooth">블루투스</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Taisyti</string>
|
<string name= "nc_edit">Taisyti</string>
|
||||||
|
<string name="add_participants">Pridėti</string>
|
||||||
<string name="appbar_search_in">Ieškoti %s</string>
|
<string name="appbar_search_in">Ieškoti %s</string>
|
||||||
<string name="archived">Archyvuota</string>
|
<string name="archived">Archyvuota</string>
|
||||||
<string name="audio_output_bluetooth">Bluetooth</string>
|
<string name="audio_output_bluetooth">Bluetooth</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Rediger</string>
|
<string name= "nc_edit">Rediger</string>
|
||||||
|
<string name="add_participants">Legg til</string>
|
||||||
<string name="add_to_notes">Legg til notater</string>
|
<string name="add_to_notes">Legg til notater</string>
|
||||||
<string name="added_to_favorites">La til samtale %1$s i favoritter</string>
|
<string name="added_to_favorites">La til samtale %1$s i favoritter</string>
|
||||||
<string name="appbar_search_in">Søk i %s</string>
|
<string name="appbar_search_in">Søk i %s</string>
|
||||||
@ -268,7 +269,6 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Batterioptimalisering ignoreres ikke. Dette bør endres for å sikre at varsler fungerer i bakgrunnen! Klikk OK og velg \"Alle apper\" -> %1$s -> Ikke optimaliser</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Batterioptimalisering ignoreres ikke. Dette bør endres for å sikre at varsler fungerer i bakgrunnen! Klikk OK og velg \"Alle apper\" -> %1$s -> Ikke optimaliser</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorer batterioptimalisering</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorer batterioptimalisering</string>
|
||||||
<string name="nc_important_conversation">Viktig samtale</string>
|
<string name="nc_important_conversation">Viktig samtale</string>
|
||||||
<string name="nc_important_conversation_desc">Varsler i denne samtalen overstyrer innstillingene for Ikke forstyrr</string>
|
|
||||||
<string name="nc_invitations">Invitasjoner</string>
|
<string name="nc_invitations">Invitasjoner</string>
|
||||||
<string name="nc_join_open_conversations">Bli med i åpne samtaler</string>
|
<string name="nc_join_open_conversations">Bli med i åpne samtaler</string>
|
||||||
<string name="nc_keep">Behold</string>
|
<string name="nc_keep">Behold</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Bewerken</string>
|
<string name= "nc_edit">Bewerken</string>
|
||||||
|
<string name="add_participants">Toevoegen</string>
|
||||||
<string name="add_to_notes">Toevoegen aan Notities</string>
|
<string name="add_to_notes">Toevoegen aan Notities</string>
|
||||||
<string name="added_to_favorites">Gesprek %1$s toegevoegd aan favorieten</string>
|
<string name="added_to_favorites">Gesprek %1$s toegevoegd aan favorieten</string>
|
||||||
<string name="appbar_search_in">Zoeken in %s</string>
|
<string name="appbar_search_in">Zoeken in %s</string>
|
||||||
@ -28,7 +29,7 @@
|
|||||||
<string name="clear_status_message">Statusbericht wissen</string>
|
<string name="clear_status_message">Statusbericht wissen</string>
|
||||||
<string name="clear_status_message_after">Statusbericht wissen na</string>
|
<string name="clear_status_message_after">Statusbericht wissen na</string>
|
||||||
<string name="close">Sluit</string>
|
<string name="close">Sluit</string>
|
||||||
<string name="close_icon">Sluiten pictogram</string>
|
<string name="close_icon">Sluiten-pictogram</string>
|
||||||
<string name="connection_established">Verbinding tot stand gebracht</string>
|
<string name="connection_established">Verbinding tot stand gebracht</string>
|
||||||
<string name="connection_lost_sent_messages_are_queued">Verbinding verbroken - Verzonden berichten in de wachtrij geplaatst</string>
|
<string name="connection_lost_sent_messages_are_queued">Verbinding verbroken - Verzonden berichten in de wachtrij geplaatst</string>
|
||||||
<string name="continuous_voice_message_recording">Zet opname vast voor doorlopende opname van de spraak</string>
|
<string name="continuous_voice_message_recording">Zet opname vast voor doorlopende opname van de spraak</string>
|
||||||
@ -272,7 +273,6 @@ Kies er eentje van een provider.</string>
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Batterijoptimalisatie staat niet uit. Dit moet aangepast worden zodat meldingen op de achtergrond werken! Druk op OK en selecteer \"Alle apps\" -> %1$s -> Niet optimaliseren</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Batterijoptimalisatie staat niet uit. Dit moet aangepast worden zodat meldingen op de achtergrond werken! Druk op OK en selecteer \"Alle apps\" -> %1$s -> Niet optimaliseren</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Batterijoptimalisatie negeren</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Batterijoptimalisatie negeren</string>
|
||||||
<string name="nc_important_conversation">Belangrijk gesprek</string>
|
<string name="nc_important_conversation">Belangrijk gesprek</string>
|
||||||
<string name="nc_important_conversation_desc">Meldingen in dit gesprek negeren de Niet-Storen instellingen</string>
|
|
||||||
<string name="nc_invitations">Uitnodigingen</string>
|
<string name="nc_invitations">Uitnodigingen</string>
|
||||||
<string name="nc_join_open_conversations">Deelnemen aan open gesprekken</string>
|
<string name="nc_join_open_conversations">Deelnemen aan open gesprekken</string>
|
||||||
<string name="nc_keep">Behouden</string>
|
<string name="nc_keep">Behouden</string>
|
||||||
@ -557,7 +557,7 @@ Kies er eentje van een provider.</string>
|
|||||||
<string name="scope_toggle">Scope omschakelen</string>
|
<string name="scope_toggle">Scope omschakelen</string>
|
||||||
<string name="scope_toggle_description">Wijzigen privacyniveau van %1$s</string>
|
<string name="scope_toggle_description">Wijzigen privacyniveau van %1$s</string>
|
||||||
<string name="scroll_to_bottom">Scroll naar beneden</string>
|
<string name="scroll_to_bottom">Scroll naar beneden</string>
|
||||||
<string name="search_icon">Zoeken pictogram</string>
|
<string name="search_icon">Zoeken-pictogram</string>
|
||||||
<string name="secondsAgo">seconden geleden</string>
|
<string name="secondsAgo">seconden geleden</string>
|
||||||
<string name="selected_list_item">Geselecteerd</string>
|
<string name="selected_list_item">Geselecteerd</string>
|
||||||
<string name="send_email">Verstuur e-mail</string>
|
<string name="send_email">Verstuur e-mail</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Edycja</string>
|
<string name= "nc_edit">Edycja</string>
|
||||||
|
<string name="add_participants">Dodaj</string>
|
||||||
<string name="add_to_notes">Dodaj do Notatek</string>
|
<string name="add_to_notes">Dodaj do Notatek</string>
|
||||||
<string name="added_to_favorites">Dodano rozmowę %1$s do ulubionych</string>
|
<string name="added_to_favorites">Dodano rozmowę %1$s do ulubionych</string>
|
||||||
<string name="appbar_search_in">Szukaj w %s</string>
|
<string name="appbar_search_in">Szukaj w %s</string>
|
||||||
@ -8,6 +9,7 @@
|
|||||||
<string name="archive_hint">Po zarchiwizowaniu rozmowa zostanie domyślnie ukryta. Wybierz filtr „Zarchiwizowane”, aby wyświetlić zarchiwizowane rozmowy. Bezpośrednie wzmianki będą nadal otrzymywane.</string>
|
<string name="archive_hint">Po zarchiwizowaniu rozmowa zostanie domyślnie ukryta. Wybierz filtr „Zarchiwizowane”, aby wyświetlić zarchiwizowane rozmowy. Bezpośrednie wzmianki będą nadal otrzymywane.</string>
|
||||||
<string name="archived">Zarchiwizowane</string>
|
<string name="archived">Zarchiwizowane</string>
|
||||||
<string name="archived_conversation">Zarchiwizowane %1$s</string>
|
<string name="archived_conversation">Zarchiwizowane %1$s</string>
|
||||||
|
<string name="audio_call">Rozmowa audio</string>
|
||||||
<string name="audio_output_bluetooth">Bluetooth</string>
|
<string name="audio_output_bluetooth">Bluetooth</string>
|
||||||
<string name="audio_output_dialog_headline">Wyjście audio</string>
|
<string name="audio_output_dialog_headline">Wyjście audio</string>
|
||||||
<string name="audio_output_phone">Telefon</string>
|
<string name="audio_output_phone">Telefon</string>
|
||||||
@ -31,8 +33,10 @@
|
|||||||
<string name="close">Zamknij</string>
|
<string name="close">Zamknij</string>
|
||||||
<string name="close_icon">Ikona zamknięcia</string>
|
<string name="close_icon">Ikona zamknięcia</string>
|
||||||
<string name="connection_established">Połączenie nawiązane</string>
|
<string name="connection_established">Połączenie nawiązane</string>
|
||||||
|
<string name="connection_lost">Brak połączenia z serwerem</string>
|
||||||
<string name="connection_lost_sent_messages_are_queued">Utracono połączenie - wysłane wiadomości są w kolejce</string>
|
<string name="connection_lost_sent_messages_are_queued">Utracono połączenie - wysłane wiadomości są w kolejce</string>
|
||||||
<string name="continuous_voice_message_recording">Zablokuj nagrywanie w celu ciągłego nagrywania wiadomości głosowej</string>
|
<string name="continuous_voice_message_recording">Zablokuj nagrywanie w celu ciągłego nagrywania wiadomości głosowej</string>
|
||||||
|
<string name="conversation_archived">Konwersacja została zarchiwizowana.</string>
|
||||||
<string name="conversation_is_read_only">Rozmowa jest tylko do odczytu</string>
|
<string name="conversation_is_read_only">Rozmowa jest tylko do odczytu</string>
|
||||||
<string name="conversation_read_only_failed">Nie udało się ustawić rozmowy Tylko do odczytu</string>
|
<string name="conversation_read_only_failed">Nie udało się ustawić rozmowy Tylko do odczytu</string>
|
||||||
<string name="conversations">Rozmowy</string>
|
<string name="conversations">Rozmowy</string>
|
||||||
@ -46,6 +50,7 @@
|
|||||||
<string name="dnd">Nie przeszkadzać</string>
|
<string name="dnd">Nie przeszkadzać</string>
|
||||||
<string name="dontClear">Nie czyść</string>
|
<string name="dontClear">Nie czyść</string>
|
||||||
<string name="edit">Edytuj</string>
|
<string name="edit">Edytuj</string>
|
||||||
|
<string name="edit_error_24_hours_old_message">Wiadomości starsze niż 24 godziny nie mogą być edytowane.</string>
|
||||||
<string name="edit_message_icon_description">Edytuj wiadomość</string>
|
<string name="edit_message_icon_description">Edytuj wiadomość</string>
|
||||||
<string name="emoji_category_recent">Ostatnie</string>
|
<string name="emoji_category_recent">Ostatnie</string>
|
||||||
<string name="encrypted">Zaszyfrowane</string>
|
<string name="encrypted">Zaszyfrowane</string>
|
||||||
@ -67,6 +72,7 @@
|
|||||||
<string name="leave_call">Rozłącz się</string>
|
<string name="leave_call">Rozłącz się</string>
|
||||||
<string name="left_conversation">Opuściłeś rozmowę %1$s</string>
|
<string name="left_conversation">Opuściłeś rozmowę %1$s</string>
|
||||||
<string name="load_more_results">Wczytaj więcej wyników</string>
|
<string name="load_more_results">Wczytaj więcej wyników</string>
|
||||||
|
<string name="local_time">Czas lokalny: %1$s</string>
|
||||||
<string name="lock_conversation">Zablokuj rozmowę</string>
|
<string name="lock_conversation">Zablokuj rozmowę</string>
|
||||||
<string name="lock_symbol">Symbol zamknięcia</string>
|
<string name="lock_symbol">Symbol zamknięcia</string>
|
||||||
<string name="lower_hand">Opuścić rękę</string>
|
<string name="lower_hand">Opuścić rękę</string>
|
||||||
@ -79,6 +85,7 @@
|
|||||||
<string name="menu_item_sort_by_name_z_a">Z - A</string>
|
<string name="menu_item_sort_by_name_z_a">Z - A</string>
|
||||||
<string name="menu_item_sort_by_size_biggest_first">Od największych</string>
|
<string name="menu_item_sort_by_size_biggest_first">Od największych</string>
|
||||||
<string name="menu_item_sort_by_size_smallest_first">Od najmniejszych</string>
|
<string name="menu_item_sort_by_size_smallest_first">Od najmniejszych</string>
|
||||||
|
<string name="message_copied">Wiadomość skopiowana</string>
|
||||||
<string name="message_deleted_by_you">Wiadomość usunięta przez Ciebie</string>
|
<string name="message_deleted_by_you">Wiadomość usunięta przez Ciebie</string>
|
||||||
<string name="message_last_edited_by">Edytowany przez %1$s</string>
|
<string name="message_last_edited_by">Edytowany przez %1$s</string>
|
||||||
<string name="message_poll_tap_to_open">Dotknij, aby otworzyć sondę</string>
|
<string name="message_poll_tap_to_open">Dotknij, aby otworzyć sondę</string>
|
||||||
@ -163,6 +170,7 @@
|
|||||||
<string name="nc_copy_message">Kopiuj</string>
|
<string name="nc_copy_message">Kopiuj</string>
|
||||||
<string name="nc_create_new_conversation">Utwórz nową rozmowę</string>
|
<string name="nc_create_new_conversation">Utwórz nową rozmowę</string>
|
||||||
<string name="nc_create_poll">Utwórz sondę</string>
|
<string name="nc_create_poll">Utwórz sondę</string>
|
||||||
|
<string name="nc_current_user">Ty:</string>
|
||||||
<string name="nc_date_header_today">Dzisiaj</string>
|
<string name="nc_date_header_today">Dzisiaj</string>
|
||||||
<string name="nc_date_header_yesterday">Wczoraj</string>
|
<string name="nc_date_header_yesterday">Wczoraj</string>
|
||||||
<string name="nc_delete">Usuń</string>
|
<string name="nc_delete">Usuń</string>
|
||||||
@ -171,6 +179,7 @@
|
|||||||
<string name="nc_delete_conversation_more">Jeśli usuniesz rozmowę, zostanie ona również usunięta dla wszystkich pozostałych uczestników.</string>
|
<string name="nc_delete_conversation_more">Jeśli usuniesz rozmowę, zostanie ona również usunięta dla wszystkich pozostałych uczestników.</string>
|
||||||
<string name="nc_delete_message">Usuń</string>
|
<string name="nc_delete_message">Usuń</string>
|
||||||
<string name="nc_delete_message_leaked_to_matterbridge">Wiadomość została pomyślnie usunięta, ale mogła przedostać się do innych usług</string>
|
<string name="nc_delete_message_leaked_to_matterbridge">Wiadomość została pomyślnie usunięta, ale mogła przedostać się do innych usług</string>
|
||||||
|
<string name="nc_delete_now">Usuń teraz</string>
|
||||||
<string name="nc_deleted_user">Użytkownik %1$s został usunięty</string>
|
<string name="nc_deleted_user">Użytkownik %1$s został usunięty</string>
|
||||||
<string name="nc_demote">Zdegraduj z moderatora</string>
|
<string name="nc_demote">Zdegraduj z moderatora</string>
|
||||||
<string name="nc_description_record_voice">Nagraj wiadomość głosową</string>
|
<string name="nc_description_record_voice">Nagraj wiadomość głosową</string>
|
||||||
@ -231,6 +240,8 @@
|
|||||||
<string name="nc_edit_message">Edycja</string>
|
<string name="nc_edit_message">Edycja</string>
|
||||||
<string name="nc_edit_message_text">Edytuj wiadomość</string>
|
<string name="nc_edit_message_text">Edytuj wiadomość</string>
|
||||||
<string name="nc_edited_by_admin">Edytowane przez administratora</string>
|
<string name="nc_edited_by_admin">Edytowane przez administratora</string>
|
||||||
|
<string name="nc_event_conversation_menu">Menu rozmowy wydarzenia</string>
|
||||||
|
<string name="nc_event_schedule">Harmonogram</string>
|
||||||
<string name="nc_expire_message_eight_hours">8 godzin</string>
|
<string name="nc_expire_message_eight_hours">8 godzin</string>
|
||||||
<string name="nc_expire_message_four_weeks">4 tygodnie</string>
|
<string name="nc_expire_message_four_weeks">4 tygodnie</string>
|
||||||
<string name="nc_expire_message_off">Wyłączona</string>
|
<string name="nc_expire_message_off">Wyłączona</string>
|
||||||
@ -247,6 +258,7 @@
|
|||||||
<string name="nc_federation_pending_invitation_hint">Masz oczekujące zaproszenia</string>
|
<string name="nc_federation_pending_invitation_hint">Masz oczekujące zaproszenia</string>
|
||||||
<string name="nc_file_browser_back">Wstecz</string>
|
<string name="nc_file_browser_back">Wstecz</string>
|
||||||
<string name="nc_file_storage_permission">Wymagane jest zezwolenie na dostęp do plików</string>
|
<string name="nc_file_storage_permission">Wymagane jest zezwolenie na dostęp do plików</string>
|
||||||
|
<string name="nc_filter">Filtruj rozmowy</string>
|
||||||
<string name="nc_following_link">Użytkownik korzysta z łącza publicznego</string>
|
<string name="nc_following_link">Użytkownik korzysta z łącza publicznego</string>
|
||||||
<string name="nc_formatted_message_you">Ty: %1$s</string>
|
<string name="nc_formatted_message_you">Ty: %1$s</string>
|
||||||
<string name="nc_forward_message">Przekaż dalej</string>
|
<string name="nc_forward_message">Przekaż dalej</string>
|
||||||
@ -258,8 +270,8 @@
|
|||||||
<string name="nc_guest">Gość</string>
|
<string name="nc_guest">Gość</string>
|
||||||
<string name="nc_guest_access">Dostęp dla gościa</string>
|
<string name="nc_guest_access">Dostęp dla gościa</string>
|
||||||
<string name="nc_guest_access_allow_failed">Nie można włączyć/wyłączyć dostępu dla gościa.</string>
|
<string name="nc_guest_access_allow_failed">Nie można włączyć/wyłączyć dostępu dla gościa.</string>
|
||||||
<string name="nc_guest_access_allow_summary">Zezwól gościom na udostępnianie linku publicznego, aby dołączyć do tej rozmowy.</string>
|
<string name="nc_guest_access_allow_summary">Zezwalaj gościom na udostępnianie linku publicznego, aby dołączyć do tej rozmowy.</string>
|
||||||
<string name="nc_guest_access_allow_title">Zezwól gościom</string>
|
<string name="nc_guest_access_allow_title">Zezwalaj gościom</string>
|
||||||
<string name="nc_guest_access_password_dialog_hint">Wprowadź hasło</string>
|
<string name="nc_guest_access_password_dialog_hint">Wprowadź hasło</string>
|
||||||
<string name="nc_guest_access_password_dialog_title">Hasło dostępu gościa</string>
|
<string name="nc_guest_access_password_dialog_title">Hasło dostępu gościa</string>
|
||||||
<string name="nc_guest_access_password_failed">Błąd podczas ustawiania/wyłączania hasła.</string>
|
<string name="nc_guest_access_password_failed">Błąd podczas ustawiania/wyłączania hasła.</string>
|
||||||
@ -273,9 +285,11 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Optymalizacja baterii nie jest ignorowana. Należy to zmienić, aby mieć pewność, że powiadomienia działają w tle! Kliknij OK i wybierz \"Wszystkie aplikacje\" -> %1$s -> Nie optymalizuj</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Optymalizacja baterii nie jest ignorowana. Należy to zmienić, aby mieć pewność, że powiadomienia działają w tle! Kliknij OK i wybierz \"Wszystkie aplikacje\" -> %1$s -> Nie optymalizuj</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Zignoruj optymalizację baterii</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Zignoruj optymalizację baterii</string>
|
||||||
<string name="nc_important_conversation">Ważna rozmowa</string>
|
<string name="nc_important_conversation">Ważna rozmowa</string>
|
||||||
<string name="nc_important_conversation_desc">Powiadomienia w tej rozmowie ignorują ustawienia \"Nie przeszkadzać\"</string>
|
<string name="nc_important_conversation_desc">Status użytkownika „Nie przeszkadzać” jest ignorowany dla ważnych rozmów.</string>
|
||||||
|
<string name="nc_invalid_time">Nieprawidłowy czas</string>
|
||||||
<string name="nc_invitations">Zaproszenia</string>
|
<string name="nc_invitations">Zaproszenia</string>
|
||||||
<string name="nc_join_open_conversations">Dołącz do otwartych rozmów</string>
|
<string name="nc_join_open_conversations">Dołącz do otwartych rozmów</string>
|
||||||
|
<string name="nc_keep">Pozostaw</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Zanim opuścisz rozmowę, musisz wybrać nowego moderatora</string>
|
<string name="nc_last_moderator_leaving_room_warning">Zanim opuścisz rozmowę, musisz wybrać nowego moderatora</string>
|
||||||
<string name="nc_last_modified">%1$s | Ostatnio zmodyfikowany: %2$s</string>
|
<string name="nc_last_modified">%1$s | Ostatnio zmodyfikowany: %2$s</string>
|
||||||
<string name="nc_leave">Opuść rozmowę</string>
|
<string name="nc_leave">Opuść rozmowę</string>
|
||||||
@ -295,6 +309,8 @@
|
|||||||
<string name="nc_manual">Nie ustawiony</string>
|
<string name="nc_manual">Nie ustawiony</string>
|
||||||
<string name="nc_mark_as_read">Oznacz jako przeczytane</string>
|
<string name="nc_mark_as_read">Oznacz jako przeczytane</string>
|
||||||
<string name="nc_mark_as_unread">Oznacz jako nieprzeczytane</string>
|
<string name="nc_mark_as_unread">Oznacz jako nieprzeczytane</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Rozmowa oznaczona jako ważna</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Rozmowa została odznaczona jako wrażliwa</string>
|
||||||
<string name="nc_message_failed">Nie powiodło się</string>
|
<string name="nc_message_failed">Nie powiodło się</string>
|
||||||
<string name="nc_message_failed_to_send">Nie udało się wysłać wiadomości:</string>
|
<string name="nc_message_failed_to_send">Nie udało się wysłać wiadomości:</string>
|
||||||
<string name="nc_message_offline">Niedostępny</string>
|
<string name="nc_message_offline">Niedostępny</string>
|
||||||
@ -342,7 +358,7 @@
|
|||||||
<string name="nc_password">Hasło</string>
|
<string name="nc_password">Hasło</string>
|
||||||
<string name="nc_permissions_ask">Ustaw uprawnienia</string>
|
<string name="nc_permissions_ask">Ustaw uprawnienia</string>
|
||||||
<string name="nc_permissions_denied">Odmówiono niektórych uprawnień.</string>
|
<string name="nc_permissions_denied">Odmówiono niektórych uprawnień.</string>
|
||||||
<string name="nc_permissions_rationale_dialog_title">Zezwól na uprawnienia</string>
|
<string name="nc_permissions_rationale_dialog_title">Zezwalaj na uprawnienia</string>
|
||||||
<string name="nc_permissions_settings">Otwórz ustawienia</string>
|
<string name="nc_permissions_settings">Otwórz ustawienia</string>
|
||||||
<string name="nc_permissions_settings_hint">Nadaj uprawnienia w Ustawienia > Uprawnienia</string>
|
<string name="nc_permissions_settings_hint">Nadaj uprawnienia w Ustawienia > Uprawnienia</string>
|
||||||
<string name="nc_phone_book_integration_account_not_found">Nie znaleziono konta</string>
|
<string name="nc_phone_book_integration_account_not_found">Nie znaleziono konta</string>
|
||||||
@ -380,6 +396,8 @@
|
|||||||
<string name="nc_screen_lock_timeout_three_hundred">300</string>
|
<string name="nc_screen_lock_timeout_three_hundred">300</string>
|
||||||
<string name="nc_search">Szukaj</string>
|
<string name="nc_search">Szukaj</string>
|
||||||
<string name="nc_select_an_account">Wybierz konto</string>
|
<string name="nc_select_an_account">Wybierz konto</string>
|
||||||
|
<string name="nc_sensitive_conversation">Rozmowa poufna</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Podgląd wiadomości zostanie wyłączony na liście rozmów i w powiadomieniach.</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s wysłał GIF.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s wysłał GIF.</string>
|
||||||
<string name="nc_sent_a_gif_you">Wysłałeś GIF.</string>
|
<string name="nc_sent_a_gif_you">Wysłałeś GIF.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s wysłał plik wideo.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s wysłał plik wideo.</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Editar</string>
|
<string name= "nc_edit">Editar</string>
|
||||||
|
<string name="add_participants">Adicionar</string>
|
||||||
<string name="add_to_notes">Adicionar a Notas</string>
|
<string name="add_to_notes">Adicionar a Notas</string>
|
||||||
<string name="added_to_favorites">Conversa %1$s adicionada para favoritos</string>
|
<string name="added_to_favorites">Conversa %1$s adicionada para favoritos</string>
|
||||||
<string name="appbar_search_in">Pesquisar em %s</string>
|
<string name="appbar_search_in">Pesquisar em %s</string>
|
||||||
@ -35,7 +36,7 @@
|
|||||||
<string name="connection_lost">Sem conexão com o servidor</string>
|
<string name="connection_lost">Sem conexão com o servidor</string>
|
||||||
<string name="connection_lost_sent_messages_are_queued">Conexão perdida - As mensagens enviadas são colocadas na fila</string>
|
<string name="connection_lost_sent_messages_are_queued">Conexão perdida - As mensagens enviadas são colocadas na fila</string>
|
||||||
<string name="continuous_voice_message_recording">Fixar gravação para gravação contínua da mensagem de voz</string>
|
<string name="continuous_voice_message_recording">Fixar gravação para gravação contínua da mensagem de voz</string>
|
||||||
<string name="conversation_archived">Conversa arquivada</string>
|
<string name="conversation_archived">Conversa é arquivada</string>
|
||||||
<string name="conversation_is_read_only">A conversa é somente leitura</string>
|
<string name="conversation_is_read_only">A conversa é somente leitura</string>
|
||||||
<string name="conversation_read_only_failed">Falha ao definir a conversa Somente leitura</string>
|
<string name="conversation_read_only_failed">Falha ao definir a conversa Somente leitura</string>
|
||||||
<string name="conversations">Conversas</string>
|
<string name="conversations">Conversas</string>
|
||||||
@ -114,7 +115,7 @@
|
|||||||
<string name="nc_call_button_content_description_hangup">Desligar</string>
|
<string name="nc_call_button_content_description_hangup">Desligar</string>
|
||||||
<string name="nc_call_button_content_description_microphone">Alternar o microfone</string>
|
<string name="nc_call_button_content_description_microphone">Alternar o microfone</string>
|
||||||
<string name="nc_call_button_content_description_pip">Abrir modo imagem-em-imagem</string>
|
<string name="nc_call_button_content_description_pip">Abrir modo imagem-em-imagem</string>
|
||||||
<string name="nc_call_button_content_description_switch_to_self_vide">Mudar para o próprio vídeo</string>
|
<string name="nc_call_button_content_description_switch_to_self_vide">Mudar para próprio vídeo</string>
|
||||||
<string name="nc_call_incoming">ENTRADA </string>
|
<string name="nc_call_incoming">ENTRADA </string>
|
||||||
<string name="nc_call_name">Nome de conversação</string>
|
<string name="nc_call_name">Nome de conversação</string>
|
||||||
<string name="nc_call_notifications">Notificações de chamadas </string>
|
<string name="nc_call_notifications">Notificações de chamadas </string>
|
||||||
@ -178,7 +179,7 @@
|
|||||||
<string name="nc_delete_conversation_more">Se você excluir a conversa, ela também será excluída para todos os outros participantes.</string>
|
<string name="nc_delete_conversation_more">Se você excluir a conversa, ela também será excluída para todos os outros participantes.</string>
|
||||||
<string name="nc_delete_message">Excluir</string>
|
<string name="nc_delete_message">Excluir</string>
|
||||||
<string name="nc_delete_message_leaked_to_matterbridge">Mensagem excluída com sucesso, mas pode ter sido vazada para outros serviços </string>
|
<string name="nc_delete_message_leaked_to_matterbridge">Mensagem excluída com sucesso, mas pode ter sido vazada para outros serviços </string>
|
||||||
<string name="nc_delete_now">Excluir linha</string>
|
<string name="nc_delete_now">Excluir agora</string>
|
||||||
<string name="nc_deleted_user">Usuário %1$s foi removido</string>
|
<string name="nc_deleted_user">Usuário %1$s foi removido</string>
|
||||||
<string name="nc_demote">Rebaixar de moderador</string>
|
<string name="nc_demote">Rebaixar de moderador</string>
|
||||||
<string name="nc_description_record_voice">Gravar mensagem de voz</string>
|
<string name="nc_description_record_voice">Gravar mensagem de voz</string>
|
||||||
@ -239,8 +240,8 @@
|
|||||||
<string name="nc_edit_message">Editar</string>
|
<string name="nc_edit_message">Editar</string>
|
||||||
<string name="nc_edit_message_text">Editar mensagem</string>
|
<string name="nc_edit_message_text">Editar mensagem</string>
|
||||||
<string name="nc_edited_by_admin">Editado por um administrador</string>
|
<string name="nc_edited_by_admin">Editado por um administrador</string>
|
||||||
<string name="nc_event_conversation_menu">Menu da conversa do evento</string>
|
<string name="nc_event_conversation_menu">Menu de conversa de evento</string>
|
||||||
<string name="nc_event_schedule">Agendar</string>
|
<string name="nc_event_schedule">Agenda</string>
|
||||||
<string name="nc_expire_message_eight_hours">8 horas</string>
|
<string name="nc_expire_message_eight_hours">8 horas</string>
|
||||||
<string name="nc_expire_message_four_weeks">4 semanas</string>
|
<string name="nc_expire_message_four_weeks">4 semanas</string>
|
||||||
<string name="nc_expire_message_off">Desligado</string>
|
<string name="nc_expire_message_off">Desligado</string>
|
||||||
@ -284,7 +285,7 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">A otimização da bateria não é ignorada. Isso deve ser alterado para garantir que as notificações funcionem em segundo plano! Clique em OK e selecione \"Todos os apps\" -> %1$s -> Não otimizar</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">A otimização da bateria não é ignorada. Isso deve ser alterado para garantir que as notificações funcionem em segundo plano! Clique em OK e selecione \"Todos os apps\" -> %1$s -> Não otimizar</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorar otimização da bateria</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorar otimização da bateria</string>
|
||||||
<string name="nc_important_conversation">Conversa importante</string>
|
<string name="nc_important_conversation">Conversa importante</string>
|
||||||
<string name="nc_important_conversation_desc">As notificações nesta conversa substituirão as configurações de Não perturbe</string>
|
<string name="nc_important_conversation_desc">O status de usuário \"Não perturbe\" é ignorado em conversas importantes</string>
|
||||||
<string name="nc_invalid_time">Horário inválido</string>
|
<string name="nc_invalid_time">Horário inválido</string>
|
||||||
<string name="nc_invitations">Convites</string>
|
<string name="nc_invitations">Convites</string>
|
||||||
<string name="nc_join_open_conversations">Entrar em conversas abertas</string>
|
<string name="nc_join_open_conversations">Entrar em conversas abertas</string>
|
||||||
@ -308,8 +309,12 @@
|
|||||||
<string name="nc_manual">Não definido</string>
|
<string name="nc_manual">Não definido</string>
|
||||||
<string name="nc_mark_as_read">Marcar como lido</string>
|
<string name="nc_mark_as_read">Marcar como lido</string>
|
||||||
<string name="nc_mark_as_unread">Marcar como não lido</string>
|
<string name="nc_mark_as_unread">Marcar como não lido</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Conversa marcada como importante</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Conversa desmarcada como sensível</string>
|
||||||
|
<string name="nc_mark_conversation_as_sensitive">Conversa marcada como sensível</string>
|
||||||
|
<string name="nc_mark_conversation_as_unimportant">Conversa desmarcada como importante</string>
|
||||||
<string name="nc_meeting_ended">Reunião encerrada</string>
|
<string name="nc_meeting_ended">Reunião encerrada</string>
|
||||||
<string name="nc_message_added_to_notes">Mensagem adicionada ás notas</string>
|
<string name="nc_message_added_to_notes">Mensagem adicionada às notas</string>
|
||||||
<string name="nc_message_failed">Falhou</string>
|
<string name="nc_message_failed">Falhou</string>
|
||||||
<string name="nc_message_failed_to_send">Falha ao enviar mensagem:</string>
|
<string name="nc_message_failed_to_send">Falha ao enviar mensagem:</string>
|
||||||
<string name="nc_message_offline">Off-line</string>
|
<string name="nc_message_offline">Off-line</string>
|
||||||
@ -373,7 +378,7 @@
|
|||||||
<string name="nc_push_disabled">Notificações push desativadas</string>
|
<string name="nc_push_disabled">Notificações push desativadas</string>
|
||||||
<string name="nc_push_notification_error">Desculpe, algo deu errado, o erro é %1$s</string>
|
<string name="nc_push_notification_error">Desculpe, algo deu errado, o erro é %1$s</string>
|
||||||
<string name="nc_push_notification_fetch_error">Desculpe, algo deu errado, não foi possível obter a mensagem push de teste</string>
|
<string name="nc_push_notification_fetch_error">Desculpe, algo deu errado, não foi possível obter a mensagem push de teste</string>
|
||||||
<string name="nc_push_notification_message">A notificação push foi enviada com êxito. Agora você deve receber uma notificação nesse dispositivo com o título \'Testando notificações push\'</string>
|
<string name="nc_push_notification_message">A notificação push foi enviada com êxito. Agora você deve receber uma notificação neste dispositivo com o título \'Testando notificações push\'</string>
|
||||||
<string name="nc_push_to_talk">Pressione-para-falar</string>
|
<string name="nc_push_to_talk">Pressione-para-falar</string>
|
||||||
<string name="nc_push_to_talk_desc">Com o microfone desativado, clique& para usar Pressione-para-falar</string>
|
<string name="nc_push_to_talk_desc">Com o microfone desativado, clique& para usar Pressione-para-falar</string>
|
||||||
<string name="nc_remind">Lembre-me mais tarde</string>
|
<string name="nc_remind">Lembre-me mais tarde</string>
|
||||||
@ -386,6 +391,7 @@
|
|||||||
<string name="nc_rename_confirm">Renomear</string>
|
<string name="nc_rename_confirm">Renomear</string>
|
||||||
<string name="nc_reply">Responder</string>
|
<string name="nc_reply">Responder</string>
|
||||||
<string name="nc_reply_privately">Responder privadamente</string>
|
<string name="nc_reply_privately">Responder privadamente</string>
|
||||||
|
<string name="nc_room_retention">A sala é mantida com sucesso</string>
|
||||||
<string name="nc_save_message">Salvar</string>
|
<string name="nc_save_message">Salvar</string>
|
||||||
<string name="nc_save_success">Salvo com sucesso</string>
|
<string name="nc_save_success">Salvo com sucesso</string>
|
||||||
<string name="nc_screen_lock_timeout_30">30 segundos</string>
|
<string name="nc_screen_lock_timeout_30">30 segundos</string>
|
||||||
@ -400,6 +406,8 @@
|
|||||||
<string name="nc_search">Pesquisar</string>
|
<string name="nc_search">Pesquisar</string>
|
||||||
<string name="nc_select_an_account">Selecionar uma conta</string>
|
<string name="nc_select_an_account">Selecionar uma conta</string>
|
||||||
<string name="nc_send_edit_message">Atualizar mensagem</string>
|
<string name="nc_send_edit_message">Atualizar mensagem</string>
|
||||||
|
<string name="nc_sensitive_conversation">Conversa sensível</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">A visualização de mensagens será desativada na lista de conversas e nas notificações</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s enviou um GIF.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s enviou um GIF.</string>
|
||||||
<string name="nc_sent_a_gif_you">Você enviou um GIF.</string>
|
<string name="nc_sent_a_gif_you">Você enviou um GIF.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s enviou um vídeo.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s enviou um vídeo.</string>
|
||||||
@ -441,7 +449,7 @@
|
|||||||
<string name="nc_settings_notifications_declined">As notificações foram recusadas</string>
|
<string name="nc_settings_notifications_declined">As notificações foram recusadas</string>
|
||||||
<string name="nc_settings_notifications_granted">As notificações são concedidas</string>
|
<string name="nc_settings_notifications_granted">As notificações são concedidas</string>
|
||||||
<string name="nc_settings_other_notifications_ringtone">Mensagens</string>
|
<string name="nc_settings_other_notifications_ringtone">Mensagens</string>
|
||||||
<string name="nc_settings_phone_book_integration_desc">Combine os contatos com base no número de telefone para integrar o atalho do Bate Papo no aplicativo de contatos do sistema</string>
|
<string name="nc_settings_phone_book_integration_desc">Combinar os contatos com base no número de telefone para integrar o atalho do Talk no aplicativo de contatos do sistema</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_429">Erro 429 Pedidos Em Excesso</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_429">Erro 429 Pedidos Em Excesso</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_description">Você pode definir seu número de telefone para que outros usuários possam encontrar você</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_description">Você pode definir seu número de telefone para que outros usuários possam encontrar você</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_edit_text_hint">Digite o número de telefone</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_edit_text_hint">Digite o número de telefone</string>
|
||||||
@ -556,7 +564,7 @@
|
|||||||
<string name="previously_set">Definido anteriormente</string>
|
<string name="previously_set">Definido anteriormente</string>
|
||||||
<string name="raise_hand">Levantar mão</string>
|
<string name="raise_hand">Levantar mão</string>
|
||||||
<string name="reactions_tab_all">Todos</string>
|
<string name="reactions_tab_all">Todos</string>
|
||||||
<string name="read_storage_no_permission">O compartilhamento de arquivos do armazenamento não é possível sem permissões </string>
|
<string name="read_storage_no_permission">O compartilhamento de arquivos do armazenamento não é possível sem permissões</string>
|
||||||
<string name="record_active_info">A chamada está sendo gravada</string>
|
<string name="record_active_info">A chamada está sendo gravada</string>
|
||||||
<string name="record_cancel_start">Cancelar início da gravação</string>
|
<string name="record_cancel_start">Cancelar início da gravação</string>
|
||||||
<string name="record_failed_info">A gravação falhou. Entre em contato com o administrador.</string>
|
<string name="record_failed_info">A gravação falhou. Entre em contato com o administrador.</string>
|
||||||
@ -566,7 +574,7 @@
|
|||||||
<string name="record_stop_description">Encerrar gravação</string>
|
<string name="record_stop_description">Encerrar gravação</string>
|
||||||
<string name="record_stopping">Parando a gravação …</string>
|
<string name="record_stopping">Parando a gravação …</string>
|
||||||
<string name="recording_consent_all">O consentimento de gravação é necessário para todas as chamadas</string>
|
<string name="recording_consent_all">O consentimento de gravação é necessário para todas as chamadas</string>
|
||||||
<string name="recording_consent_description">A gravação pode incluir sua voz, vídeo da câmera e compartilhamento de tela. Seu consentimento é necessário antes de entrar na chamada. Você consente?</string>
|
<string name="recording_consent_description">A gravação pode incluir sua voz, vídeo da câmera e compartilhamento de tela. Seu consentimento é obrigatório antes de entrar na chamada. Você consente?</string>
|
||||||
<string name="recording_consent_for_conversation_description">Exigir consentimento de gravação antes de entrar em uma chamada nesta conversa</string>
|
<string name="recording_consent_for_conversation_description">Exigir consentimento de gravação antes de entrar em uma chamada nesta conversa</string>
|
||||||
<string name="recording_consent_for_conversation_title">Consentimento de gravação</string>
|
<string name="recording_consent_for_conversation_title">Consentimento de gravação</string>
|
||||||
<string name="recording_consent_title">A chamada pode ser gravada.</string>
|
<string name="recording_consent_title">A chamada pode ser gravada.</string>
|
||||||
@ -581,14 +589,14 @@
|
|||||||
<string name="scope_federated_title">Federado</string>
|
<string name="scope_federated_title">Federado</string>
|
||||||
<string name="scope_local_description">Visível apenas para pessoas nesta instância e convidados</string>
|
<string name="scope_local_description">Visível apenas para pessoas nesta instância e convidados</string>
|
||||||
<string name="scope_local_title">Local</string>
|
<string name="scope_local_title">Local</string>
|
||||||
<string name="scope_private_description">Visível apenas para pessoas que se correspondem por integração do número de telefone por meio do Bate Papo no celular</string>
|
<string name="scope_private_description">Visível apenas para as pessoas correspondentes por meio da integração do número de telefone pelo Talk no celular</string>
|
||||||
<string name="scope_private_title">Privado</string>
|
<string name="scope_private_title">Privado</string>
|
||||||
<string name="scope_published_description">Sincronize com servidores confiáveis e com o catálogo de endereço público e global</string>
|
<string name="scope_published_description">Sincronizar com servidores confiáveis e com o catálogo de endereços público e global</string>
|
||||||
<string name="scope_published_title">Publicado</string>
|
<string name="scope_published_title">Publicado</string>
|
||||||
<string name="scope_toggle">Alternância de escopo</string>
|
<string name="scope_toggle">Alternância de escopo</string>
|
||||||
<string name="scope_toggle_description">Alterar o nível de privacidade %1$s</string>
|
<string name="scope_toggle_description">Alterar o nível de privacidade de %1$s</string>
|
||||||
<string name="scroll_to_bottom">Rolar para baixo</string>
|
<string name="scroll_to_bottom">Rolar até o final</string>
|
||||||
<string name="search_icon">Ícone pesquisar</string>
|
<string name="search_icon">Ícone de Pesquisa</string>
|
||||||
<string name="secondsAgo">segundos atrás</string>
|
<string name="secondsAgo">segundos atrás</string>
|
||||||
<string name="selected_list_item">Selecionado</string>
|
<string name="selected_list_item">Selecionado</string>
|
||||||
<string name="send_email">Enviar e-mail</string>
|
<string name="send_email">Enviar e-mail</string>
|
||||||
@ -597,35 +605,35 @@
|
|||||||
<string name="send_to_three_dots">Enviar para …</string>
|
<string name="send_to_three_dots">Enviar para …</string>
|
||||||
<string name="send_without_notification">Enviar sem notificação</string>
|
<string name="send_without_notification">Enviar sem notificação</string>
|
||||||
<string name="set">Definir</string>
|
<string name="set">Definir</string>
|
||||||
<string name="set_avatar_from_camera">Definir avatar da câmera</string>
|
<string name="set_avatar_from_camera">Definir avatar a partir da câmera</string>
|
||||||
<string name="set_status">Definir status</string>
|
<string name="set_status">Definir status</string>
|
||||||
<string name="set_status_message">Definir mensagem de status</string>
|
<string name="set_status_message">Definir mensagem de status</string>
|
||||||
<string name="share">Compartilhar </string>
|
<string name="share">Compartilhar</string>
|
||||||
<string name="share_link_to_conversation">Participe da conversa %1$s em %2$s</string>
|
<string name="share_link_to_conversation">Entrar na conversa %1$s em %2$s</string>
|
||||||
<string name="shared_items_audio">Áudio</string>
|
<string name="shared_items_audio">Áudio</string>
|
||||||
<string name="shared_items_file">Arquivo</string>
|
<string name="shared_items_file">Arquivo</string>
|
||||||
<string name="shared_items_media">Mídia</string>
|
<string name="shared_items_media">Mídia</string>
|
||||||
<string name="shared_items_other">Outro</string>
|
<string name="shared_items_other">Outro</string>
|
||||||
<string name="shared_items_poll">Enquete</string>
|
<string name="shared_items_poll">Enquete</string>
|
||||||
<string name="shared_items_recording">Call recording</string>
|
<string name="shared_items_recording">Gravação de chamada</string>
|
||||||
<string name="shared_items_voice">Voz</string>
|
<string name="shared_items_voice">Voz</string>
|
||||||
<string name="show_ban_reason">Mostrar motivo do banimento</string>
|
<string name="show_ban_reason">Mostrar motivo do banimento</string>
|
||||||
<string name="show_banned_participants">Mostrar participantes banidos</string>
|
<string name="show_banned_participants">Mostrar participantes banidos</string>
|
||||||
<string name="starred">Favorito</string>
|
<string name="starred">Favorito</string>
|
||||||
<string name="startCallForbidden">Você não tem permissão para iniciar uma ligação</string>
|
<string name="startCallForbidden">Você não tem permissão para iniciar uma chamada</string>
|
||||||
<string name="started_a_call">iniciou uma chamada</string>
|
<string name="started_a_call">iniciou uma chamada</string>
|
||||||
<string name="status_message">Mensagem de status</string>
|
<string name="status_message">Mensagem de status</string>
|
||||||
<string name="status_reverted">Status Revertido</string>
|
<string name="status_reverted">Status Revertido</string>
|
||||||
<string name="switch_to_breakout_room">Mudar para a sala temática</string>
|
<string name="switch_to_breakout_room">Mudar para a sala temática</string>
|
||||||
<string name="switch_to_main_room">Mudar para a sala principal</string>
|
<string name="switch_to_main_room">Mudar para a sala principal</string>
|
||||||
<string name="take_photo">Tirar uma fotos</string>
|
<string name="take_photo">Tirar uma foto</string>
|
||||||
<string name="take_photo_error_deleting_picture">Erro ao tirar foto</string>
|
<string name="take_photo_error_deleting_picture">Erro ao tirar foto</string>
|
||||||
<string name="take_photo_permission">Tirar uma foto não é possível sem permissões</string>
|
<string name="take_photo_permission">Tirar uma foto não é possível sem permissões</string>
|
||||||
<string name="take_photo_retake_photo">Tirar a foto novamente</string>
|
<string name="take_photo_retake_photo">Tirar a foto novamente</string>
|
||||||
<string name="take_photo_send">Enviar</string>
|
<string name="take_photo_send">Enviar</string>
|
||||||
<string name="take_photo_switch_camera">Trocar câmera</string>
|
<string name="take_photo_switch_camera">Trocar câmera</string>
|
||||||
<string name="take_photo_toggle_crop">Cortar foto</string>
|
<string name="take_photo_toggle_crop">Cortar foto</string>
|
||||||
<string name="take_photo_toggle_lowres">Reduza o tamanho da imagem</string>
|
<string name="take_photo_toggle_lowres">Reduzir tamanho da imagem</string>
|
||||||
<string name="take_photo_toggle_torch">Alternar a lanterna</string>
|
<string name="take_photo_toggle_torch">Alternar a lanterna</string>
|
||||||
<string name="thirtyMinutes">30 minutos</string>
|
<string name="thirtyMinutes">30 minutos</string>
|
||||||
<string name="thisWeek">Esta semana</string>
|
<string name="thisWeek">Esta semana</string>
|
||||||
@ -636,18 +644,18 @@
|
|||||||
<string name="translate">Traduzir</string>
|
<string name="translate">Traduzir</string>
|
||||||
<string name="translation">Tradução</string>
|
<string name="translation">Tradução</string>
|
||||||
<string name="translation_copy_translated_text">Copiar texto traduzido</string>
|
<string name="translation_copy_translated_text">Copiar texto traduzido</string>
|
||||||
<string name="translation_detect_language">Detect language</string>
|
<string name="translation_detect_language">Detectar idioma</string>
|
||||||
<string name="translation_device_settings">Configuração dos dispositivos</string>
|
<string name="translation_device_settings">Configurações do dispositivo</string>
|
||||||
<string name="translation_error_message">Não foi possível detectar o idioma</string>
|
<string name="translation_error_message">Não foi possível detectar o idioma</string>
|
||||||
<string name="translation_error_title">Translation failed</string>
|
<string name="translation_error_title">Falha na tradução</string>
|
||||||
<string name="translation_from">De</string>
|
<string name="translation_from">De</string>
|
||||||
<string name="translation_to">Para</string>
|
<string name="translation_to">Para</string>
|
||||||
<string name="typing_1_other">e 1 outro está digitando…</string>
|
<string name="typing_1_other">e 1 outro está digitando …</string>
|
||||||
<string name="typing_are_typing">estão digitando …</string>
|
<string name="typing_are_typing">estão digitando …</string>
|
||||||
<string name="typing_is_typing">está digitando …</string>
|
<string name="typing_is_typing">está digitando …</string>
|
||||||
<string name="typing_x_others">e %1$s outros estão digitando...</string>
|
<string name="typing_x_others">e %1$s outros estão digitando …</string>
|
||||||
<string name="unarchive_conversation">Desarquivar conversa</string>
|
<string name="unarchive_conversation">Desarquivar conversa</string>
|
||||||
<string name="unarchive_hint">Uma vez que uma conversa não for marcada, ela será mostrada por padrão novamente.</string>
|
<string name="unarchive_hint">Quando uma conversa for desarquivada, ela será mostrada novamente por padrão.</string>
|
||||||
<string name="unarchived_conversation">%1$s desarquivado</string>
|
<string name="unarchived_conversation">%1$s desarquivado</string>
|
||||||
<string name="unban">Desbanir</string>
|
<string name="unban">Desbanir</string>
|
||||||
<string name="unread">Não lido</string>
|
<string name="unread">Não lido</string>
|
||||||
@ -666,7 +674,7 @@
|
|||||||
<string name="userinfo_error_text">Falha ao recuperar informações pessoais do usuário.</string>
|
<string name="userinfo_error_text">Falha ao recuperar informações pessoais do usuário.</string>
|
||||||
<string name="userinfo_no_info_headline">Nenhuma informação pessoal definida</string>
|
<string name="userinfo_no_info_headline">Nenhuma informação pessoal definida</string>
|
||||||
<string name="userinfo_no_info_text">Adicione nome, foto e detalhes de contato em sua página de perfil.</string>
|
<string name="userinfo_no_info_text">Adicione nome, foto e detalhes de contato em sua página de perfil.</string>
|
||||||
<string name="video_call">Vídeo chamada</string>
|
<string name="video_call">Videochamada</string>
|
||||||
<string name="whats_your_status">Qual é o seu status?</string>
|
<string name="whats_your_status">Qual é o seu status?</string>
|
||||||
<plurals name="see_similar_system_messages">
|
<plurals name="see_similar_system_messages">
|
||||||
<item quantity="one">Veja %d mensagem semelhante</item>
|
<item quantity="one">Veja %d mensagem semelhante</item>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Редактирование</string>
|
<string name= "nc_edit">Редактирование</string>
|
||||||
|
<string name="add_participants">Добавить</string>
|
||||||
<string name="add_to_notes">Добавить в заметки</string>
|
<string name="add_to_notes">Добавить в заметки</string>
|
||||||
<string name="appbar_search_in">Искать в %s</string>
|
<string name="appbar_search_in">Искать в %s</string>
|
||||||
<string name="archive_conversation">Архивировать обсуждение</string>
|
<string name="archive_conversation">Архивировать обсуждение</string>
|
||||||
@ -54,6 +55,7 @@
|
|||||||
<string name="leave_call">Покинуть вызов</string>
|
<string name="leave_call">Покинуть вызов</string>
|
||||||
<string name="left_conversation">Вы покинули чат %1$s </string>
|
<string name="left_conversation">Вы покинули чат %1$s </string>
|
||||||
<string name="load_more_results">Показать больше результатов</string>
|
<string name="load_more_results">Показать больше результатов</string>
|
||||||
|
<string name="local_time">Местное время: %1$s</string>
|
||||||
<string name="lock_conversation">Заблокировать обсуждение</string>
|
<string name="lock_conversation">Заблокировать обсуждение</string>
|
||||||
<string name="lock_symbol">Символ блокировки</string>
|
<string name="lock_symbol">Символ блокировки</string>
|
||||||
<string name="lower_hand">Опустить руку</string>
|
<string name="lower_hand">Опустить руку</string>
|
||||||
@ -159,6 +161,7 @@
|
|||||||
<string name="nc_delete_conversation_more">При удалении беседы, она будет также удалена у других участников</string>
|
<string name="nc_delete_conversation_more">При удалении беседы, она будет также удалена у других участников</string>
|
||||||
<string name="nc_delete_message">Удалить</string>
|
<string name="nc_delete_message">Удалить</string>
|
||||||
<string name="nc_delete_message_leaked_to_matterbridge">Сообщение удалено, но его содержимое могло быть прочитано другими службами</string>
|
<string name="nc_delete_message_leaked_to_matterbridge">Сообщение удалено, но его содержимое могло быть прочитано другими службами</string>
|
||||||
|
<string name="nc_delete_now">Удалить сейчас</string>
|
||||||
<string name="nc_deleted_user">Пользователь %1$s был удален</string>
|
<string name="nc_deleted_user">Пользователь %1$s был удален</string>
|
||||||
<string name="nc_demote">Исключить из модераторов</string>
|
<string name="nc_demote">Исключить из модераторов</string>
|
||||||
<string name="nc_description_record_voice">Запись голосового сообщения</string>
|
<string name="nc_description_record_voice">Запись голосового сообщения</string>
|
||||||
@ -242,9 +245,10 @@
|
|||||||
<string name="nc_hint_enter_a_message">Напишите сообщение …</string>
|
<string name="nc_hint_enter_a_message">Напишите сообщение …</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Игнорировать оптимизацию батареи</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Игнорировать оптимизацию батареи</string>
|
||||||
<string name="nc_important_conversation">Важное обсуждение</string>
|
<string name="nc_important_conversation">Важное обсуждение</string>
|
||||||
<string name="nc_important_conversation_desc">Уведомления в этом чате имеют приоритет над настройками режима \"Не беспокоить\" </string>
|
<string name="nc_important_conversation_desc">Статус «Не беспокоить» игнорируется для важных обсуждений</string>
|
||||||
<string name="nc_invitations">Приглашения</string>
|
<string name="nc_invitations">Приглашения</string>
|
||||||
<string name="nc_join_open_conversations">Присоединиться к открытым обсуждениям</string>
|
<string name="nc_join_open_conversations">Присоединиться к открытым обсуждениям</string>
|
||||||
|
<string name="nc_keep">Сохранить</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Вам нужно назначить нового модератора перед тем, как покинуть обсуждение</string>
|
<string name="nc_last_moderator_leaving_room_warning">Вам нужно назначить нового модератора перед тем, как покинуть обсуждение</string>
|
||||||
<string name="nc_last_modified">%1$s | Последнее изменение: %2$s</string>
|
<string name="nc_last_modified">%1$s | Последнее изменение: %2$s</string>
|
||||||
<string name="nc_leave">Покинуть беседу</string>
|
<string name="nc_leave">Покинуть беседу</string>
|
||||||
@ -343,6 +347,8 @@
|
|||||||
<string name="nc_screen_lock_timeout_three_hundred">300</string>
|
<string name="nc_screen_lock_timeout_three_hundred">300</string>
|
||||||
<string name="nc_search">Поиск</string>
|
<string name="nc_search">Поиск</string>
|
||||||
<string name="nc_select_an_account">Выберите учётную запись</string>
|
<string name="nc_select_an_account">Выберите учётную запись</string>
|
||||||
|
<string name="nc_sensitive_conversation">Конфиденциальное обсуждение</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Предварительный просмотр сообщений будет отключен в списке обсуждений и уведомлениях</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s отправил(а) GIF.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s отправил(а) GIF.</string>
|
||||||
<string name="nc_sent_a_gif_you">Вы отправили GIF.</string>
|
<string name="nc_sent_a_gif_you">Вы отправили GIF.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s отправил(а) файл видео.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s отправил(а) файл видео.</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Modìfica</string>
|
<string name= "nc_edit">Modìfica</string>
|
||||||
|
<string name="add_participants">Agiunghe</string>
|
||||||
<string name="appbar_search_in">Chirca in %s</string>
|
<string name="appbar_search_in">Chirca in %s</string>
|
||||||
<string name="archived">Archiviadu</string>
|
<string name="archived">Archiviadu</string>
|
||||||
<string name="audio_output_phone">Telèfonu</string>
|
<string name="audio_output_phone">Telèfonu</string>
|
||||||
@ -155,7 +156,6 @@
|
|||||||
<string name="nc_guest_access_resend_invitations">Torra a imbiare is invitos</string>
|
<string name="nc_guest_access_resend_invitations">Torra a imbiare is invitos</string>
|
||||||
<string name="nc_guest_access_share_link">Cumpartzi su ligòngiu de sa resonada</string>
|
<string name="nc_guest_access_share_link">Cumpartzi su ligòngiu de sa resonada</string>
|
||||||
<string name="nc_important_conversation">Tzarrada importante</string>
|
<string name="nc_important_conversation">Tzarrada importante</string>
|
||||||
<string name="nc_important_conversation_desc">Is notìficas in custa resonada ant a ignorare sa cunfiguratzione No istorbare</string>
|
|
||||||
<string name="nc_keep">Mantene</string>
|
<string name="nc_keep">Mantene</string>
|
||||||
<string name="nc_last_modified">%1$s | Ùrtima modìfica: %2$s</string>
|
<string name="nc_last_modified">%1$s | Ùrtima modìfica: %2$s</string>
|
||||||
<string name="nc_leave">Lassa resonada</string>
|
<string name="nc_leave">Lassa resonada</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Upraviť</string>
|
<string name= "nc_edit">Upraviť</string>
|
||||||
|
<string name="add_participants">Pridať</string>
|
||||||
<string name="add_to_notes">Pridať do poznámok</string>
|
<string name="add_to_notes">Pridať do poznámok</string>
|
||||||
<string name="added_to_favorites">Pridať konverzáciu %1$s k obľúbeným</string>
|
<string name="added_to_favorites">Pridať konverzáciu %1$s k obľúbeným</string>
|
||||||
<string name="appbar_search_in">Hľadať v %s</string>
|
<string name="appbar_search_in">Hľadať v %s</string>
|
||||||
@ -273,7 +274,6 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Optimalizácia batérie nie je ignorovaná. Toto by sa malo zmeniť, aby ste sa uistili, že upozornenia fungujú na pozadí! Kliknite na tlačidlo OK a vyberte možnosť Všetky aplikácie -> %1$s -> Neoptimalizovať</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Optimalizácia batérie nie je ignorovaná. Toto by sa malo zmeniť, aby ste sa uistili, že upozornenia fungujú na pozadí! Kliknite na tlačidlo OK a vyberte možnosť Všetky aplikácie -> %1$s -> Neoptimalizovať</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorovať optimalizáciu batérie</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorovať optimalizáciu batérie</string>
|
||||||
<string name="nc_important_conversation">Dôležitá konverzácia</string>
|
<string name="nc_important_conversation">Dôležitá konverzácia</string>
|
||||||
<string name="nc_important_conversation_desc">Oznámenia v tejto konverzácii sa prepíšu nastavením Nerušiť</string>
|
|
||||||
<string name="nc_invitations">Pozvánky</string>
|
<string name="nc_invitations">Pozvánky</string>
|
||||||
<string name="nc_join_open_conversations">Pripojiť sa k prebiehajúcim konverzáciam</string>
|
<string name="nc_join_open_conversations">Pripojiť sa k prebiehajúcim konverzáciam</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Skôr než budete môcť opustiť rozhovor, je potrebné niekomu odovzdať rolu moderátora.</string>
|
<string name="nc_last_moderator_leaving_room_warning">Skôr než budete môcť opustiť rozhovor, je potrebné niekomu odovzdať rolu moderátora.</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Uredi</string>
|
<string name= "nc_edit">Uredi</string>
|
||||||
|
<string name="add_participants">Dodaj</string>
|
||||||
<string name="appbar_search_in">Poišči v %s</string>
|
<string name="appbar_search_in">Poišči v %s</string>
|
||||||
<string name="archived">Arhivirano</string>
|
<string name="archived">Arhivirano</string>
|
||||||
<string name="audio_output_bluetooth">Bluetooth</string>
|
<string name="audio_output_bluetooth">Bluetooth</string>
|
||||||
@ -43,6 +44,7 @@
|
|||||||
<string name="invisible">Drugim nevidno</string>
|
<string name="invisible">Drugim nevidno</string>
|
||||||
<string name="leave_call">Zapusti klic</string>
|
<string name="leave_call">Zapusti klic</string>
|
||||||
<string name="load_more_results">Naloži več zadetkov</string>
|
<string name="load_more_results">Naloži več zadetkov</string>
|
||||||
|
<string name="local_time">Krajevni čas: %1$s</string>
|
||||||
<string name="lock_conversation">Zakleni pogovor</string>
|
<string name="lock_conversation">Zakleni pogovor</string>
|
||||||
<string name="lock_symbol">Simbol zaklepa</string>
|
<string name="lock_symbol">Simbol zaklepa</string>
|
||||||
<string name="lower_hand">Spusti roko</string>
|
<string name="lower_hand">Spusti roko</string>
|
||||||
@ -139,6 +141,7 @@
|
|||||||
<string name="nc_delete_conversation_more">Če izbrišete pogovor, bo ta izbrisan za vse udeležence.</string>
|
<string name="nc_delete_conversation_more">Če izbrišete pogovor, bo ta izbrisan za vse udeležence.</string>
|
||||||
<string name="nc_delete_message">Izbriši</string>
|
<string name="nc_delete_message">Izbriši</string>
|
||||||
<string name="nc_delete_message_leaked_to_matterbridge">Sporočilo je uspešno izbrisano, a je lahko že poslano na druge storitve.</string>
|
<string name="nc_delete_message_leaked_to_matterbridge">Sporočilo je uspešno izbrisano, a je lahko že poslano na druge storitve.</string>
|
||||||
|
<string name="nc_delete_now">Izbriši</string>
|
||||||
<string name="nc_demote">Ponižaj iz moderatorja</string>
|
<string name="nc_demote">Ponižaj iz moderatorja</string>
|
||||||
<string name="nc_description_record_voice">Posnemi glasovno sporočilo</string>
|
<string name="nc_description_record_voice">Posnemi glasovno sporočilo</string>
|
||||||
<string name="nc_description_send_message_button">Pošlji sporočilo</string>
|
<string name="nc_description_send_message_button">Pošlji sporočilo</string>
|
||||||
@ -201,9 +204,9 @@
|
|||||||
<string name="nc_guest_access_share_link">Omogoči souporabo povezave pogovora</string>
|
<string name="nc_guest_access_share_link">Omogoči souporabo povezave pogovora</string>
|
||||||
<string name="nc_hint_enter_a_message">Vpis sporočila …</string>
|
<string name="nc_hint_enter_a_message">Vpis sporočila …</string>
|
||||||
<string name="nc_important_conversation">Pomemben pogovor</string>
|
<string name="nc_important_conversation">Pomemben pogovor</string>
|
||||||
<string name="nc_important_conversation_desc">Prikaz obvestil v tem pogovoru onemogočil nastavitev Ne moti.</string>
|
|
||||||
<string name="nc_invitations">Povabila</string>
|
<string name="nc_invitations">Povabila</string>
|
||||||
<string name="nc_join_open_conversations">Pridruži se odprtemu pogovoru</string>
|
<string name="nc_join_open_conversations">Pridruži se odprtemu pogovoru</string>
|
||||||
|
<string name="nc_keep">Ohrani</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Pred odhodom iz pogovora je treba nekoga določiti za moderatorja.</string>
|
<string name="nc_last_moderator_leaving_room_warning">Pred odhodom iz pogovora je treba nekoga določiti za moderatorja.</string>
|
||||||
<string name="nc_last_modified">%1$s | Nazadnje spremenjeno: %2$s</string>
|
<string name="nc_last_modified">%1$s | Nazadnje spremenjeno: %2$s</string>
|
||||||
<string name="nc_leave">Zapusti pogovor</string>
|
<string name="nc_leave">Zapusti pogovor</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Измени</string>
|
<string name= "nc_edit">Измени</string>
|
||||||
|
<string name="add_participants">Додај</string>
|
||||||
<string name="add_to_notes">Додај у Белешке</string>
|
<string name="add_to_notes">Додај у Белешке</string>
|
||||||
<string name="added_to_favorites">Разговор %1$s је додат у омиљене</string>
|
<string name="added_to_favorites">Разговор %1$s је додат у омиљене</string>
|
||||||
<string name="appbar_search_in">Тражи у %s</string>
|
<string name="appbar_search_in">Тражи у %s</string>
|
||||||
@ -71,6 +72,7 @@
|
|||||||
<string name="leave_call">Напусти разговор</string>
|
<string name="leave_call">Напусти разговор</string>
|
||||||
<string name="left_conversation">Напустили сте разговор %1$s</string>
|
<string name="left_conversation">Напустили сте разговор %1$s</string>
|
||||||
<string name="load_more_results">Учитај још резултата</string>
|
<string name="load_more_results">Учитај још резултата</string>
|
||||||
|
<string name="local_time">Локално време: %1$s</string>
|
||||||
<string name="lock_conversation">Закључај разговор</string>
|
<string name="lock_conversation">Закључај разговор</string>
|
||||||
<string name="lock_symbol">Симбол катанца</string>
|
<string name="lock_symbol">Симбол катанца</string>
|
||||||
<string name="lower_hand">Спуштена рука</string>
|
<string name="lower_hand">Спуштена рука</string>
|
||||||
@ -283,7 +285,7 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Оптимизација батерије се не игнорише. Ово би требало да се промени тако да би обавештења могла да функционишу у позадини! Молимо вас да кликнете OK и изаберете „Све апликације” -> %1$s -> Не оптимизуј</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Оптимизација батерије се не игнорише. Ово би требало да се промени тако да би обавештења могла да функционишу у позадини! Молимо вас да кликнете OK и изаберете „Све апликације” -> %1$s -> Не оптимизуј</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Игнориши оптимизацију батерије</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Игнориши оптимизацију батерије</string>
|
||||||
<string name="nc_important_conversation">Битан разговор</string>
|
<string name="nc_important_conversation">Битан разговор</string>
|
||||||
<string name="nc_important_conversation_desc">Обавештења у овом разговору ће преиначити Не узнемиравај поставке.</string>
|
<string name="nc_important_conversation_desc">Кориснички статус „Не узнемиравај” се игнорише за важне разговоре</string>
|
||||||
<string name="nc_invalid_time">Неисправно време</string>
|
<string name="nc_invalid_time">Неисправно време</string>
|
||||||
<string name="nc_invitations">Позивнице</string>
|
<string name="nc_invitations">Позивнице</string>
|
||||||
<string name="nc_join_open_conversations">Придружи се отвореном разговору</string>
|
<string name="nc_join_open_conversations">Придружи се отвореном разговору</string>
|
||||||
@ -307,6 +309,10 @@
|
|||||||
<string name="nc_manual">Није постављено</string>
|
<string name="nc_manual">Није постављено</string>
|
||||||
<string name="nc_mark_as_read">Означи као прочитано</string>
|
<string name="nc_mark_as_read">Означи као прочитано</string>
|
||||||
<string name="nc_mark_as_unread">Означи као непрочитано</string>
|
<string name="nc_mark_as_unread">Означи као непрочитано</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Разговор је означен као важан</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Разговор више није означен као осетљив</string>
|
||||||
|
<string name="nc_mark_conversation_as_sensitive">Разговор је означен као осетљив</string>
|
||||||
|
<string name="nc_mark_conversation_as_unimportant">Разговор више није означен као важан</string>
|
||||||
<string name="nc_meeting_ended">Састанак је завршен</string>
|
<string name="nc_meeting_ended">Састанак је завршен</string>
|
||||||
<string name="nc_message_added_to_notes">У белешке је додата порука</string>
|
<string name="nc_message_added_to_notes">У белешке је додата порука</string>
|
||||||
<string name="nc_message_failed">Није успело</string>
|
<string name="nc_message_failed">Није успело</string>
|
||||||
@ -385,6 +391,7 @@
|
|||||||
<string name="nc_rename_confirm">Преименуј</string>
|
<string name="nc_rename_confirm">Преименуј</string>
|
||||||
<string name="nc_reply">Одговори</string>
|
<string name="nc_reply">Одговори</string>
|
||||||
<string name="nc_reply_privately">Одговори приватно</string>
|
<string name="nc_reply_privately">Одговори приватно</string>
|
||||||
|
<string name="nc_room_retention">Соба је успешно задржана</string>
|
||||||
<string name="nc_save_message">Сачувај</string>
|
<string name="nc_save_message">Сачувај</string>
|
||||||
<string name="nc_save_success">Успешно сачувано</string>
|
<string name="nc_save_success">Успешно сачувано</string>
|
||||||
<string name="nc_screen_lock_timeout_30">30 секунди</string>
|
<string name="nc_screen_lock_timeout_30">30 секунди</string>
|
||||||
@ -399,6 +406,8 @@
|
|||||||
<string name="nc_search">Тражи</string>
|
<string name="nc_search">Тражи</string>
|
||||||
<string name="nc_select_an_account">Изаберите налог</string>
|
<string name="nc_select_an_account">Изаберите налог</string>
|
||||||
<string name="nc_send_edit_message">Ажурирај поруку</string>
|
<string name="nc_send_edit_message">Ажурирај поруку</string>
|
||||||
|
<string name="nc_sensitive_conversation">Осетљиви разговор</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Преглед поруке ће се сакрити у листи разговора и у обавештењима</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s је послао GIF.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s је послао GIF.</string>
|
||||||
<string name="nc_sent_a_gif_you">Послали сте GIF.</string>
|
<string name="nc_sent_a_gif_you">Послали сте GIF.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s је послао видео.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s је послао видео.</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Redigera</string>
|
<string name= "nc_edit">Redigera</string>
|
||||||
|
<string name="add_participants">Lägg till</string>
|
||||||
<string name="add_to_notes">Lägg till i anteckningar</string>
|
<string name="add_to_notes">Lägg till i anteckningar</string>
|
||||||
<string name="added_to_favorites">Lade till konversationen %1$s till favoriter</string>
|
<string name="added_to_favorites">Lade till konversationen %1$s till favoriter</string>
|
||||||
<string name="appbar_search_in">Sök i %s</string>
|
<string name="appbar_search_in">Sök i %s</string>
|
||||||
@ -283,7 +284,7 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Batterioptimering ignoreras inte. Detta bör ändras för att säkerställa att aviseringar fungerar i bakgrunden! Klicka på OK och välj \"Alla appar\" -> %1$s -> Optimera inte</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Batterioptimering ignoreras inte. Detta bör ändras för att säkerställa att aviseringar fungerar i bakgrunden! Klicka på OK och välj \"Alla appar\" -> %1$s -> Optimera inte</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Ignorera batterioptimering</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Ignorera batterioptimering</string>
|
||||||
<string name="nc_important_conversation">Viktigt samtal</string>
|
<string name="nc_important_conversation">Viktigt samtal</string>
|
||||||
<string name="nc_important_conversation_desc">Meddelanden i den här konversationen kommer att åsidosätta Stör inte-inställningar</string>
|
<string name="nc_important_conversation_desc">Användarstatus \"Stör ej\" ignoreras för viktiga konversationer</string>
|
||||||
<string name="nc_invalid_time">Ogiltig tid</string>
|
<string name="nc_invalid_time">Ogiltig tid</string>
|
||||||
<string name="nc_invitations">Inbjudningar</string>
|
<string name="nc_invitations">Inbjudningar</string>
|
||||||
<string name="nc_join_open_conversations">Gå med i öppna konversationer</string>
|
<string name="nc_join_open_conversations">Gå med i öppna konversationer</string>
|
||||||
@ -307,6 +308,10 @@
|
|||||||
<string name="nc_manual">Inte inställd</string>
|
<string name="nc_manual">Inte inställd</string>
|
||||||
<string name="nc_mark_as_read">Markera som läst</string>
|
<string name="nc_mark_as_read">Markera som läst</string>
|
||||||
<string name="nc_mark_as_unread">Markera som oläst</string>
|
<string name="nc_mark_as_unread">Markera som oläst</string>
|
||||||
|
<string name="nc_mark_conversation_as_important">Konversationen markerades som viktig</string>
|
||||||
|
<string name="nc_mark_conversation_as_insensitive">Konversationen avmarkerades som känslig</string>
|
||||||
|
<string name="nc_mark_conversation_as_sensitive">Konversationen markerades som känslig</string>
|
||||||
|
<string name="nc_mark_conversation_as_unimportant">Konversationen avmarkerades som viktig</string>
|
||||||
<string name="nc_meeting_ended">Möte avslutat</string>
|
<string name="nc_meeting_ended">Möte avslutat</string>
|
||||||
<string name="nc_message_added_to_notes">Meddelande tillagt i anteckningar</string>
|
<string name="nc_message_added_to_notes">Meddelande tillagt i anteckningar</string>
|
||||||
<string name="nc_message_failed">Misslyckades</string>
|
<string name="nc_message_failed">Misslyckades</string>
|
||||||
@ -385,6 +390,7 @@
|
|||||||
<string name="nc_rename_confirm">Döp om</string>
|
<string name="nc_rename_confirm">Döp om</string>
|
||||||
<string name="nc_reply">Svara</string>
|
<string name="nc_reply">Svara</string>
|
||||||
<string name="nc_reply_privately">Svara privat</string>
|
<string name="nc_reply_privately">Svara privat</string>
|
||||||
|
<string name="nc_room_retention">Rummet har behållits framgångsrikt</string>
|
||||||
<string name="nc_save_message">Spara</string>
|
<string name="nc_save_message">Spara</string>
|
||||||
<string name="nc_save_success">Sparad</string>
|
<string name="nc_save_success">Sparad</string>
|
||||||
<string name="nc_screen_lock_timeout_30">30 sekunder</string>
|
<string name="nc_screen_lock_timeout_30">30 sekunder</string>
|
||||||
@ -399,6 +405,8 @@
|
|||||||
<string name="nc_search">Sök</string>
|
<string name="nc_search">Sök</string>
|
||||||
<string name="nc_select_an_account">Välj ett konto</string>
|
<string name="nc_select_an_account">Välj ett konto</string>
|
||||||
<string name="nc_send_edit_message">Uppdatera meddelande</string>
|
<string name="nc_send_edit_message">Uppdatera meddelande</string>
|
||||||
|
<string name="nc_sensitive_conversation">Känslig konversation</string>
|
||||||
|
<string name="nc_sensitive_conversation_hint">Förhandsvisning av meddelanden kommer att inaktiveras i konversationslistan och i aviseringar</string>
|
||||||
<string name="nc_sent_a_gif" formatted="true">%1$s skickade en GIF.</string>
|
<string name="nc_sent_a_gif" formatted="true">%1$s skickade en GIF.</string>
|
||||||
<string name="nc_sent_a_gif_you">Du skickade en GIF.</string>
|
<string name="nc_sent_a_gif_you">Du skickade en GIF.</string>
|
||||||
<string name="nc_sent_a_video" formatted="true">%1$s skickade en video.</string>
|
<string name="nc_sent_a_video" formatted="true">%1$s skickade en video.</string>
|
||||||
@ -534,6 +542,7 @@
|
|||||||
<string name="online_status">Online-status</string>
|
<string name="online_status">Online-status</string>
|
||||||
<string name="openConversations">Öppna konversationer</string>
|
<string name="openConversations">Öppna konversationer</string>
|
||||||
<string name="open_in_files_app">Öppna i appen Filer</string>
|
<string name="open_in_files_app">Öppna i appen Filer</string>
|
||||||
|
<string name="open_notes">Öppna anteckningar</string>
|
||||||
<string name="play_pause_voice_message">Spela/pausa röstmeddelande</string>
|
<string name="play_pause_voice_message">Spela/pausa röstmeddelande</string>
|
||||||
<string name="playback_speed_control">Kontroll av uppspelningshastighet</string>
|
<string name="playback_speed_control">Kontroll av uppspelningshastighet</string>
|
||||||
<string name="polls_add_option">Lägg till alternativ</string>
|
<string name="polls_add_option">Lägg till alternativ</string>
|
||||||
@ -670,6 +679,10 @@
|
|||||||
<item quantity="one">Se %d liknande meddelande</item>
|
<item quantity="one">Se %d liknande meddelande</item>
|
||||||
<item quantity="other">Se %d liknande meddelanden</item>
|
<item quantity="other">Se %d liknande meddelanden</item>
|
||||||
</plurals>
|
</plurals>
|
||||||
|
<plurals name="nc_conversation_auto_delete_info">
|
||||||
|
<item quantity="one">Den här konversationen kommer automatiskt att tas bort för alla om %1$d dag utan aktivitet</item>
|
||||||
|
<item quantity="other">Den här konversationen kommer automatiskt att tas bort för alla om %1$d dagar utan aktivitet</item>
|
||||||
|
</plurals>
|
||||||
<plurals name="polls_amount_voters">
|
<plurals name="polls_amount_voters">
|
||||||
<item quantity="one">%d röst</item>
|
<item quantity="one">%d röst</item>
|
||||||
<item quantity="other">%d röster</item>
|
<item quantity="other">%d röster</item>
|
||||||
|
@ -1,11 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Düzenle</string>
|
<string name= "nc_edit">Düzenle</string>
|
||||||
|
<string name="add_participants">Ekle</string>
|
||||||
<string name="add_to_notes">Notlar uygulamasına ekle</string>
|
<string name="add_to_notes">Notlar uygulamasına ekle</string>
|
||||||
<string name="added_to_favorites">%1$s görüşmesi sık kullanılara eklendi</string>
|
<string name="added_to_favorites">%1$s görüşmesi sık kullanılara eklendi</string>
|
||||||
<string name="appbar_search_in">%s içinde arama</string>
|
<string name="appbar_search_in">%s içinde ara</string>
|
||||||
<string name="archive_conversation">Görüşmeyi arşivle</string>
|
<string name="archive_conversation">Görüşmeyi arşivle</string>
|
||||||
<string name="archive_hint">Bir görüşme arşivlendiğinde, varsayılan olarak gizlenir. Arşivlenmiş görüşmeleri görüntülemek için \"Arşivlenmiş\" süzgecini seçin. Doğrudan anmalar yine de alınır.</string>
|
<string name="archive_hint">Bir görüşme arşivlendiğinde, varsayılan olarak gizlenir. Arşivlenmiş görüşmeleri görüntülemek için \"Arşivlenmiş\" süzgecini seçin. Doğrudan bahsetmeler yine de alınır.</string>
|
||||||
<string name="archived">Arşivlenmiş</string>
|
<string name="archived">Arşivlenmiş</string>
|
||||||
<string name="archived_conversation">%1$s arşivlendi</string>
|
<string name="archived_conversation">%1$s arşivlendi</string>
|
||||||
<string name="audio_call">Sesli çağrı</string>
|
<string name="audio_call">Sesli çağrı</string>
|
||||||
@ -103,7 +104,7 @@
|
|||||||
<string name="nc_all_ok_operation">Hepsi tamam!</string>
|
<string name="nc_all_ok_operation">Hepsi tamam!</string>
|
||||||
<string name="nc_attendee_pin">Pin: %1$s</string>
|
<string name="nc_attendee_pin">Pin: %1$s</string>
|
||||||
<string name="nc_biometric_unlock">%1$s kilidini aç</string>
|
<string name="nc_biometric_unlock">%1$s kilidini aç</string>
|
||||||
<string name="nc_bluetooth_permission_hint">Bluetooth hoparlörleri kullanıma almak için lütfen \"Yakındaki aygıtlar\" izni verin.</string>
|
<string name="nc_bluetooth_permission_hint">Bluetooth hoparlörleri etkinleştirmek için lütfen \"Yakındaki aygıtlar\" izni verin.</string>
|
||||||
<string name="nc_call_button_content_description_answer_video_call">Görüntülü çağrı olarak yanıtla</string>
|
<string name="nc_call_button_content_description_answer_video_call">Görüntülü çağrı olarak yanıtla</string>
|
||||||
<string name="nc_call_button_content_description_answer_voice_only">Yalnızca sesli çağrı olarak yanıtla</string>
|
<string name="nc_call_button_content_description_answer_voice_only">Yalnızca sesli çağrı olarak yanıtla</string>
|
||||||
<string name="nc_call_button_content_description_audio_output">Ses çıkışını değiştir</string>
|
<string name="nc_call_button_content_description_audio_output">Ses çıkışını değiştir</string>
|
||||||
@ -145,7 +146,7 @@
|
|||||||
<string name="nc_common_copy">Kopyala</string>
|
<string name="nc_common_copy">Kopyala</string>
|
||||||
<string name="nc_common_copy_success">Panoya kopyalandı</string>
|
<string name="nc_common_copy_success">Panoya kopyalandı</string>
|
||||||
<string name="nc_common_create">Ekle</string>
|
<string name="nc_common_create">Ekle</string>
|
||||||
<string name="nc_common_disabled">Kullanımdan kaldırılmış</string>
|
<string name="nc_common_disabled">Devre Dışı</string>
|
||||||
<string name="nc_common_dismiss">Yok say</string>
|
<string name="nc_common_dismiss">Yok say</string>
|
||||||
<string name="nc_common_error_sorry">Ne yazık ki bir sorun çıktı!</string>
|
<string name="nc_common_error_sorry">Ne yazık ki bir sorun çıktı!</string>
|
||||||
<string name="nc_common_more_options">Diğer seçenekler</string>
|
<string name="nc_common_more_options">Diğer seçenekler</string>
|
||||||
@ -183,7 +184,7 @@
|
|||||||
<string name="nc_diagnose_account_server">Sunucu</string>
|
<string name="nc_diagnose_account_server">Sunucu</string>
|
||||||
<string name="nc_diagnose_account_server_notification_app">Sunucu bildirimi uygulaması kurulmuş mu?</string>
|
<string name="nc_diagnose_account_server_notification_app">Sunucu bildirimi uygulaması kurulmuş mu?</string>
|
||||||
<string name="nc_diagnose_account_user_name">Kullanıcı adı</string>
|
<string name="nc_diagnose_account_user_name">Kullanıcı adı</string>
|
||||||
<string name="nc_diagnose_account_user_status_enabled">Kullanıcı durumu kullanıma alınmış mı?</string>
|
<string name="nc_diagnose_account_user_status_enabled">Kullanıcı durumu etkinleştirilmiş mı?</string>
|
||||||
<string name="nc_diagnose_android_version_title">Android sürümü</string>
|
<string name="nc_diagnose_android_version_title">Android sürümü</string>
|
||||||
<string name="nc_diagnose_app_category_title">Uygulama</string>
|
<string name="nc_diagnose_app_category_title">Uygulama</string>
|
||||||
<string name="nc_diagnose_app_name_title">Uygulama adı</string>
|
<string name="nc_diagnose_app_name_title">Uygulama adı</string>
|
||||||
@ -209,11 +210,11 @@
|
|||||||
<string name="nc_diagnose_latest_push_registration_at_server_fail">Henüz sunucuda kaydedilmemiş</string>
|
<string name="nc_diagnose_latest_push_registration_at_server_fail">Henüz sunucuda kaydedilmemiş</string>
|
||||||
<string name="nc_diagnose_meta_category_title">Üst veri bilgileri</string>
|
<string name="nc_diagnose_meta_category_title">Üst veri bilgileri</string>
|
||||||
<string name="nc_diagnose_meta_system_report_date">Sistem raporu hazırlama</string>
|
<string name="nc_diagnose_meta_system_report_date">Sistem raporu hazırlama</string>
|
||||||
<string name="nc_diagnose_notification_calls_channel_permission">Çağrı bildirimi kanalı kullanıma alınmış mı?</string>
|
<string name="nc_diagnose_notification_calls_channel_permission">Çağrı bildirimi kanalı etkinleştirilmiş mı?</string>
|
||||||
<string name="nc_diagnose_notification_messages_channel_permission">İleti bildirimi kanalı kullanıma alınmış mı?</string>
|
<string name="nc_diagnose_notification_messages_channel_permission">İleti bildirimi kanalı etkinleştirilmiş mı?</string>
|
||||||
<string name="nc_diagnose_notification_permission">Bildirim izinleri</string>
|
<string name="nc_diagnose_notification_permission">Bildirim izinleri</string>
|
||||||
<string name="nc_diagnose_phone_category_title">Telefon</string>
|
<string name="nc_diagnose_phone_category_title">Telefon</string>
|
||||||
<string name="nc_diagnose_server_talk_version">Sunucunun Konuş sürümü</string>
|
<string name="nc_diagnose_server_talk_version">Sunucunun Talk sürümü</string>
|
||||||
<string name="nc_diagnose_server_version">Sunucu sürümü</string>
|
<string name="nc_diagnose_server_version">Sunucu sürümü</string>
|
||||||
<string name="nc_diagnose_signaling_mode_extern">Dış</string>
|
<string name="nc_diagnose_signaling_mode_extern">Dış</string>
|
||||||
<string name="nc_diagnose_signaling_mode_intern">İç</string>
|
<string name="nc_diagnose_signaling_mode_intern">İç</string>
|
||||||
@ -223,7 +224,7 @@
|
|||||||
<string name="nc_dialog_outdated_client">Uygulama sürümü çok eski</string>
|
<string name="nc_dialog_outdated_client">Uygulama sürümü çok eski</string>
|
||||||
<string name="nc_dialog_outdated_client_description">Uygulama çok eski ve artık bu sunucu tarafından desteklenmiyor. Lütfen güncelleyin.</string>
|
<string name="nc_dialog_outdated_client_description">Uygulama çok eski ve artık bu sunucu tarafından desteklenmiyor. Lütfen güncelleyin.</string>
|
||||||
<string name="nc_dialog_outdated_client_option_update">Güncelle</string>
|
<string name="nc_dialog_outdated_client_option_update">Güncelle</string>
|
||||||
<string name="nc_dialog_reauth_or_delete">Bu hesabı yeniden kullanıma almak ya da silmek ister misiniz?</string>
|
<string name="nc_dialog_reauth_or_delete">Bu hesabı yeniden etkinleştirmek ya da silmek ister misiniz?</string>
|
||||||
<string name="nc_dialog_save_to_storage_content">Bu ortamı depolama alanına kaydetmek, aygıtınızdaki diğer uygulamaların da buna erişmesine izin verir.</string>
|
<string name="nc_dialog_save_to_storage_content">Bu ortamı depolama alanına kaydetmek, aygıtınızdaki diğer uygulamaların da buna erişmesine izin verir.</string>
|
||||||
<string name="nc_dialog_save_to_storage_continue">İlerlemek istiyor musunuz?</string>
|
<string name="nc_dialog_save_to_storage_continue">İlerlemek istiyor musunuz?</string>
|
||||||
<string name="nc_dialog_save_to_storage_no">Hayır</string>
|
<string name="nc_dialog_save_to_storage_no">Hayır</string>
|
||||||
@ -263,8 +264,8 @@
|
|||||||
<string name="nc_group">Grup</string>
|
<string name="nc_group">Grup</string>
|
||||||
<string name="nc_guest">Konuk</string>
|
<string name="nc_guest">Konuk</string>
|
||||||
<string name="nc_guest_access">Konuk erişimi</string>
|
<string name="nc_guest_access">Konuk erişimi</string>
|
||||||
<string name="nc_guest_access_allow_failed">Konuk erişimi kullanıma alınamaz ya da kullanımdan kaldırılamaz.</string>
|
<string name="nc_guest_access_allow_failed">Konuk erişimi etkinleştirilemez ya da devre dışı bırakılamaz.</string>
|
||||||
<string name="nc_guest_access_allow_summary">Bu seçenek kullanıma alındığında, konuklar bu görüşmeyi herkese açık bir katılma bağlantısı ile paylaşabilir.</string>
|
<string name="nc_guest_access_allow_summary">Bu seçenek etkinse, konuklar bu görüşmeyi herkese açık bir katılma bağlantısı ile paylaşabilir.</string>
|
||||||
<string name="nc_guest_access_allow_title">Konuklar katılabilsin</string>
|
<string name="nc_guest_access_allow_title">Konuklar katılabilsin</string>
|
||||||
<string name="nc_guest_access_password_dialog_hint">Bir parola yazın</string>
|
<string name="nc_guest_access_password_dialog_hint">Bir parola yazın</string>
|
||||||
<string name="nc_guest_access_password_dialog_title">Konuk erişimi parolası</string>
|
<string name="nc_guest_access_password_dialog_title">Konuk erişimi parolası</string>
|
||||||
@ -279,7 +280,6 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">Pil iyileştirmesi yok sayılmıyor. Bildirimlerin arka planda çalıştığından emin olmak için bu durum değiştirilmelidir! Lütfen Tamam üzerine tıklayın ve \"Tüm uygulamalar\" -> %1$s -> İyileştirilmesin seçeneğini seçin</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">Pil iyileştirmesi yok sayılmıyor. Bildirimlerin arka planda çalıştığından emin olmak için bu durum değiştirilmelidir! Lütfen Tamam üzerine tıklayın ve \"Tüm uygulamalar\" -> %1$s -> İyileştirilmesin seçeneğini seçin</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">Pil iyileştirmesi yok sayılsın</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">Pil iyileştirmesi yok sayılsın</string>
|
||||||
<string name="nc_important_conversation">Önemli görüşme</string>
|
<string name="nc_important_conversation">Önemli görüşme</string>
|
||||||
<string name="nc_important_conversation_desc">Bu görüşmedeki bildirimler Rahatsız Etmeyin ayarlarını değiştirecek</string>
|
|
||||||
<string name="nc_invitations">Davetler</string>
|
<string name="nc_invitations">Davetler</string>
|
||||||
<string name="nc_join_open_conversations">Açık görüşmelere katıl</string>
|
<string name="nc_join_open_conversations">Açık görüşmelere katıl</string>
|
||||||
<string name="nc_keep">Tut</string>
|
<string name="nc_keep">Tut</string>
|
||||||
@ -314,7 +314,7 @@
|
|||||||
<string name="nc_moderator">Sorumlu</string>
|
<string name="nc_moderator">Sorumlu</string>
|
||||||
<string name="nc_new_conversation">Yeni görüşme</string>
|
<string name="nc_new_conversation">Yeni görüşme</string>
|
||||||
<string name="nc_new_conversation_visibility">Görünürlük</string>
|
<string name="nc_new_conversation_visibility">Görünürlük</string>
|
||||||
<string name="nc_new_mention">Okunmamış anmalar</string>
|
<string name="nc_new_mention">Okunmamış bahsetmeler</string>
|
||||||
<string name="nc_new_messages">Okunmamış iletiler</string>
|
<string name="nc_new_messages">Okunmamış iletiler</string>
|
||||||
<string name="nc_nextcloud_talk_app_not_installed">%1$s kullanılamıyor (kurulmamış ya da yönetici tarafından engellenmiş)</string>
|
<string name="nc_nextcloud_talk_app_not_installed">%1$s kullanılamıyor (kurulmamış ya da yönetici tarafından engellenmiş)</string>
|
||||||
<string name="nc_nick_guest">Konuk</string>
|
<string name="nc_nick_guest">Konuk</string>
|
||||||
@ -334,10 +334,10 @@
|
|||||||
<string name="nc_notification_channel_uploads_description">Yükleme ilerlemesi bildirilsin</string>
|
<string name="nc_notification_channel_uploads_description">Yükleme ilerlemesi bildirilsin</string>
|
||||||
<string name="nc_notification_settings">Bildirim ayarları</string>
|
<string name="nc_notification_settings">Bildirim ayarları</string>
|
||||||
<string name="nc_notification_warning">Bildirimler doğru olarak ayarlanmamış</string>
|
<string name="nc_notification_warning">Bildirimler doğru olarak ayarlanmamış</string>
|
||||||
<string name="nc_notifications_troubleshooting_dialog_text">Bildirim izni ve pil ayarları, bildirimleri almak için doğru şekilde ayarlanmış. Yine de bildirim almakta sorun yaşıyorsanız lütfen çağrı ve iletiler için bildirim kanallarının kullanıma alınmış olup olmadığını denetleyin. Daha fazla yardım almak için DontKillMyApp.com adresine ya da sorun giderme kontrol listesine bakabilirsiniz. Bunlar işe yaramazsa lütfen tanılama ekranına gidin ve bir hata bildirimi gönderin.</string>
|
<string name="nc_notifications_troubleshooting_dialog_text">Bildirim izni ve pil ayarları, bildirimleri almak için doğru şekilde ayarlanmış. Yine de bildirim almakta sorun yaşıyorsanız lütfen çağrı ve iletiler için bildirim kanallarının etkinleştirilmiş olup olmadığını denetleyin. Daha fazla yardım almak için DontKillMyApp.com adresine ya da sorun giderme kontrol listesine bakabilirsiniz. Bunlar işe yaramazsa lütfen tanılama ekranına gidin ve bir hata bildirimi gönderin.</string>
|
||||||
<string name="nc_notifications_troubleshooting_dialog_title">Bildirim sorunlarını çözme</string>
|
<string name="nc_notifications_troubleshooting_dialog_title">Bildirim sorunlarını çözme</string>
|
||||||
<string name="nc_notify_me_always">Her zaman bildirilsin</string>
|
<string name="nc_notify_me_always">Her zaman bildirilsin</string>
|
||||||
<string name="nc_notify_me_mention">Anmalar bildirilsin</string>
|
<string name="nc_notify_me_mention">Bahsedildiğinde bildirilsin</string>
|
||||||
<string name="nc_notify_me_never">Asla bildirilmesin</string>
|
<string name="nc_notify_me_never">Asla bildirilmesin</string>
|
||||||
<string name="nc_offline">Şu anda çevrim dışı, lütfen bağlantınızı denetleyin</string>
|
<string name="nc_offline">Şu anda çevrim dışı, lütfen bağlantınızı denetleyin</string>
|
||||||
<string name="nc_ok">Tamam</string>
|
<string name="nc_ok">Tamam</string>
|
||||||
@ -361,9 +361,9 @@
|
|||||||
<string name="nc_profile_personal_info_title">Kişisel bilgiler</string>
|
<string name="nc_profile_personal_info_title">Kişisel bilgiler</string>
|
||||||
<string name="nc_promote">Sorumluluğa yükselt</string>
|
<string name="nc_promote">Sorumluluğa yükselt</string>
|
||||||
<string name="nc_public_call_status">Herkese açık görüşme</string>
|
<string name="nc_public_call_status">Herkese açık görüşme</string>
|
||||||
<string name="nc_push_disabled">Anında bildirimler kullanımdan kaldırılmış</string>
|
<string name="nc_push_disabled">Anında bildirimler devre dışı bırakılmış</string>
|
||||||
<string name="nc_push_to_talk">Bas-konuş</string>
|
<string name="nc_push_to_talk">Bas Konuş</string>
|
||||||
<string name="nc_push_to_talk_desc">Mikrofon kullanımdan kaldırılmışken, Bas-konuş üzerine tıklayıp basılı tutun</string>
|
<string name="nc_push_to_talk_desc">Mikrofon devre dışı bırakılmışken, Bas-konuş üzerine tıklayıp basılı tutun</string>
|
||||||
<string name="nc_remind">Sonra hatırlat</string>
|
<string name="nc_remind">Sonra hatırlat</string>
|
||||||
<string name="nc_remove_from_favorites">Sık kullanılanlardan kaldır</string>
|
<string name="nc_remove_from_favorites">Sık kullanılanlardan kaldır</string>
|
||||||
<string name="nc_remove_group_and_members">Grup ve üyelerini sil</string>
|
<string name="nc_remove_group_and_members">Grup ve üyelerini sil</string>
|
||||||
@ -408,7 +408,7 @@
|
|||||||
<string name="nc_server_maintenance">Lütfen %1$s kopyanızı bakım kipinden çıkarın</string>
|
<string name="nc_server_maintenance">Lütfen %1$s kopyanızı bakım kipinden çıkarın</string>
|
||||||
<string name="nc_server_not_installed">Lütfen %1$s kurulumunuzu tamamlayın</string>
|
<string name="nc_server_not_installed">Lütfen %1$s kurulumunuzu tamamlayın</string>
|
||||||
<string name="nc_server_testing_connection">Bağlantı sınanıyor</string>
|
<string name="nc_server_testing_connection">Bağlantı sınanıyor</string>
|
||||||
<string name="nc_server_unsupported">Sunucuda desteklenen bir Konuş uygulaması kurulu değil</string>
|
<string name="nc_server_unsupported">Sunucuda desteklenen bir Talk uygulaması kurulu değil</string>
|
||||||
<string name="nc_server_url">Sunucu adresi https://…</string>
|
<string name="nc_server_url">Sunucu adresi https://…</string>
|
||||||
<string name="nc_server_version">%1$s yalnızca %2$s 13 ve üzerinde çalışır</string>
|
<string name="nc_server_version">%1$s yalnızca %2$s 13 ve üzerinde çalışır</string>
|
||||||
<string name="nc_set_new_password">Yeni parola ayarla</string>
|
<string name="nc_set_new_password">Yeni parola ayarla</string>
|
||||||
@ -421,15 +421,15 @@
|
|||||||
<string name="nc_settings_contact_admin_of">Lütfen şuranın yöneticisi ile görüşün</string>
|
<string name="nc_settings_contact_admin_of">Lütfen şuranın yöneticisi ile görüşün</string>
|
||||||
<string name="nc_settings_diagnose_subtitle">Ayarları denetlemek için tanılama ekranını açın ya da bir hata bildirimi oluşturun</string>
|
<string name="nc_settings_diagnose_subtitle">Ayarları denetlemek için tanılama ekranını açın ya da bir hata bildirimi oluşturun</string>
|
||||||
<string name="nc_settings_diagnose_title">Tanılama</string>
|
<string name="nc_settings_diagnose_title">Tanılama</string>
|
||||||
<string name="nc_settings_incognito_keyboard_desc">Tuş takımında kişisel öğrenmeyi kullanımdan kaldırır (garanti edilmez)</string>
|
<string name="nc_settings_incognito_keyboard_desc">Tuş takımında kişisel öğrenmeyi devre dışı bırakır (garanti edilmez)</string>
|
||||||
<string name="nc_settings_incognito_keyboard_title">Tuş takımı gizliliği</string>
|
<string name="nc_settings_incognito_keyboard_title">Tuş takımı gizliliği</string>
|
||||||
<string name="nc_settings_no_ringtone">Ses yok</string>
|
<string name="nc_settings_no_ringtone">Ses yok</string>
|
||||||
<string name="nc_settings_no_talk_installed">Kimlik doğrulaması yapmak istediğiniz sunucu üzerinde Konuş uygulaması kurulu değil</string>
|
<string name="nc_settings_no_talk_installed">Kimlik doğrulaması yapmak istediğiniz sunucu üzerinde Talk uygulaması kurulu değil</string>
|
||||||
<string name="nc_settings_notification_sounds_post_oreo">Bildirimler</string>
|
<string name="nc_settings_notification_sounds_post_oreo">Bildirimler</string>
|
||||||
<string name="nc_settings_notifications_declined">Bildirimler reddediliyor</string>
|
<string name="nc_settings_notifications_declined">Bildirimler reddediliyor</string>
|
||||||
<string name="nc_settings_notifications_granted">Bildirimlere izin veriliyor</string>
|
<string name="nc_settings_notifications_granted">Bildirimlere izin veriliyor</string>
|
||||||
<string name="nc_settings_other_notifications_ringtone">İletiler</string>
|
<string name="nc_settings_other_notifications_ringtone">İletiler</string>
|
||||||
<string name="nc_settings_phone_book_integration_desc">Kişileri telefon numaralarına göre eşleştirerek sistem kişiler uygulamasında Konuş kısa yolunu görüntüler</string>
|
<string name="nc_settings_phone_book_integration_desc">Kişileri telefon numaralarına göre eşleştirerek sistem kişiler uygulamasında Talk kısa yolunu görüntüler</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_429">Hata 429 çok fazla sayıda istek yapıldı</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_429">Hata 429 çok fazla sayıda istek yapıldı</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_description">Telefon numaranızı ayarlayarak diğer kullanıcıların sizi bulmasını sağlayabilirsiniz</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_description">Telefon numaranızı ayarlayarak diğer kullanıcıların sizi bulmasını sağlayabilirsiniz</string>
|
||||||
<string name="nc_settings_phone_book_integration_phone_number_dialog_edit_text_hint">Telefon numarasını yazın</string>
|
<string name="nc_settings_phone_book_integration_phone_number_dialog_edit_text_hint">Telefon numarasını yazın</string>
|
||||||
@ -504,7 +504,7 @@
|
|||||||
<string name="nc_upload_video_from_cam">Görüntü al</string>
|
<string name="nc_upload_video_from_cam">Görüntü al</string>
|
||||||
<string name="nc_user">Kullanıcı</string>
|
<string name="nc_user">Kullanıcı</string>
|
||||||
<string name="nc_video_filename">%1$s üzerinden görüntü kaydı</string>
|
<string name="nc_video_filename">%1$s üzerinden görüntü kaydı</string>
|
||||||
<string name="nc_voice_message_filename">%1$s Konuş kaydı (%2$s)</string>
|
<string name="nc_voice_message_filename">%1$s Talk kaydı (%2$s)</string>
|
||||||
<string name="nc_voice_message_hold_to_record_info">Kaydetmek için basılı tutun, bırakarak gönderin.</string>
|
<string name="nc_voice_message_hold_to_record_info">Kaydetmek için basılı tutun, bırakarak gönderin.</string>
|
||||||
<string name="nc_voice_message_missing_audio_permission">Ses kaydetme izninin verilmesi gereklidir</string>
|
<string name="nc_voice_message_missing_audio_permission">Ses kaydetme izninin verilmesi gereklidir</string>
|
||||||
<string name="nc_voice_message_slide_to_cancel">« İptal etmek için kaydırın</string>
|
<string name="nc_voice_message_slide_to_cancel">« İptal etmek için kaydırın</string>
|
||||||
@ -565,7 +565,7 @@
|
|||||||
<string name="scope_federated_title">Birleşik</string>
|
<string name="scope_federated_title">Birleşik</string>
|
||||||
<string name="scope_local_description">Yalnızca bu kopyadaki kişiler ve konuklar görebilir</string>
|
<string name="scope_local_description">Yalnızca bu kopyadaki kişiler ve konuklar görebilir</string>
|
||||||
<string name="scope_local_title">Yerel</string>
|
<string name="scope_local_title">Yerel</string>
|
||||||
<string name="scope_private_description">Yalnızca mobil aygıt üzerinde Konuş telefon numarası bütünleştirmesi ile eşleşen kişiler görebilir</string>
|
<string name="scope_private_description">Yalnızca mobil aygıt üzerinde Talk telefon numarası bütünleştirmesi ile eşleşen kişiler görebilir</string>
|
||||||
<string name="scope_private_title">Kişisel</string>
|
<string name="scope_private_title">Kişisel</string>
|
||||||
<string name="scope_published_description">Genel ve herkese açık adres defteri ile ve güvenilen sunucularla eşitlensin</string>
|
<string name="scope_published_description">Genel ve herkese açık adres defteri ile ve güvenilen sunucularla eşitlensin</string>
|
||||||
<string name="scope_published_title">Yayınlanmış</string>
|
<string name="scope_published_title">Yayınlanmış</string>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">تەھرىر</string>
|
<string name= "nc_edit">تەھرىر</string>
|
||||||
|
<string name="add_participants">قوش</string>
|
||||||
<string name="add_to_notes">ئىزاھاتقا قوشۇڭ</string>
|
<string name="add_to_notes">ئىزاھاتقا قوشۇڭ</string>
|
||||||
<string name="added_to_favorites">ياقتۇرىدىغانلارغا %1$s پاراڭ قوشۇلدى</string>
|
<string name="added_to_favorites">ياقتۇرىدىغانلارغا %1$s پاراڭ قوشۇلدى</string>
|
||||||
<string name="appbar_search_in">%s دىن ئىزدەڭ</string>
|
<string name="appbar_search_in">%s دىن ئىزدەڭ</string>
|
||||||
@ -269,7 +270,6 @@
|
|||||||
<string name="nc_ignore_battery_optimization_dialog_text">باتارېيەنى ئەلالاشتۇرۇشقا سەل قاراشقا بولمايدۇ. ئۇقتۇرۇشنىڭ ئارقا سۇپىدا ئىشلىشىگە كاپالەتلىك قىلىش ئۈچۈن بۇنى ئۆزگەرتىش كېرەك! «جەزملە» نى چېكىپ ، \ \"بارلىق ئەپلەر \" ->%1$s-> ئەلالاشتۇرماڭ</string>
|
<string name="nc_ignore_battery_optimization_dialog_text">باتارېيەنى ئەلالاشتۇرۇشقا سەل قاراشقا بولمايدۇ. ئۇقتۇرۇشنىڭ ئارقا سۇپىدا ئىشلىشىگە كاپالەتلىك قىلىش ئۈچۈن بۇنى ئۆزگەرتىش كېرەك! «جەزملە» نى چېكىپ ، \ \"بارلىق ئەپلەر \" ->%1$s-> ئەلالاشتۇرماڭ</string>
|
||||||
<string name="nc_ignore_battery_optimization_dialog_title">باتارېيەنىڭ ئەلالاشتۇرۇشىغا پەرۋا قىلماڭ</string>
|
<string name="nc_ignore_battery_optimization_dialog_title">باتارېيەنىڭ ئەلالاشتۇرۇشىغا پەرۋا قىلماڭ</string>
|
||||||
<string name="nc_important_conversation">مۇھىم سۆھبەت</string>
|
<string name="nc_important_conversation">مۇھىم سۆھبەت</string>
|
||||||
<string name="nc_important_conversation_desc">بۇ سۆھبەتتىكى ئۇقتۇرۇشلار قالايمىقانلاشتۇرماڭ</string>
|
|
||||||
<string name="nc_invitations">تەكلىپنامە</string>
|
<string name="nc_invitations">تەكلىپنامە</string>
|
||||||
<string name="nc_join_open_conversations">ئوچۇق سۆھبەتكە قاتنىشىڭ</string>
|
<string name="nc_join_open_conversations">ئوچۇق سۆھبەتكە قاتنىشىڭ</string>
|
||||||
<string name="nc_keep">ساقلاڭ</string>
|
<string name="nc_keep">ساقلاڭ</string>
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
<string name= "nc_edit">Редагувати</string>
|
<string name= "nc_edit">Редагувати</string>
|
||||||
|
<string name="add_participants">Додати</string>
|
||||||
<string name="appbar_search_in">Пошук у %s</string>
|
<string name="appbar_search_in">Пошук у %s</string>
|
||||||
|
<string name="archived">Заархівовані</string>
|
||||||
<string name="audio_output_bluetooth">Bluetooth</string>
|
<string name="audio_output_bluetooth">Bluetooth</string>
|
||||||
<string name="audio_output_dialog_headline">Вивід аудіо</string>
|
<string name="audio_output_dialog_headline">Вивід аудіо</string>
|
||||||
<string name="audio_output_phone">Телефон</string>
|
<string name="audio_output_phone">Телефон</string>
|
||||||
@ -196,7 +198,6 @@
|
|||||||
<string name="nc_guest_access_share_link">Поділитися посиланням на бесіду</string>
|
<string name="nc_guest_access_share_link">Поділитися посиланням на бесіду</string>
|
||||||
<string name="nc_hint_enter_a_message">Введіть повідомлення ...</string>
|
<string name="nc_hint_enter_a_message">Введіть повідомлення ...</string>
|
||||||
<string name="nc_important_conversation">Важлива розмова</string>
|
<string name="nc_important_conversation">Важлива розмова</string>
|
||||||
<string name="nc_important_conversation_desc">Сповіщення в цій розмові ігнорують опцію \"Не турбувати\"</string>
|
|
||||||
<string name="nc_keep">Зберегти</string>
|
<string name="nc_keep">Зберегти</string>
|
||||||
<string name="nc_last_moderator_leaving_room_warning">Перед тим, як вийти з розмови, вам потрібно призначити нового модератора</string>
|
<string name="nc_last_moderator_leaving_room_warning">Перед тим, як вийти з розмови, вам потрібно призначити нового модератора</string>
|
||||||
<string name="nc_last_modified">%1$s | Остання зміна: %2$s</string>
|
<string name="nc_last_modified">%1$s | Остання зміна: %2$s</string>
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user