diff --git a/.github/workflows/assembleFlavors.yml b/.github/workflows/assembleFlavors.yml index 49da006df..b281d75ef 100644 --- a/.github/workflows/assembleFlavors.yml +++ b/.github/workflows/assembleFlavors.yml @@ -34,7 +34,7 @@ jobs: java-version: 17 - name: Gradle validate - uses: gradle/actions/wrapper-validation@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + uses: gradle/actions/wrapper-validation@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 - name: Build ${{ matrix.flavor }} run: | diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 4f6a70afc..dabb41fea 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -43,7 +43,7 @@ jobs: with: swap-size-gb: 10 - name: Initialize CodeQL - uses: github/codeql-action/init@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 + uses: github/codeql-action/init@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: languages: ${{ matrix.language }} - name: Set up JDK 17 @@ -57,4 +57,4 @@ jobs: echo "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > "$HOME/.gradle/gradle.properties" ./gradlew assembleDebug - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 + uses: github/codeql-action/analyze@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3b596e4f3..811b0b5c7 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -42,6 +42,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 + uses: github/codeql-action/upload-sarif@1b549b9259bda1cb5ddde3b41741a82a2d15a841 # v3.28.13 with: sarif_file: results.sarif diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml index 1a43ed477..ee2fff5e4 100644 --- a/.github/workflows/unit-tests.yml +++ b/.github/workflows/unit-tests.yml @@ -33,7 +33,7 @@ jobs: java-version: 17 - name: Setup Gradle - uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0 + uses: gradle/actions/setup-gradle@06832c7b30a0129d7fb559bcc6e43d26f6374244 # v4.3.1 - name: Run unit tests with coverage run: ./gradlew testGplayDebugUnit diff --git a/app/build.gradle b/app/build.gradle index 07763195f..be8e1b799 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,7 +15,7 @@ import com.github.spotbugs.snom.SpotBugsTask plugins { id "org.jetbrains.kotlin.plugin.compose" version "2.1.20" id "org.jetbrains.kotlin.kapt" - id 'com.google.devtools.ksp' version '2.1.10-1.0.31' + id 'com.google.devtools.ksp' version '2.1.20-1.0.32' } 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) // xx .xxx .xx .xx - versionCode 210010011 - versionName "21.1.0 Alpha 11" + versionCode 210010012 + versionName "21.1.0 Alpha 12" flavorDimensions "default" renderscriptTargetApi 19 @@ -150,9 +150,9 @@ kapt { } ext { - androidxCameraVersion = "1.4.1" + androidxCameraVersion = "1.4.2" coilKtVersion = "2.7.0" - daggerVersion = "2.56" + daggerVersion = "2.56.1" emojiVersion = "1.5.0" fidoVersion = "4.1.0-patch2" lifecycleVersion = '2.8.7' diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index 6b8df2beb..1dc84bf10 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -47,6 +47,8 @@ import android.widget.PopupMenu import android.widget.TextView import androidx.activity.OnBackPressedCallback import androidx.activity.result.ActivityResult +import androidx.activity.result.ActivityResultLauncher +import androidx.activity.result.PickVisualMediaRequest import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.view.ContextThemeWrapper import androidx.cardview.widget.CardView @@ -213,6 +215,7 @@ import java.util.concurrent.ExecutionException import javax.inject.Inject import kotlin.collections.set import kotlin.math.roundToInt +import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia @AutoInjector(NextcloudTalkApplication::class) class ChatActivity : @@ -334,6 +337,8 @@ class ChatActivity : private var videoURI: Uri? = null + private lateinit var pickMultipleMedia: ActivityResultLauncher + private val onBackPressedCallback = object : OnBackPressedCallback(true) { override fun handleOnBackPressed() { val intent = Intent(this@ChatActivity, ConversationsListActivity::class.java) @@ -429,6 +434,14 @@ class ChatActivity : onBackPressedDispatcher.addCallback(this, onBackPressedCallback) initObservers() + + pickMultipleMedia = registerForActivityResult( + ActivityResultContracts.PickMultipleVisualMedia(5) + ) { uris -> + if (uris.isNotEmpty()) { + onChooseFileResult(uris) + } + } } private fun getMessageInputFragment(): MessageInputFragment { @@ -1943,33 +1956,47 @@ class ChatActivity : } } - @Throws(IllegalStateException::class) private fun onChooseFileResult(intent: Intent?) { try { checkNotNull(intent) - filesToUpload.clear() + val fileUris = mutableListOf() intent.clipData?.let { for (index in 0 until it.itemCount) { - filesToUpload.add(it.getItemAt(index).uri.toString()) + fileUris.add(it.getItemAt(index).uri) } } ?: run { checkNotNull(intent.data) intent.data.let { - filesToUpload.add(intent.data.toString()) + fileUris.add(intent.data!!) } } + onChooseFileResult(fileUris) + } catch (e: IllegalStateException) { + context.resources?.getString(R.string.nc_upload_failed)?.let { + Snackbar.make( + binding.root, + it, + Snackbar.LENGTH_LONG + ).show() + } + Log.e(javaClass.simpleName, "Something went wrong when trying to upload file", e) + } + } + + private fun onChooseFileResult(filesToUpload: List) { + try { require(filesToUpload.isNotEmpty()) val filenamesWithLineBreaks = StringBuilder("\n") for (file in filesToUpload) { - val filename = FileUtils.getFileName(file.toUri(), context) + val filename = FileUtils.getFileName(file, context) filenamesWithLineBreaks.append(filename).append("\n") } val newFragment = FileAttachmentPreviewFragment.newInstance( filenamesWithLineBreaks.toString(), - filesToUpload + filesToUpload.map { it.toString() }.toMutableList() ) newFragment.setListener { files, caption -> uploadFiles(files, caption) @@ -2223,6 +2250,10 @@ class ChatActivity : chatViewModel.uploadFile(fileUri, room, currentConversation?.displayName!!, metaData) } + fun showGalleryPicker() { + pickMultipleMedia.launch(PickVisualMediaRequest(PickVisualMedia.ImageAndVideo)) + } + private fun showLocalFilePicker() { val action = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { type = "*/*" diff --git a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt index a9f9b30e3..754bae7c5 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/MessageInputFragment.kt @@ -402,6 +402,11 @@ class MessageInputFragment : Fragment() { AttachmentDialog(requireActivity(), requireActivity() as ChatActivity).show() } + binding.fragmentMessageInputView.attachmentButton.setOnLongClickListener { + chatActivity.showGalleryPicker() + true + } + binding.fragmentMessageInputView.button?.setOnClickListener { submitMessage(false) } diff --git a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt index 0161003f3..5a3526de9 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt +++ b/app/src/main/java/com/nextcloud/talk/jobs/UploadAndShareFilesWorker.kt @@ -89,16 +89,6 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa override fun doWork(): Result { NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) - if (!platformPermissionUtil.isFilesPermissionGranted()) { - Log.w( - TAG, - "Storage permission is not granted. As a developer please make sure you check for" + - "permissions via UploadAndShareFilesWorker.isStoragePermissionGranted() and " + - "UploadAndShareFilesWorker.requestStoragePermission() beforehand. If you already " + - "did but end up with this warning, the user most likely revoked the permission" - ) - } - return try { currentUser = currentUserProvider.currentUser.blockingGet() val sourceFile = inputData.getString(DEVICE_SOURCE_FILE) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/AttachmentDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/AttachmentDialog.kt index db794df32..a094058b5 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/AttachmentDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/AttachmentDialog.kt @@ -20,8 +20,8 @@ import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.chat.ChatActivity import com.nextcloud.talk.databinding.DialogAttachmentBinding import com.nextcloud.talk.ui.theme.ViewThemeUtils -import com.nextcloud.talk.utils.SpreedFeatures import com.nextcloud.talk.utils.CapabilitiesUtil +import com.nextcloud.talk.utils.SpreedFeatures import javax.inject.Inject @AutoInjector(NextcloudTalkApplication::class) @@ -92,6 +92,11 @@ class AttachmentDialog(val activity: Activity, var chatActivity: ChatActivity) : dismiss() } + dialogAttachmentBinding.menuAttachFileFromGallery.setOnClickListener { + chatActivity.showGalleryPicker() + dismiss() + } + dialogAttachmentBinding.menuAttachFileFromLocal.setOnClickListener { chatActivity.sendSelectLocalFileIntent() dismiss() diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/FileAttachmentPreviewFragment.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/FileAttachmentPreviewFragment.kt index 0be7ecb1e..c23bba00a 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/FileAttachmentPreviewFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/FileAttachmentPreviewFragment.kt @@ -17,7 +17,6 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.talk.R import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.databinding.DialogFileAttachmentPreviewBinding -import com.nextcloud.talk.jobs.UploadAndShareFilesWorker import com.nextcloud.talk.ui.theme.ViewThemeUtils import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil import javax.inject.Inject @@ -70,12 +69,8 @@ class FileAttachmentPreviewFragment : DialogFragment() { } binding.buttonSend.setOnClickListener { - if (permissionUtil.isFilesPermissionGranted()) { - val caption: String = binding.dialogFileAttachmentPreviewCaption.text.toString() - uploadFiles(filesList, caption) - } else { - UploadAndShareFilesWorker.requestStoragePermission(requireActivity()) - } + val caption: String = binding.dialogFileAttachmentPreviewCaption.text.toString() + uploadFiles(filesList, caption) dismiss() } } diff --git a/app/src/main/res/drawable/baseline_photo_library_24.xml b/app/src/main/res/drawable/baseline_photo_library_24.xml new file mode 100644 index 000000000..f1711dc0a --- /dev/null +++ b/app/src/main/res/drawable/baseline_photo_library_24.xml @@ -0,0 +1,15 @@ + + + + diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 5283d60c3..28d31573a 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -210,41 +210,6 @@ android:layout_height="wrap_content" android:orientation="vertical"> - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-b+en+001/strings.xml b/app/src/main/res/values-b+en+001/strings.xml index 2e81e1ba8..29831a972 100644 --- a/app/src/main/res/values-b+en+001/strings.xml +++ b/app/src/main/res/values-b+en+001/strings.xml @@ -261,6 +261,7 @@ You: %1$s Forward Forward to … + Gallery Do you not have a server yet?\nClick here to get one from a provider Get source code Group diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index b9b511729..09e242442 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -261,6 +261,7 @@ Dig: %1$s Videresend Forward til ... + Galleri Har du ikke en server endnu?\nKlik her for at skaffe en udbyder Hent kildekode Gruppe diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 013a75a10..a9d30df96 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -261,6 +261,7 @@ Sie: %1$s Weiterleiten Weiterleiten an … + Galerie Sie haben noch keinen Server?\nKlicken Sie hier, um Anbieter zu finden Zum Programmcode Gruppe diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index cfb717228..fd5ffc28a 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -148,6 +148,7 @@ Εσείς: %1$s Προώθηση Προώθηση σε … + Εκθεσιακός χώρος Δεν έχετε ακόμα διακομιστή;\nΚάντε κλικ εδώ για να αποκτήσετε έναν από κάποιον πάροχο Λήψη πηγαίου κώδικα Ομάδα diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 339266074..4c9f33ac4 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -246,6 +246,7 @@ Tu: %1$s Reenviar Reenviar a … + Galería ¿No tienes todavía un servidor?\nClic aquí para conseguir uno de un proveedor Obtener el código fuente Grupo diff --git a/app/src/main/res/values-et-rEE/strings.xml b/app/src/main/res/values-et-rEE/strings.xml new file mode 100644 index 000000000..8a2abc774 --- /dev/null +++ b/app/src/main/res/values-et-rEE/strings.xml @@ -0,0 +1,351 @@ + + + Muuda + Lisa Märkmetesse + Lisa %1$s vestlus lemmikuks + Otsi siin: %s + Arhiveeri vestlus + Arhiveeritud + Arhiveeritud %1$s + Häälkõne + Bluetooth + Heliväljund + Telefon + Valjuhääldi + Kaabliga kõrvaklapid + Su staatus määrati automaatselt + Tunnuspilt ehk avatar + Eemal + Tagasi-nupp + Sea suhtluskeeld + Sea osalejale suhtluskeeld + Suhtluskeelu saanute loend + Kalender + Vali tunnuspilt pilvest + Tühjenda staatuseteade + Tühjenda staatuseteade pärast + Sulge + Sulgemise ikoon + Saadi ühendus + Ühendus on katkenud + Ühendus on katkenud - saadetud sõnumid on edasisaatmise ootejärjekorras + Vestlused + Loo vestlus + Kohandatud + Kustuta tunnuspilt + %1$s vestlus on kustutatud + Ära sega + Ära tühjenda + Muuda + Sa ei saa muuta sõnumeid, mis on vanemad, kui 24 tundi + Sõnumi muutmise ikoon + Hiljutised + Krüptitud + Lõpeta kõne kõigi jaoks + Sinu vestluste laadimisel tekkis viga + Osaleja suhtluskeelu eemaldamisel tekkis viga + „%1$s“ salvestamine ei õnnestunud + kaust + Laadimisel... + 4 tundi + Ootel kutsete laadimine ei õnnestunud + (muudetud) + Sisemine märge + Nähtamatu + Täna hiljem + Lahku kõnest + Sa lahkusid %1$s vestlusest + Laadi veel tulemusi + Lukusta vestlus + Lase käsi alla + Uuemad eespool + Vanemad eespool + A - Z + Z - A + Suuremad esimesena + Väiksemad esimesenaa + Sina kustutasid sõnumi + %1$s muutis sõnumit + Otsingul pole tulemusi + Sõnumid + Info + Aktiivne kasutaja + Lisa konto + Ava põhimenüü + Lisa manus + Lisa emojisid + Lisa vestlusele + Lisa osalejaid + Lisa lemmikutesse + PIN-kood: %1$s + Vasta videokõnena + Vasta vaid häälkõnena + Muuda heliväljundit + Lülita kaamera sisse/välja + Lõpeta kõne + Lülita mikrofon sisse/välja + Vestluse nimi + Loobu + Muuda salasõna + Kopeeri + Kopeeritud lõikepuhvrisse + Lisa + Keelatud + Jäta vahele + Täiendavad valikud + Jäta vahele + Teadmata + Valmis + Vestluse kirjeldus + Videokõne + Häälkõne + Vestlust ei leidu + Kopeeri + Loo uus vestlus + Loo küsitlus + Täna + Eile + Kustuta + Kustuta kõik + Kustuta vestlus + Kustuta + Salvesta häälsõnum + Saada sõnum + Server + Kasutaja + Androidi versioon + Rakendus + Rakenduse nimi + Rakenduse versioon + Akuseaded + Seade + Firebase\'i tõuketeenuste tunnusloa viimane laadimine + Firebase\'i tõuketeenuste tunnusloa viimane loomine + Firebase\'i tõuketeenuste tunnusluba on puudu. Palun koosta asjakohane veateade. + Firebase\'i tõuketeenuste tunnusluba + Viimane registreerimine tõuketeenuste vahendajas + Pole veel registreeritud tõuketeenuste vahendajas + Tõuketeenuste viimane registreerimine serveris + Vale salasõna + Hooldusrežiim + Server on hetkel hooldusrežiimis. + Rakendus on aegunud + See rakendus on liiga vana ja pole serveri poolt enam toetatud. Palun uuenda rakendust. + Uuenda + Ei + Ja + Redigeeri + Epost + 1 päev + 1 tund + 1 nädal + Nõustu + Keeldu + Tagasi + Edasi + Galerii + Kas sul ei ole veel oma serverit?\nVajuta siia, et tutvuda teenusepakkujatega + Vaata lähtekoodi + Grupp + Grupid + Külaline + Sisesta salasõna + Salasõna külalisele + Viga salasõna salvestamisel või eemaldamisel. + Määra salasõna, millega saad piirata avaliku lingi kasutajaid. + Kaitstud salasõnaga + Nõrk salasõna + Pead määrtama uue moderaatori enne, kui saad siis vestlusest lahkuda + Litsents + Märgi loetuks + Märgi mitteloetuks + Ebaõnnestus + Offline + Saatmisel + Sõnum on saadetud + Vastamata kõne kasutajalt %s + Moderaator + Nähtavus + Lugemata sõnumid + Külaline + Ei + Mitte praegu + Kõned + Sõnumid + Üleslaadimised + Teavituse seadistused + OK + Ava vestlus registreeritud kasutajatele + Lisaks ava ka külalisrakenduse kasutajatele + Omanik + Osalejad + Lisa osalejaid + Salasõna + Sõnumid + Privaatsus + Määra moderaatoriks + Avalik vestlus + Tõuketeavitused pole kasutusel + Raadiosaatja režiim + Värskenda + Eemalda lemmikutest + Eemalda gruppe ja liikmeid + Eemalda osalejaid + Eemalda salasõna + Eemalda tiime ja liikmeid + Muuda nime + Vasta + Vasta privaatselt + Salvesta + Salvestamine õnnestus + 30 sekundit + 5 minutit + 1 minut + 10 minutit + Kohene + 600 + 60 + 30 + 300 + Otsi + Otsi kasutajakontot + Vali osalejaid + %1$s saatis gif-faili. + Sina saatsid gif-faili. + %1$s saatis video. + Sina saatsid video. + %1$s saatis manuse. + Sina saatsid manuse. + %1$s saatis helifaili. + Sina saatsid helifaili. + %1$s saatis pildi. + Sina saatsid pildi. + %1$s saatis kanbani kaardi + Sina saatsid kanbani kaardi + %1$s saatis asukoha. + Sina saatsid asukoha. + %1$s saatis küsitluse. + Sina saatsid küsitluse. + %1$s saatis häälsõnumi. + Sina saatsid häälsõnumi. + Testi ühendust serveriga + Impordi kasutajakonto + Impordi kasutajakontod rakendusest %1$s + Impordi kasutajakontod + Ühenduse testimine + Serveri aadress https://… + Määra uus salasõna + Määra salasõna + Seadistused + Täiendavad seadistused + Välimus + Kõned + Teavitused + Sõnumid + Telefoninumber + Privaatsus + Proksiserveri aadress + Proksiserveri salasõna + Proksiserveri port + Proksiserveri tüüp + Proksiserveri kasutajanimi + Eemalda + Eemalda konto + Hele + Tume + Teema + Hoiatus + Jaga linki + Vali konto + Asukoht + Sorteeri + Alusta rühmavestlust + Vaheta kasutajakontot + Tiim + Tiimid + Laadi üles seadmest + Üleslaadimine + Kasutaja + Videosalvestus kasutajalt %1$s + Nähtav + Jah + Järgmine nädal + Ühtegi vestlust pole arhiveeritud + 1 tund + Online + Võrgus staatus + Taasesituse kiiruse juhtimine + Kustuta %1$d valik + %1$d valik + Sätted + Küsimus + Tulemused + Seaded + Varasemalt seatud + Kõik + Saada uuesti + Lähesta olek + Salvesta + Federated + Kohalik + Privaatne + sekundit tagasi + Valitud + Saada e-kiri + Lisa tunnuspilt kaamera abil + Määra staatus + Sea staatuse sõnum + Jaga + Helid + Fail + Meedia + Muu + Hääl + Näita suhtluskeelu seadmise põhjus + Näita suhtluskeelu saanud osalejaid + Lemmik + Staatuse teade + Olek on tagasi pööratud + Saada + 30 minutit + Käesolev nädal + See nädalavahetus + Täna + Homme + Tõlgi + Tõlge + Kopeeri tõlgitud tekst + Tuvasta keel + Seadme seaded + Ei suutnud keelt tuvastada + Tõlkimine ebaõnnestus + Saatja + Saaja + ja veel 1 osaleja kirjutab… + kirjutavad… + kirjutab… + ja veel %1$s osalejat kirjutavad… + Võta vestlus arhiivist välja + Kui vestlus on arhiivist välja võetud, siis on ta jälle vaikimisi näha. + %1$s on arhiivist välja võetud + Eemalda suhtluskeeld + Lugemata + Lisa uus tunnuspilt arvutist või nutiseadmest + %1$s pole kohal ja ei pruugi vastata + %1$s pole täna kohal + Asendus: + Kasutaja tunnuspilt + Aadress + Täisnimi + Epost + Telefoninumber + Twitter + Veebileht + Staatus + Isiklikud andmed on kirjeldamata + Mis on su staatus? + + Vaata %d sarnast sõnumit + Vaata %d sarnast sõnumit + + diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 82ee86832..220d0fb37 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -217,6 +217,7 @@ Zu: %1$s Birbidali Birbidali … + Galeria Oraindik zerbitzaririk gabe?\n Egin klik hemen hornitzailetik bat lortzeko Iturburu kodea eskuratu Taldea diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index aefb265e8..2615b3f87 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -163,6 +163,7 @@ شما: %1$s ارسال کردن ارسال کردن به … + گالری "آیا هیچ سروری در دسترس ندارید؟ برای گرفتن سرور از یک ارائه دهنده کلیک کنید " دریافت کد منبع گروه diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 783e6e9f5..9749267f0 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -148,6 +148,7 @@ Sinä: %1$s Välitä Välitä viesti … + Galleria Ei palvelinta?\nNapsauta tästä ja hanki palveluntarjoajalta Lataa lähdekoodi Ryhmä diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index ec5fbe49f..b5eacccef 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -261,6 +261,7 @@ Vous : %1$s Transférer Transférer à... + Galerie Vous n\'avez pas encore de serveur ?\nCliquez-ici pour en obtenir un chez un fournisseur. Obtenir le code source Groupe diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml index 6a0c7903a..e03a358d8 100644 --- a/app/src/main/res/values-ga/strings.xml +++ b/app/src/main/res/values-ga/strings.xml @@ -261,6 +261,7 @@ Tusa: %1$s Ar aghaidh Ar aghaidh chuig… + Gailearaí Nach bhfuil freastalaí agat fós?\nCliceáil anseo chun ceann a fháil ó sholáthraí Faigh cód foinse Grúpa diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 8ed483025..1db9e06c4 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -261,6 +261,7 @@ Vde.: %1$s Reenviar Reenviar a… + Galería Aínda non ten un servidor? \nPrema aquí para obter un dun provedor Obter o código fonte Grupo diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index e00204576..b3b44a5cc 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -145,6 +145,7 @@ Vi: %1$s Proslijedi Proslijedi… + Galerija Nemate poslužitelj?\nKliknite ovdje kako biste ga dobili od davatelja usluge Preuzmi izvorni kod Grupa diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 486bf1233..f1786d8e9 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -198,6 +198,7 @@ Ön: %1$s Továbbítás Továbbítás… + Galéria Nincs még saját kiszolgálója?\nKattintson ide a beszerzéshez az egyik szolgáltatótól Forráskód letöltése Csoport diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3dc51e45b..18d600ed4 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -170,6 +170,7 @@ Tu: %1$s Inoltra Inoltra a … + Galleria Non hai ancora un server?\nFai clic qui per ottenerne uno da un fornitore Ottieni codice sorgente Gruppo diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index be0c3c11d..90f5cb49f 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -245,6 +245,7 @@ あなた:%1$s 転送 次に転送 … + ギャラリー まだサーバーがありませんか?\ nプロバイダーから取得するにはここをクリックしてください ソースコードを入手 グループ diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 9c37c8648..2ecff52d4 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -167,6 +167,7 @@ 나: %1$s 전달 ...에 전달 + 갤러리 서버가 없으신가요?\n공급자를 알아보려면 누르십시오 소스 코드 얻기 그룹 diff --git a/app/src/main/res/values-lt-rLT/strings.xml b/app/src/main/res/values-lt-rLT/strings.xml index 550e38c27..919dfbbb1 100644 --- a/app/src/main/res/values-lt-rLT/strings.xml +++ b/app/src/main/res/values-lt-rLT/strings.xml @@ -151,6 +151,7 @@ Jūs: %1$s Persiųsti Persiunčiama į … + Galerija Neturite serverio? Spauskite čia, kad galėtumėte pasirinkti vieną iš paslaugų teikėjų Gauti išeities kodą Grupė diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index ce461fd24..961f25a85 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -255,6 +255,7 @@ Du: %1$s Fremover Videresender til … + Galleri Har du ingen server enda?\nKlikk her for å opprette en hos en tilbyder Få kildekoden Gruppe diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 8de0e34be..b682a29ad 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -259,6 +259,7 @@ Jij: %1$s Doorsturen Doorsturen aan … + Galerij Heb je nog geen server?\n Kies er eentje van een provider. Download sourcecode diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 27e6a7ea9..b4bdeabb1 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -261,6 +261,7 @@ Ty: %1$s Przekaż dalej Przekaż do… + Galeria Nie masz jeszcze serwera?\nKliknij tutaj, aby uzyskać jeden od dostawcy Pobierz kod źródłowy Grupa diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 16243fbde..e9aaeffc8 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -94,7 +94,7 @@ A conta selecionada agora está importada e disponível Sobre Usuário ativo - Adicionar Conta + Adicionar conta A conta está agendada para exclusão e não pode ser alterada Abrir menu principal Adicionar anexo @@ -261,6 +261,7 @@ Você: %1$s Enviar Enviar para … + Galeria Não tem servidor ainda?\nClique aqui para obter um Obtenha o código-fonte Grupo @@ -409,8 +410,8 @@ Você enviou um áudio. %1$s enviou uma imagem. Você enviou uma imagem. - %1$s enviei uma carta deck - Você enviou uma carta de deck + %1$s enviei um cartão de Deck + Você enviou um cartão de Deck %1$s enviou uma localização. Você enviou um local. %1$s enviou uma enquete. @@ -499,7 +500,7 @@ Compartilhe este local Escolha a conta Itens compartilhados - Cartão de deck + Cartão de Deck Imagens, arquivos, mensagens de voz … Nenhum item compartilhado Localização @@ -535,6 +536,7 @@ Sim Novo ícone de criação de conversa Próxima semana + Nenhuma conversa arquivada Nenhuma mensagem offline foi salva Sem integração de número de telefone devido à falta de permissões 1 hora @@ -675,6 +677,11 @@ Adicione nome, foto e detalhes de contato em sua página de perfil. Video Chamada Qual é o seu status? + + Veja %d mensagem semelhante + Veja %d mensagens semelhantes + Veja %d mensagens semelhantes + %d votos %d voto diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 0fd961ab0..74c798f13 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -223,6 +223,7 @@ Вы: %1$s Переслать Вперёд к … + Галерея Нет своего сервера?\nНажмите здесь чтобы заказать у провайдера Исходный код Группа diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml index 34fb825da..a1e59d219 100644 --- a/app/src/main/res/values-sk-rSK/strings.xml +++ b/app/src/main/res/values-sk-rSK/strings.xml @@ -261,6 +261,7 @@ Vy: %1$s Preposlať Preposlať na … + Galéria Ešte nemáte server? \nKliknite sem a získajte jeden od poskytovateľa Získajte zdrojový kód Skupina diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 89521f55d..000f72259 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -179,6 +179,7 @@ → %1$s Posreduj Posreduj za … + Galerija Še nimate izbranega oziroma nameščenega strežnika? Kliknite in si pridobite dostop. Pridobi izvorno kodo Skupina diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 5fc37750e..4dabb461f 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -261,6 +261,7 @@ Ти: %1$s Проследи Прослеђивање на … + Галерија Имате ли сервер?nКликните овде да направите један код провајдера Изворни кôд Група diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 7e76626ff..6a4cbf26a 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -258,6 +258,7 @@ Du: %1$s Vidarebefordra Vidarebefordrar till … + Galleri Har du inte en server än?\nKlicka här för att få en från en leverantör Hämta källkod Grupp diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 3711ba464..36717c6a4 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -261,6 +261,7 @@ Siz: %1$s İlet Şuraya ilet … + Galeri Henüz bir sunucunuz yok mu?\Listeden bir hizmet sağlayıcısı seçebilirsiniz Kaynak kodu alın Grup diff --git a/app/src/main/res/values-ug/strings.xml b/app/src/main/res/values-ug/strings.xml index 5a3a308e2..e94f71f52 100644 --- a/app/src/main/res/values-ug/strings.xml +++ b/app/src/main/res/values-ug/strings.xml @@ -257,6 +257,7 @@ سىز:%1$s ئالدىغا ئالدىغا… + Gallery مۇلازىمېتىرىڭىز يوقمۇ؟ \ n تەمىنلىگۈچىدىن بىرنى ئېلىش ئۈچۈن بۇ يەرنى چېكىڭ مەنبە كودىغا ئېرىشىش گۇرۇپپا diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index f3b7d1324..23dde1b01 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -143,7 +143,7 @@ Сервер Користувач Застосунок - Дайте назву застосунку + Зазначте назву застосунку Налаштування батареї Пристрій Зовнішнє @@ -175,6 +175,7 @@ Ви: %1$s Переслати Переслати … + Галерея Ще не маєте сервера?\nНатисніть тут щоб отримати в провайдера Отримати вихідний код Група diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 624102216..dbbbfd98e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -200,6 +200,7 @@ 您:%1$s 转发 转发至 … + 相册 还没有服务器吗?\n点此查看供应商 获取源代码 群组 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 0652b261a..d56bf6be3 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -261,6 +261,7 @@ 你: %1$s 轉寄 轉寄給 … + 相簿 您沒有自己的伺服器嗎?\n點這裡向服務供應商購買 取得原始碼 群組 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 480a3252c..6d88870b6 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -261,6 +261,7 @@ 你: %1$s 轉貼 轉貼到… + 相簿 您沒有自己的伺服器嗎?\n點這裡向服務供應商購買 取得原始碼 群組 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dcbfa5238..47ca02e69 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -541,6 +541,7 @@ How to translate with transifex: Send this file to %1$s? Uploading Upload from device + Gallery %1$s to %2$s - %3$s\%% Failure diff --git a/build.gradle b/build.gradle index 276c1607f..0d21263b9 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ buildscript { ext { - kotlinVersion = '2.1.10' + kotlinVersion = '2.1.20' } repositories { @@ -21,7 +21,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:8.9.0' + classpath 'com.android.tools.build:gradle:8.9.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}" classpath "org.jetbrains.kotlin:kotlin-serialization:${kotlinVersion}" classpath 'com.github.spotbugs.snom:spotbugs-gradle-plugin:6.1.7' diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 4da2e5ae8..0910fe1d2 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -6,7 +6,7 @@ - + @@ -32,6 +32,7 @@ + @@ -2094,6 +2095,14 @@ + + + + + + + + @@ -2150,6 +2159,14 @@ + + + + + + + + @@ -2206,6 +2223,14 @@ + + + + + + + + @@ -4155,6 +4180,14 @@ + + + + + + + + @@ -4211,6 +4244,14 @@ + + + + + + + + @@ -4267,6 +4308,14 @@ + + + + + + + + @@ -4323,6 +4372,14 @@ + + + + + + + + @@ -4379,6 +4436,14 @@ + + + + + + + + @@ -4435,6 +4500,14 @@ + + + + + + + + @@ -4531,6 +4604,14 @@ + + + + + + + + @@ -4587,6 +4668,14 @@ + + + + + + + + @@ -4643,6 +4732,14 @@ + + + + + + + + @@ -4699,6 +4796,14 @@ + + + + + + + + @@ -4755,6 +4860,14 @@ + + + + + + + + @@ -4811,6 +4924,14 @@ + + + + + + + + @@ -4867,6 +4988,14 @@ + + + + + + + + @@ -4963,6 +5092,14 @@ + + + + + + + + @@ -5019,6 +5156,14 @@ + + + + + + + + @@ -5075,6 +5220,14 @@ + + + + + + + + @@ -5131,6 +5284,14 @@ + + + + + + + + @@ -5187,6 +5348,14 @@ + + + + + + + + @@ -5243,6 +5412,14 @@ + + + + + + + + @@ -5299,6 +5476,14 @@ + + + + + + + + @@ -5411,6 +5596,14 @@ + + + + + + + + @@ -5483,6 +5676,14 @@ + + + + + + + + @@ -5555,6 +5756,14 @@ + + + + + + + + @@ -5627,6 +5836,14 @@ + + + + + + + + @@ -5707,6 +5924,14 @@ + + + + + + + + @@ -5763,6 +5988,14 @@ + + + + + + + + @@ -5939,6 +6172,14 @@ + + + + + + + + @@ -6155,6 +6396,14 @@ + + + + + + + + @@ -6211,6 +6460,14 @@ + + + + + + + + @@ -6267,6 +6524,14 @@ + + + + + + + + @@ -6323,6 +6588,14 @@ + + + + + + + + @@ -6379,6 +6652,14 @@ + + + + + + + + @@ -6435,6 +6716,14 @@ + + + + + + + + @@ -6459,6 +6748,14 @@ + + + + + + + + @@ -6483,6 +6780,14 @@ + + + + + + + + @@ -6539,6 +6844,14 @@ + + + + + + + + @@ -6595,6 +6908,14 @@ + + + + + + + + @@ -6651,6 +6972,14 @@ + + + + + + + + @@ -6707,6 +7036,14 @@ + + + + + + + + @@ -6763,6 +7100,14 @@ + + + + + + + + @@ -6819,6 +7164,14 @@ + + + + + + + + @@ -6875,6 +7228,14 @@ + + + + + + + + @@ -6931,6 +7292,14 @@ + + + + + + + + @@ -6987,6 +7356,14 @@ + + + + + + + + @@ -7043,6 +7420,14 @@ + + + + + + + + @@ -7099,6 +7484,14 @@ + + + + + + + + @@ -7155,6 +7548,14 @@ + + + + + + + + @@ -7211,6 +7612,14 @@ + + + + + + + + @@ -7267,6 +7676,14 @@ + + + + + + + + @@ -7323,6 +7740,14 @@ + + + + + + + + @@ -7379,6 +7804,14 @@ + + + + + + + + @@ -7435,6 +7868,14 @@ + + + + + + + + @@ -8512,6 +8953,11 @@ + + + + + @@ -8536,6 +8982,14 @@ + + + + + + + + @@ -8576,6 +9030,14 @@ + + + + + + + + @@ -8600,6 +9062,14 @@ + + + + + + + + @@ -8624,6 +9094,14 @@ + + + + + + + + @@ -8648,6 +9126,14 @@ + + + + + + + + @@ -8682,6 +9168,11 @@ + + + + + @@ -8690,6 +9181,14 @@ + + + + + + + + @@ -8733,11 +9232,21 @@ + + + + + + + + + + @@ -8952,6 +9461,14 @@ + + + + + + + + @@ -9029,6 +9546,14 @@ + + + + + + + + @@ -9054,6 +9579,11 @@ + + + + + @@ -9086,6 +9616,14 @@ + + + + + + + + @@ -11430,6 +11968,14 @@ + + + + + + + + @@ -11467,6 +12013,14 @@ + + + + + + + + @@ -11693,6 +12247,22 @@ + + + + + + + + + + + + + + + + @@ -11709,6 +12279,14 @@ + + + + + + + + @@ -11725,6 +12303,14 @@ + + + + + + + + @@ -11762,6 +12348,14 @@ + + + + + + + + @@ -11813,6 +12407,14 @@ + + + + + + + + @@ -11829,6 +12431,14 @@ + + + + + + + + @@ -11894,6 +12504,14 @@ + + + + + + + + @@ -11945,6 +12563,14 @@ + + + + + + + + @@ -11961,6 +12587,14 @@ + + + + + + + + @@ -12012,6 +12646,14 @@ + + + + + + + + @@ -12077,6 +12719,14 @@ + + + + + + + + @@ -12093,6 +12743,14 @@ + + + + + + + + @@ -12109,6 +12767,14 @@ + + + + + + + + @@ -12131,6 +12797,17 @@ + + + + + + + + + + + @@ -12147,6 +12824,14 @@ + + + + + + + + @@ -12163,6 +12848,14 @@ + + + + + + + + @@ -12179,6 +12872,14 @@ + + + + + + + + @@ -12215,6 +12916,14 @@ + + + + + + + + @@ -12231,6 +12940,14 @@ + + + + + + + + @@ -12247,6 +12964,14 @@ + + + + + + + + @@ -12263,6 +12988,14 @@ + + + + + + + + @@ -12279,6 +13012,14 @@ + + + + + + + + @@ -12295,6 +13036,14 @@ + + + + + + + + @@ -12388,6 +13137,14 @@ + + + + + + + + @@ -12404,6 +13161,14 @@ + + + + + + + + @@ -12420,6 +13185,14 @@ + + + + + + + + @@ -12436,6 +13209,14 @@ + + + + + + + + @@ -12452,6 +13233,14 @@ + + + + + + + + @@ -12468,6 +13257,14 @@ + + + + + + + + @@ -12484,6 +13281,14 @@ + + + + + + + + @@ -12587,6 +13392,17 @@ + + + + + + + + + + + @@ -12649,6 +13465,11 @@ + + + + + @@ -12813,6 +13634,14 @@ + + + + + + + + @@ -12829,6 +13658,14 @@ + + + + + + + + @@ -12845,6 +13682,14 @@ + + + + + + + + @@ -12861,6 +13706,14 @@ + + + + + + + + @@ -13065,6 +13918,14 @@ + + + + + + + +