mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 19:49:33 +01:00
Merge branch 'master' into issue-4072-federated-accept-message-should-be-system
This commit is contained in:
commit
1c52acc95d
@ -1,4 +1,4 @@
|
||||
FROM ubuntu:noble@sha256:2e863c44b718727c860746568e1d54afd13b2fa71b160f5cd9058fc436217b30
|
||||
FROM ubuntu:noble@sha256:8a37d68f4f73ebf3d4efafbcf66379bf3728902a8038616808f04e34a9ab63ee
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ENV ANDROID_HOME=/usr/lib/android-sdk
|
||||
|
4
.github/workflows/codeql.yml
vendored
4
.github/workflows/codeql.yml
vendored
@ -39,7 +39,7 @@ jobs:
|
||||
with:
|
||||
swap-size-gb: 10
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2
|
||||
uses: github/codeql-action/init@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
- name: Set up JDK 17
|
||||
@ -53,4 +53,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@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2
|
||||
uses: github/codeql-action/analyze@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3
|
||||
|
2
.github/workflows/scorecard.yml
vendored
2
.github/workflows/scorecard.yml
vendored
@ -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@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2
|
||||
uses: github/codeql-action/upload-sarif@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
@ -15,7 +15,7 @@ import com.github.spotbugs.snom.SpotBugsTask
|
||||
plugins {
|
||||
id "org.jetbrains.kotlin.plugin.compose" version "2.0.10"
|
||||
id "org.jetbrains.kotlin.kapt"
|
||||
id 'com.google.devtools.ksp' version '2.0.0-1.0.24'
|
||||
id 'com.google.devtools.ksp' version '2.0.10-1.0.24'
|
||||
}
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
@ -93,11 +93,11 @@ android {
|
||||
buildConfigField "String", "PERMISSION_LOCAL_BROADCAST", "\"${localBroadcastPermission}\""
|
||||
}
|
||||
|
||||
testOptions {
|
||||
unitTests.all {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
}
|
||||
// testOptions {
|
||||
// unitTests.all {
|
||||
// useJUnitPlatform()
|
||||
// }
|
||||
// }
|
||||
|
||||
buildTypes {
|
||||
release {
|
||||
@ -133,7 +133,7 @@ android {
|
||||
}
|
||||
|
||||
composeOptions {
|
||||
kotlinCompilerExtensionVersion = "1.5.14"
|
||||
kotlinCompilerExtensionVersion = "1.5.15"
|
||||
}
|
||||
|
||||
lint {
|
||||
@ -184,7 +184,7 @@ dependencies {
|
||||
implementation 'androidx.preference:preference-ktx:1.2.1'
|
||||
implementation 'androidx.datastore:datastore-core:1.1.1'
|
||||
implementation 'androidx.datastore:datastore-preferences:1.1.1'
|
||||
implementation 'androidx.test.ext:junit-ktx:1.1.5'
|
||||
implementation 'androidx.test.ext:junit-ktx:1.2.1'
|
||||
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:1.23.6")
|
||||
|
||||
implementation fileTree(include: ['*'], dir: 'libs')
|
||||
@ -207,7 +207,7 @@ dependencies {
|
||||
implementation ('com.github.bitfireAT:dav4jvm:2.1.3', {
|
||||
exclude group: 'org.ogce', module: 'xpp3' // Android comes with its own XmlPullParser
|
||||
})
|
||||
implementation 'org.conscrypt:conscrypt-android:2.5.2'
|
||||
implementation 'org.conscrypt:conscrypt-android:2.5.3'
|
||||
|
||||
implementation "androidx.camera:camera-core:${androidxCameraVersion}"
|
||||
implementation "androidx.camera:camera-camera2:${androidxCameraVersion}"
|
||||
@ -292,19 +292,19 @@ dependencies {
|
||||
|
||||
implementation 'com.github.nextcloud-deps:ImagePicker:2.1.0.2'
|
||||
implementation 'io.github.elye:loaderviewlibrary:3.0.0'
|
||||
implementation 'org.osmdroid:osmdroid-android:6.1.18'
|
||||
implementation 'org.osmdroid:osmdroid-android:6.1.20'
|
||||
implementation ('fr.dudie:nominatim-api:3.4', {
|
||||
//noinspection DuplicatePlatformClasses
|
||||
exclude group: 'org.apache.httpcomponents', module: 'httpclient'
|
||||
})
|
||||
|
||||
implementation 'androidx.core:core-ktx:1.13.1'
|
||||
implementation 'androidx.activity:activity-ktx:1.9.0'
|
||||
implementation 'com.github.nextcloud.android-common:ui:0.21.0'
|
||||
implementation 'androidx.activity:activity-ktx:1.9.1'
|
||||
implementation 'com.github.nextcloud.android-common:ui:0.23.0'
|
||||
implementation 'com.github.nextcloud-deps:android-talk-webrtc:121.6167.0'
|
||||
|
||||
gplayImplementation 'com.google.android.gms:play-services-base:18.4.0'
|
||||
gplayImplementation "com.google.firebase:firebase-messaging:23.4.1"
|
||||
gplayImplementation 'com.google.android.gms:play-services-base:18.5.0'
|
||||
gplayImplementation "com.google.firebase:firebase-messaging:24.0.0"
|
||||
|
||||
//compose
|
||||
implementation(platform("androidx.compose:compose-bom:2024.06.00"))
|
||||
@ -323,7 +323,7 @@ dependencies {
|
||||
testImplementation 'org.mockito:mockito-core:5.12.0'
|
||||
testImplementation 'androidx.arch.core:core-testing:2.2.0'
|
||||
|
||||
androidTestImplementation "androidx.test:core:1.5.0"
|
||||
androidTestImplementation "androidx.test:core:1.6.1"
|
||||
|
||||
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.1"
|
||||
androidTestImplementation 'androidx.test:core-ktx:1.6.1'
|
||||
|
@ -52,7 +52,6 @@ class ChatBlocksDaoTest {
|
||||
@Test
|
||||
fun testGetConnectedChatBlocks() =
|
||||
runTest {
|
||||
|
||||
usersDao.saveUser(createUserEntity("account1", "Account 1"))
|
||||
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
|
||||
|
||||
@ -67,7 +66,7 @@ class ChatBlocksDaoTest {
|
||||
accountId = account1.id,
|
||||
"def",
|
||||
roomName = "Conversation Two"
|
||||
),
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -13,21 +13,19 @@ import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import autodagger.AutoInjector
|
||||
import coil.load
|
||||
import com.nextcloud.android.common.ui.theme.utils.ColorRole
|
||||
import com.nextcloud.talk.R
|
||||
import com.nextcloud.talk.adapters.messages.OutcomingPollMessageViewHolder.Companion
|
||||
import com.nextcloud.talk.api.NcApi
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||
import com.nextcloud.talk.chat.ChatActivity
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.databinding.ItemCustomIncomingLinkPreviewMessageBinding
|
||||
import com.nextcloud.talk.extensions.loadBotsAvatar
|
||||
import com.nextcloud.talk.extensions.loadChangelogBotAvatar
|
||||
import com.nextcloud.talk.extensions.loadFederatedUserAvatar
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
import com.nextcloud.talk.utils.ApiUtils
|
||||
import com.nextcloud.talk.utils.DateUtils
|
||||
|
@ -20,21 +20,19 @@ import android.view.MotionEvent
|
||||
import android.view.View
|
||||
import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import autodagger.AutoInjector
|
||||
import coil.load
|
||||
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.adapters.messages.IncomingPollMessageViewHolder.Companion
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||
import com.nextcloud.talk.chat.ChatActivity
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.databinding.ItemCustomIncomingLocationMessageBinding
|
||||
import com.nextcloud.talk.extensions.loadBotsAvatar
|
||||
import com.nextcloud.talk.extensions.loadChangelogBotAvatar
|
||||
import com.nextcloud.talk.extensions.loadFederatedUserAvatar
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
import com.nextcloud.talk.utils.ApiUtils
|
||||
import com.nextcloud.talk.utils.DateUtils
|
||||
|
@ -12,21 +12,19 @@ import android.text.TextUtils
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import autodagger.AutoInjector
|
||||
import coil.load
|
||||
import com.nextcloud.android.common.ui.theme.utils.ColorRole
|
||||
import com.nextcloud.talk.R
|
||||
import com.nextcloud.talk.adapters.messages.IncomingTextMessageViewHolder.Companion
|
||||
import com.nextcloud.talk.api.NcApi
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||
import com.nextcloud.talk.chat.ChatActivity
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.databinding.ItemCustomIncomingPollMessageBinding
|
||||
import com.nextcloud.talk.extensions.loadBotsAvatar
|
||||
import com.nextcloud.talk.extensions.loadChangelogBotAvatar
|
||||
import com.nextcloud.talk.extensions.loadFederatedUserAvatar
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.polls.ui.PollMainDialogFragment
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
import com.nextcloud.talk.utils.ApiUtils
|
||||
|
@ -15,7 +15,6 @@ import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import autodagger.AutoInjector
|
||||
import coil.load
|
||||
import com.nextcloud.android.common.ui.theme.utils.ColorRole
|
||||
@ -23,11 +22,11 @@ import com.nextcloud.talk.R
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||
import com.nextcloud.talk.chat.ChatActivity
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.databinding.ItemCustomIncomingTextMessageBinding
|
||||
import com.nextcloud.talk.extensions.loadBotsAvatar
|
||||
import com.nextcloud.talk.extensions.loadChangelogBotAvatar
|
||||
import com.nextcloud.talk.extensions.loadFederatedUserAvatar
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
import com.nextcloud.talk.utils.ApiUtils
|
||||
import com.nextcloud.talk.utils.DateUtils
|
||||
@ -37,9 +36,7 @@ import com.nextcloud.talk.utils.preferences.AppPreferences
|
||||
import com.stfalcon.chatkit.messages.MessageHolders
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.flowOf
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import javax.inject.Inject
|
||||
|
@ -12,18 +12,16 @@ import android.content.Context
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import autodagger.AutoInjector
|
||||
import coil.load
|
||||
import com.nextcloud.android.common.ui.theme.utils.ColorRole
|
||||
import com.nextcloud.talk.R
|
||||
import com.nextcloud.talk.adapters.messages.OutcomingPollMessageViewHolder.Companion
|
||||
import com.nextcloud.talk.api.NcApi
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||
import com.nextcloud.talk.chat.ChatActivity
|
||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingLinkPreviewMessageBinding
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingLinkPreviewMessageBinding
|
||||
import com.nextcloud.talk.models.json.chat.ReadStatus
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
import com.nextcloud.talk.utils.ApiUtils
|
||||
@ -164,32 +162,32 @@ class OutcomingLinkPreviewMessageViewHolder(outcomingView: View, payload: Any) :
|
||||
message.parentMessageId!!
|
||||
).first()
|
||||
}
|
||||
parentChatMessage.activeUser = message.activeUser
|
||||
parentChatMessage.imageUrl?.let {
|
||||
binding.messageQuote.quotedMessageImage.visibility = View.VISIBLE
|
||||
binding.messageQuote.quotedMessageImage.load(it) {
|
||||
addHeader(
|
||||
"Authorization",
|
||||
ApiUtils.getCredentials(message.activeUser!!.username, message.activeUser!!.token)!!
|
||||
)
|
||||
}
|
||||
} ?: run {
|
||||
binding.messageQuote.quotedMessageImage.visibility = View.GONE
|
||||
}
|
||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||
?: context.getText(R.string.nc_nick_guest)
|
||||
binding.messageQuote.quotedMessage.text = messageUtils
|
||||
.enrichChatReplyMessageText(
|
||||
binding.messageQuote.quotedMessage.context,
|
||||
parentChatMessage,
|
||||
false,
|
||||
viewThemeUtils
|
||||
parentChatMessage.activeUser = message.activeUser
|
||||
parentChatMessage.imageUrl?.let {
|
||||
binding.messageQuote.quotedMessageImage.visibility = View.VISIBLE
|
||||
binding.messageQuote.quotedMessageImage.load(it) {
|
||||
addHeader(
|
||||
"Authorization",
|
||||
ApiUtils.getCredentials(message.activeUser!!.username, message.activeUser!!.token)!!
|
||||
)
|
||||
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||
viewThemeUtils.talk.colorOutgoingQuoteAuthorText(binding.messageQuote.quotedMessageAuthor)
|
||||
viewThemeUtils.talk.colorOutgoingQuoteBackground(binding.messageQuote.quoteColoredView)
|
||||
}
|
||||
} ?: run {
|
||||
binding.messageQuote.quotedMessageImage.visibility = View.GONE
|
||||
}
|
||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||
?: context.getText(R.string.nc_nick_guest)
|
||||
binding.messageQuote.quotedMessage.text = messageUtils
|
||||
.enrichChatReplyMessageText(
|
||||
binding.messageQuote.quotedMessage.context,
|
||||
parentChatMessage,
|
||||
false,
|
||||
viewThemeUtils
|
||||
)
|
||||
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||
viewThemeUtils.talk.colorOutgoingQuoteAuthorText(binding.messageQuote.quotedMessageAuthor)
|
||||
viewThemeUtils.talk.colorOutgoingQuoteBackground(binding.messageQuote.quoteColoredView)
|
||||
|
||||
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
|
||||
binding.messageQuote.quotedChatMessageView.visibility = View.VISIBLE
|
||||
} catch (e: Exception) {
|
||||
Log.d(TAG, "Error when processing parent message in view holder", e)
|
||||
}
|
||||
|
@ -18,19 +18,17 @@ import android.view.View
|
||||
import android.webkit.WebView
|
||||
import android.webkit.WebViewClient
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import autodagger.AutoInjector
|
||||
import coil.load
|
||||
import com.google.android.flexbox.FlexboxLayout
|
||||
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.adapters.messages.IncomingPollMessageViewHolder.Companion
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||
import com.nextcloud.talk.chat.ChatActivity
|
||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingLocationMessageBinding
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingLocationMessageBinding
|
||||
import com.nextcloud.talk.models.json.chat.ReadStatus
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
import com.nextcloud.talk.utils.ApiUtils
|
||||
|
@ -12,18 +12,16 @@ import android.content.Context
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import autodagger.AutoInjector
|
||||
import coil.load
|
||||
import com.nextcloud.android.common.ui.theme.utils.ColorRole
|
||||
import com.nextcloud.talk.R
|
||||
import com.nextcloud.talk.adapters.messages.IncomingPollMessageViewHolder.Companion
|
||||
import com.nextcloud.talk.api.NcApi
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||
import com.nextcloud.talk.chat.ChatActivity
|
||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingPollMessageBinding
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingPollMessageBinding
|
||||
import com.nextcloud.talk.models.json.chat.ReadStatus
|
||||
import com.nextcloud.talk.polls.ui.PollMainDialogFragment
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
|
@ -17,19 +17,17 @@ import android.view.View
|
||||
import android.widget.SeekBar
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.work.WorkInfo
|
||||
import androidx.work.WorkManager
|
||||
import autodagger.AutoInjector
|
||||
import coil.load
|
||||
import com.nextcloud.android.common.ui.theme.utils.ColorRole
|
||||
import com.nextcloud.talk.R
|
||||
import com.nextcloud.talk.adapters.messages.IncomingPollMessageViewHolder.Companion
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication
|
||||
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
|
||||
import com.nextcloud.talk.chat.ChatActivity
|
||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingVoiceMessageBinding
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.databinding.ItemCustomOutcomingVoiceMessageBinding
|
||||
import com.nextcloud.talk.models.json.chat.ReadStatus
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
import com.nextcloud.talk.utils.ApiUtils
|
||||
|
@ -289,6 +289,7 @@ class ChatActivity :
|
||||
var newMessagesCount = 0
|
||||
var startCallFromNotification: Boolean = false
|
||||
var startCallFromRoomSwitch: Boolean = false
|
||||
|
||||
// lateinit var roomId: String
|
||||
var voiceOnly: Boolean = true
|
||||
private lateinit var path: String
|
||||
@ -598,7 +599,7 @@ class ChatActivity :
|
||||
|
||||
chatViewModel.loadMessages(
|
||||
withCredentials = credentials!!,
|
||||
withUrl = urlForChatting,
|
||||
withUrl = urlForChatting
|
||||
)
|
||||
}
|
||||
|
||||
@ -983,7 +984,8 @@ class ChatActivity :
|
||||
|
||||
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
|
||||
if (layoutManager!!.findFirstCompletelyVisibleItemPosition() > 0 &&
|
||||
!binding.unreadMessagesPopup.isShown) {
|
||||
!binding.unreadMessagesPopup.isShown
|
||||
) {
|
||||
binding.scrollDownButton.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.scrollDownButton.visibility = View.GONE
|
||||
@ -2502,7 +2504,6 @@ class ChatActivity :
|
||||
unreadChatMessage.message = context.getString(R.string.nc_new_messages)
|
||||
adapter?.addToStart(unreadChatMessage, false)
|
||||
|
||||
|
||||
if (scrollToEndOnUpdate) {
|
||||
binding.scrollDownButton.visibility = View.GONE
|
||||
newMessagesCount = 0
|
||||
@ -2517,7 +2518,6 @@ class ChatActivity :
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (chatMessage in chatMessageList) {
|
||||
chatMessage.activeUser = conversationUser
|
||||
|
||||
@ -2628,7 +2628,6 @@ class ChatActivity :
|
||||
// see getImageUrl() source code
|
||||
setUpWaveform(currentlyPlayedVoiceMessage!!, voiceMessageToRestoreWasPlaying)
|
||||
Log.d(RESUME_AUDIO_TAG, "resume audio procedure completed")
|
||||
|
||||
} else {
|
||||
Log.d(RESUME_AUDIO_TAG, "No voice message to restore")
|
||||
}
|
||||
@ -2637,7 +2636,7 @@ class ChatActivity :
|
||||
voiceMessageToRestoreWasPlaying = false
|
||||
}
|
||||
|
||||
private fun getItemFromAdapter(messageId: String): Pair<ChatMessage,Int>? {
|
||||
private fun getItemFromAdapter(messageId: String): Pair<ChatMessage, Int>? {
|
||||
if (adapter != null) {
|
||||
val messagePosition = adapter!!.items!!.indexOfFirst {
|
||||
it.item is ChatMessage && (it.item as ChatMessage).id == messageId
|
||||
@ -2650,9 +2649,7 @@ class ChatActivity :
|
||||
Log.d(TAG, "currentItem retrieved was not chatmessage or its id was not correct")
|
||||
}
|
||||
} else {
|
||||
Log.d(
|
||||
TAG, "messagePosition is -1, adapter # of items: " + adapter!!.itemCount
|
||||
)
|
||||
Log.d(TAG, "messagePosition is -1, adapter # of items: " + adapter!!.itemCount)
|
||||
}
|
||||
} else {
|
||||
Log.d(TAG, "TalkMessagesListAdapter is null")
|
||||
@ -2829,7 +2826,6 @@ class ChatActivity :
|
||||
while (chatMessageIterator.hasNext()) {
|
||||
val currentMessage = chatMessageIterator.next()
|
||||
|
||||
|
||||
if (isInfoMessageAboutDeletion(currentMessage) ||
|
||||
isReactionsMessage(currentMessage) ||
|
||||
isPollVotedMessage(currentMessage) ||
|
||||
@ -3174,7 +3170,7 @@ class ChatActivity :
|
||||
val lon = data["longitude"]!!
|
||||
metaData =
|
||||
"{\"type\":\"geo-location\",\"id\":\"geo:$lat,$lon\",\"latitude\":\"$lat\"," +
|
||||
"\"longitude\":\"$lon\",\"name\":\"$name\"}"
|
||||
"\"longitude\":\"$lon\",\"name\":\"$name\"}"
|
||||
}
|
||||
|
||||
when (type) {
|
||||
|
@ -32,11 +32,7 @@ interface ChatMessageRepository : LifecycleAwareManager {
|
||||
|
||||
val lastCommonReadFlow: Flow<Int>
|
||||
|
||||
fun setData(
|
||||
conversationModel: ConversationModel,
|
||||
credentials: String,
|
||||
urlForChatting: String
|
||||
)
|
||||
fun setData(conversationModel: ConversationModel, credentials: String, urlForChatting: String)
|
||||
|
||||
fun loadInitialMessages(withNetworkParams: Bundle): Job
|
||||
|
||||
|
@ -90,11 +90,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
||||
private lateinit var credentials: String
|
||||
private lateinit var urlForChatting: String
|
||||
|
||||
override fun setData(
|
||||
conversationModel: ConversationModel,
|
||||
credentials: String,
|
||||
urlForChatting: String
|
||||
) {
|
||||
override fun setData(conversationModel: ConversationModel, credentials: String, urlForChatting: String) {
|
||||
this.conversationModel = conversationModel
|
||||
this.credentials = credentials
|
||||
this.urlForChatting = urlForChatting
|
||||
@ -213,9 +209,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun hasToLoadPreviousMessagesFromServer(
|
||||
beforeMessageId: Long
|
||||
): Boolean {
|
||||
private suspend fun hasToLoadPreviousMessagesFromServer(beforeMessageId: Long): Boolean {
|
||||
val loadFromServer: Boolean
|
||||
|
||||
val blockForMessage = getBlockOfMessage(beforeMessageId.toInt())
|
||||
@ -239,7 +233,8 @@ class OfflineFirstChatRepository @Inject constructor(
|
||||
loadFromServer = amountBetween < 100
|
||||
|
||||
Log.d(
|
||||
TAG, "Amount between messageId " + beforeMessageId + " and " + blockForMessage.oldestMessageId +
|
||||
TAG,
|
||||
"Amount between messageId " + beforeMessageId + " and " + blockForMessage.oldestMessageId +
|
||||
" is: " + amountBetween + " so 'loadFromServer' is " + loadFromServer
|
||||
)
|
||||
}
|
||||
@ -272,9 +267,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
||||
return fieldMap
|
||||
}
|
||||
|
||||
override suspend fun getMessage(messageId: Long, bundle: Bundle):
|
||||
Flow<ChatMessage> {
|
||||
|
||||
override suspend fun getMessage(messageId: Long, bundle: Bundle): Flow<ChatMessage> {
|
||||
Log.d(TAG, "Get message with id $messageId")
|
||||
val loadFromServer = hasToLoadPreviousMessagesFromServer(messageId)
|
||||
|
||||
@ -511,12 +504,12 @@ class OfflineFirstChatRepository @Inject constructor(
|
||||
chatBlock.newestMessageId
|
||||
).first()
|
||||
|
||||
if (connectedChatBlocks.size == 1) {
|
||||
return if (connectedChatBlocks.size == 1) {
|
||||
Log.d(TAG, "This chatBlock is not connected to others")
|
||||
val chatBlockFromDb = connectedChatBlocks[0]
|
||||
Log.d(TAG, "chatBlockFromDb.oldestMessageId: " + chatBlockFromDb.oldestMessageId)
|
||||
Log.d(TAG, "chatBlockFromDb.newestMessageId: " + chatBlockFromDb.newestMessageId)
|
||||
return chatBlockFromDb
|
||||
chatBlockFromDb
|
||||
} else if (connectedChatBlocks.size > 1) {
|
||||
Log.d(TAG, "Found " + connectedChatBlocks.size + " chat blocks that are connected")
|
||||
val oldestIdFromDbChatBlocks =
|
||||
@ -543,10 +536,10 @@ class OfflineFirstChatRepository @Inject constructor(
|
||||
Log.d(TAG, "A new chat block was created that covers all the range of the found chatblocks")
|
||||
Log.d(TAG, "new chatBlock - oldest MessageId: $oldestIdFromDbChatBlocks")
|
||||
Log.d(TAG, "new chatBlock - newest MessageId: $newestIdFromDbChatBlocks")
|
||||
return newChatBlock
|
||||
newChatBlock
|
||||
} else {
|
||||
Log.d(TAG, "No chat block found ....")
|
||||
return null
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -217,16 +217,8 @@ class ChatViewModel @Inject constructor(
|
||||
val reactionDeletedViewState: LiveData<ViewState>
|
||||
get() = _reactionDeletedViewState
|
||||
|
||||
fun setData(
|
||||
conversationModel: ConversationModel,
|
||||
credentials: String,
|
||||
urlForChatting: String
|
||||
) {
|
||||
chatRepository.setData(
|
||||
conversationModel,
|
||||
credentials,
|
||||
urlForChatting
|
||||
)
|
||||
fun setData(conversationModel: ConversationModel, credentials: String, urlForChatting: String) {
|
||||
chatRepository.setData(conversationModel, credentials, urlForChatting)
|
||||
}
|
||||
|
||||
fun getRoom(user: User, token: String) {
|
||||
|
@ -109,6 +109,7 @@ class ContactsActivityCompose : BaseActivity() {
|
||||
)
|
||||
}
|
||||
}
|
||||
setupSystemColors()
|
||||
}
|
||||
}
|
||||
|
||||
@ -132,7 +133,7 @@ fun ContactsList(contactsUiState: ContactsUiState, contactsViewModel: ContactsVi
|
||||
is ContactsUiState.Error -> {
|
||||
val errorMessage = contactsUiState.message
|
||||
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||
Text(text = "Error: $errorMessage", color = Color.Red)
|
||||
Text(text = "Error: $errorMessage", color = MaterialTheme.colorScheme.error)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -165,7 +166,7 @@ fun ContactsItem(contacts: List<AutocompleteUser>, contactsViewModel: ContactsVi
|
||||
Surface(Modifier.fillParentMaxWidth()) {
|
||||
Header(initial)
|
||||
}
|
||||
HorizontalDivider(thickness = 0.1.dp, color = Color.Black)
|
||||
HorizontalDivider(thickness = 1.dp, color = MaterialTheme.colorScheme.outlineVariant)
|
||||
}
|
||||
}
|
||||
items(contactsForInitial) { contact ->
|
||||
@ -184,7 +185,7 @@ fun Header(header: String) {
|
||||
.fillMaxSize()
|
||||
.background(Color.Transparent)
|
||||
.padding(start = 60.dp),
|
||||
color = Color.Blue,
|
||||
color = MaterialTheme.colorScheme.primary,
|
||||
fontWeight = FontWeight.Bold
|
||||
)
|
||||
}
|
||||
@ -229,7 +230,7 @@ fun ContactItemRow(contact: AutocompleteUser, contactsViewModel: ContactsViewMod
|
||||
is RoomUiState.Error -> {
|
||||
val errorMessage = (roomUiState as RoomUiState.Error).message
|
||||
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||
Text(text = "Error: $errorMessage", color = Color.Red)
|
||||
Text(text = "Error: $errorMessage", color = MaterialTheme.colorScheme.error)
|
||||
}
|
||||
}
|
||||
is RoomUiState.None -> {}
|
||||
|
@ -121,7 +121,6 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FORWARD_MSG_FLAG
|
||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FORWARD_MSG_TEXT
|
||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID
|
||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_NEW_CONVERSATION
|
||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_ID
|
||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
|
||||
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SHARED_TEXT
|
||||
import com.nextcloud.talk.utils.permissions.PlatformPermissionUtil
|
||||
|
@ -57,7 +57,6 @@ interface ChatBlocksDao {
|
||||
)
|
||||
fun getChatBlocksContainingMessageId(internalConversationId: String, messageId: Long): Flow<List<ChatBlockEntity?>>
|
||||
|
||||
|
||||
@Query(
|
||||
"""
|
||||
SELECT *
|
||||
|
@ -7,11 +7,9 @@
|
||||
|
||||
package com.nextcloud.talk.data.database.mappers
|
||||
|
||||
import com.nextcloud.talk.models.json.chat.ChatMessageJson
|
||||
import com.nextcloud.talk.data.database.model.ChatMessageEntity
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.data.database.dao.ChatMessagesDao
|
||||
import kotlinx.coroutines.flow.first
|
||||
import com.nextcloud.talk.data.database.model.ChatMessageEntity
|
||||
import com.nextcloud.talk.models.json.chat.ChatMessageJson
|
||||
|
||||
fun ChatMessageJson.asEntity(accountId: Long) =
|
||||
ChatMessageEntity(
|
||||
|
@ -63,7 +63,7 @@ data class ChatMessageEntity(
|
||||
@ColumnInfo(name = "reactions") var reactions: LinkedHashMap<String, Int>? = null,
|
||||
@ColumnInfo(name = "reactionsSelf") var reactionsSelf: ArrayList<String>? = null,
|
||||
@ColumnInfo(name = "systemMessage") var systemMessageType: ChatMessage.SystemMessageType,
|
||||
@ColumnInfo(name = "timestamp") var timestamp: Long = 0,
|
||||
@ColumnInfo(name = "timestamp") var timestamp: Long = 0
|
||||
// missing/not needed: referenceId
|
||||
// missing/not needed: silent
|
||||
)
|
||||
|
@ -92,7 +92,7 @@ data class ConversationEntity(
|
||||
@ColumnInfo(name = "type") var type: ConversationEnums.ConversationType,
|
||||
@ColumnInfo(name = "unreadMention") var unreadMention: Boolean = false,
|
||||
@ColumnInfo(name = "unreadMentionDirect") var unreadMentionDirect: Boolean,
|
||||
@ColumnInfo(name = "unreadMessages") var unreadMessages: Int = 0,
|
||||
@ColumnInfo(name = "unreadMessages") var unreadMessages: Int = 0
|
||||
// missing/not needed: attendeeId
|
||||
// missing/not needed: attendeePin
|
||||
// missing/not needed: attendeePermissions
|
||||
|
@ -210,11 +210,13 @@ object Migrations {
|
||||
)
|
||||
|
||||
db.execSQL(
|
||||
"CREATE UNIQUE INDEX IF NOT EXISTS `index_ChatMessages_internalId` ON `ChatMessages` (`internalId`)"
|
||||
"CREATE UNIQUE INDEX IF NOT EXISTS `index_ChatMessages_internalId` " +
|
||||
"ON `ChatMessages` (`internalId`)"
|
||||
)
|
||||
|
||||
db.execSQL(
|
||||
"CREATE INDEX IF NOT EXISTS `index_ChatMessages_internalConversationId` ON `ChatMessages` (`internalConversationId`)"
|
||||
"CREATE INDEX IF NOT EXISTS `index_ChatMessages_internalConversationId` " +
|
||||
"ON `ChatMessages` (`internalConversationId`)"
|
||||
)
|
||||
|
||||
db.execSQL(
|
||||
@ -231,7 +233,8 @@ object Migrations {
|
||||
)
|
||||
|
||||
db.execSQL(
|
||||
"CREATE INDEX IF NOT EXISTS `index_ChatBlocks_internalConversationId` ON `ChatBlocks` (`internalConversationId`)"
|
||||
"CREATE INDEX IF NOT EXISTS `index_ChatBlocks_internalConversationId` " +
|
||||
"ON `ChatBlocks` (`internalConversationId`)"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ import java.util.Locale
|
||||
],
|
||||
version = 11,
|
||||
autoMigrations = [
|
||||
AutoMigration(from = 9, to = 10),
|
||||
AutoMigration(from = 9, to = 10)
|
||||
],
|
||||
exportSchema = true
|
||||
)
|
||||
|
@ -62,7 +62,7 @@ class ConversationModel(
|
||||
var remoteToken: String? = null,
|
||||
|
||||
// attributes that don't come from API. This should be changed?!
|
||||
var password: String? = null,
|
||||
var password: String? = null
|
||||
) {
|
||||
|
||||
companion object {
|
||||
|
@ -42,5 +42,5 @@ data class ChatMessageJson(
|
||||
@JsonField(name = ["lastEditActorId"]) var lastEditActorId: String? = null,
|
||||
@JsonField(name = ["lastEditActorType"]) var lastEditActorType: String? = null,
|
||||
@JsonField(name = ["lastEditTimestamp"]) var lastEditTimestamp: Long? = 0,
|
||||
@JsonField(name = ["deleted"]) var deleted: Boolean = false,
|
||||
@JsonField(name = ["deleted"]) var deleted: Boolean = false
|
||||
) : Parcelable
|
||||
|
@ -32,24 +32,34 @@ data class Conversation(
|
||||
// var roomId: String? = null,
|
||||
@JsonField(name = ["token"])
|
||||
var token: String? = null,
|
||||
|
||||
@JsonField(name = ["name"])
|
||||
var name: String? = null,
|
||||
|
||||
@JsonField(name = ["displayName"])
|
||||
var displayName: String? = null,
|
||||
|
||||
@JsonField(name = ["description"])
|
||||
var description: String? = null,
|
||||
|
||||
@JsonField(name = ["type"], typeConverter = EnumRoomTypeConverter::class)
|
||||
var type: ConversationEnums.ConversationType? = null,
|
||||
|
||||
@JsonField(name = ["lastPing"])
|
||||
var lastPing: Long = 0,
|
||||
|
||||
@JsonField(name = ["participantType"], typeConverter = EnumParticipantTypeConverter::class)
|
||||
var participantType: ParticipantType? = null,
|
||||
|
||||
@JsonField(name = ["hasPassword"])
|
||||
var hasPassword: Boolean = false,
|
||||
|
||||
@JsonField(name = ["sessionId"])
|
||||
var sessionId: String? = null,
|
||||
|
||||
@JsonField(name = ["actorId"])
|
||||
var actorId: String? = null,
|
||||
|
||||
@JsonField(name = ["actorType"])
|
||||
var actorType: String? = null,
|
||||
|
||||
@ -152,8 +162,7 @@ data class Conversation(
|
||||
var remoteServer: String? = null,
|
||||
|
||||
@JsonField(name = ["remoteToken"])
|
||||
var remoteToken: String? = null,
|
||||
|
||||
var remoteToken: String? = null
|
||||
) : Parcelable {
|
||||
@Deprecated("Use ConversationUtil")
|
||||
val isPublic: Boolean
|
||||
|
@ -82,7 +82,7 @@ class DialogBanListFragment(val roomToken: String) : DialogFragment() {
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
|
||||
binding = FragmentDialogBanListBinding.inflate(LayoutInflater.from(context))
|
||||
binding = FragmentDialogBanListBinding.inflate(layoutInflater)
|
||||
viewModel =
|
||||
ViewModelProvider(this, viewModelFactory)[ConversationInfoViewModel::class.java]
|
||||
conversationUser = currentUserProvider.currentUser.blockingGet()
|
||||
|
@ -77,6 +77,8 @@ object DisplayUtils {
|
||||
private const val TWITTER_HANDLE_PREFIX = "@"
|
||||
private const val HTTP_PROTOCOL = "http://"
|
||||
private const val HTTPS_PROTOCOL = "https://"
|
||||
private const val HTTP_MIN_LENGTH: Int = 7
|
||||
private const val HTTPS_MIN_LENGTH: Int = 7
|
||||
private const val DATE_TIME_PARTS_SIZE = 2
|
||||
fun isDarkModeOn(context: Context): Boolean {
|
||||
val currentNightMode = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
|
||||
@ -394,10 +396,14 @@ object DisplayUtils {
|
||||
if (TextUtils.isEmpty(url)) {
|
||||
return ""
|
||||
}
|
||||
if (url!!.length >= 7 && HTTP_PROTOCOL.equals(url.substring(0, 7), ignoreCase = true)) {
|
||||
if (url!!.length >= HTTP_MIN_LENGTH &&
|
||||
HTTP_PROTOCOL.equals(url.substring(0, HTTP_MIN_LENGTH), ignoreCase = true)
|
||||
) {
|
||||
return url.substring(HTTP_PROTOCOL.length).trim { it <= ' ' }
|
||||
}
|
||||
return if (url.length >= 8 && HTTPS_PROTOCOL.equals(url.substring(0, 8), ignoreCase = true)) {
|
||||
return if (url.length >= HTTPS_MIN_LENGTH &&
|
||||
HTTPS_PROTOCOL.equals(url.substring(0, HTTPS_MIN_LENGTH), ignoreCase = true)
|
||||
) {
|
||||
url.substring(HTTPS_PROTOCOL.length).trim { it <= ' ' }
|
||||
} else {
|
||||
url.trim { it <= ' ' }
|
||||
|
@ -162,26 +162,26 @@ class PushUtils {
|
||||
var keyGen: KeyPairGenerator? = null
|
||||
try {
|
||||
keyGen = KeyPairGenerator.getInstance("RSA")
|
||||
keyGen.initialize(2048)
|
||||
keyGen.initialize(RSA_KEY_SIZE)
|
||||
val pair = keyGen.generateKeyPair()
|
||||
val statusPrivate = saveKeyToFile(pair.private, privateKeyFile.absolutePath)
|
||||
val statusPublic = saveKeyToFile(pair.public, publicKeyFile.absolutePath)
|
||||
return if (statusPrivate == 0 && statusPublic == 0) {
|
||||
// all went well
|
||||
0
|
||||
RETURN_CODE_KEY_GENERATION_SUCCESSFUL
|
||||
} else {
|
||||
-2
|
||||
RETURN_CODE_KEY_GENERATION_FAILED
|
||||
}
|
||||
} catch (e: NoSuchAlgorithmException) {
|
||||
Log.d(TAG, "RSA algorithm not supported")
|
||||
}
|
||||
} else {
|
||||
// We already have the key
|
||||
return -1
|
||||
return RETURN_CODE_KEY_ALREADY_EXISTS
|
||||
}
|
||||
|
||||
// we failed to generate the key
|
||||
return -2
|
||||
return RETURN_CODE_KEY_GENERATION_FAILED
|
||||
}
|
||||
|
||||
fun pushRegistrationToServer(ncApi: NcApi) {
|
||||
@ -399,6 +399,10 @@ class PushUtils {
|
||||
|
||||
companion object {
|
||||
private const val TAG = "PushUtils"
|
||||
private const val RSA_KEY_SIZE: Int = 2048
|
||||
private const val RETURN_CODE_KEY_GENERATION_SUCCESSFUL: Int = 0
|
||||
private const val RETURN_CODE_KEY_ALREADY_EXISTS: Int = -1
|
||||
private const val RETURN_CODE_KEY_GENERATION_FAILED: Int = -2
|
||||
const val LATEST_PUSH_REGISTRATION_AT_SERVER: String = "LATEST_PUSH_REGISTRATION_AT_SERVER"
|
||||
const val LATEST_PUSH_REGISTRATION_AT_PUSH_PROXY: String = "LATEST_PUSH_REGISTRATION_AT_PUSH_PROXY"
|
||||
}
|
||||
|
@ -503,10 +503,10 @@ class AppPreferencesImpl(val context: Context) : AppPreferences {
|
||||
for (msgStr in queueStr.split("]")) {
|
||||
try {
|
||||
val msgArray = msgStr.replace("[", "").split(",")
|
||||
val message = msgArray[0]
|
||||
val replyTo = msgArray[1].toInt()
|
||||
val displayName = msgArray[2]
|
||||
val silent = msgArray[3].toBoolean()
|
||||
val message = msgArray[MESSAGE_INDEX]
|
||||
val replyTo = msgArray[REPLY_TO_INDEX].toInt()
|
||||
val displayName = msgArray[DISPLY_NAME_INDEX]
|
||||
val silent = msgArray[SILENT_INDEX].toBoolean()
|
||||
|
||||
val qMsg = MessageInputViewModel.QueuedMessage(message, displayName, replyTo, silent)
|
||||
queue.add(qMsg)
|
||||
@ -570,6 +570,10 @@ class AppPreferencesImpl(val context: Context) : AppPreferences {
|
||||
@Suppress("UnusedPrivateProperty")
|
||||
private val TAG = AppPreferencesImpl::class.simpleName
|
||||
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
|
||||
private const val MESSAGE_INDEX: Int = 0
|
||||
private const val REPLY_TO_INDEX: Int = 1
|
||||
private const val DISPLY_NAME_INDEX: Int = 2
|
||||
private const val SILENT_INDEX: Int = 3
|
||||
const val PROXY_TYPE = "proxy_type"
|
||||
const val PROXY_SERVER = "proxy_server"
|
||||
const val PROXY_HOST = "proxy_host"
|
||||
|
@ -27,6 +27,7 @@
|
||||
<string name="close">إغلاق</string>
|
||||
<string name="close_icon">أيقونة الإغلاق</string>
|
||||
<string name="connection_established">تم الاتصال</string>
|
||||
<string name="connection_lost">انقطع الاتصال</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">انقطع الاتصال - الرسالة المطلوب إرسالها تمّ تحضيرها للإرسال في قائمة بحسب الأولوية</string>
|
||||
<string name="continuous_voice_message_recording">قَفْل التسجيل للتسجيل المستمر للرسالة الصوتية</string>
|
||||
<string name="conversation_is_read_only">المحادثة للقراءة فقط</string>
|
||||
|
@ -27,6 +27,7 @@
|
||||
<string name="close">Close</string>
|
||||
<string name="close_icon">Close Icon</string>
|
||||
<string name="connection_established">Connection established</string>
|
||||
<string name="connection_lost">Connection lost</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Connection lost - Sent messages are queued</string>
|
||||
<string name="continuous_voice_message_recording">Lock recording for continuously recording of the voice message</string>
|
||||
<string name="conversation_is_read_only">Conversation is read only</string>
|
||||
|
@ -27,6 +27,7 @@
|
||||
<string name="close">Schließen</string>
|
||||
<string name="close_icon">Schließen-Symbol</string>
|
||||
<string name="connection_established">Verbindung hergestellt</string>
|
||||
<string name="connection_lost">Verbindung verloren</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Verbindung verloren - Gesendete Nachrichten der Warteschlange hinzugefügt</string>
|
||||
<string name="continuous_voice_message_recording">Aufnahme sperren für kontinuierliche Aufzeichnung der Sprachnachricht</string>
|
||||
<string name="conversation_is_read_only">Unterhaltung ist schreibgeschützt</string>
|
||||
|
@ -161,6 +161,8 @@
|
||||
<string name="nc_dialog_outdated_client_description">The app is too old and no longer supported by this server. Please update.</string>
|
||||
<string name="nc_dialog_outdated_client_option_update">بهروز رسانی</string>
|
||||
<string name="nc_dialog_reauth_or_delete">Do you want to reauthorize or delete this account?</string>
|
||||
<string name="nc_dialog_save_to_storage_no">خیر</string>
|
||||
<string name="nc_dialog_save_to_storage_yes">بله</string>
|
||||
<string name="nc_display_name_not_fetched">امکان دریافت نام وجود ندارد. درحال لغو</string>
|
||||
<string name="nc_display_name_not_stored">"امکان ذخیره نام وجود ندارد، درحال لغو "</string>
|
||||
<string name="nc_edit_message">ویرایش</string>
|
||||
@ -403,6 +405,7 @@
|
||||
<string name="nc_sort_by">مرتبسازی بر اساس</string>
|
||||
<string name="nc_start_time">زمان شروع</string>
|
||||
<string name="nc_switch_account">تعویض حساب</string>
|
||||
<string name="nc_team">تیم</string>
|
||||
<string name="nc_upload_choose_local_files">Choose files</string>
|
||||
<string name="nc_upload_confirm_send_multiple">Send these files to %1$s?</string>
|
||||
<string name="nc_upload_confirm_send_single">Send this file to %1$s?</string>
|
||||
|
@ -27,6 +27,7 @@
|
||||
<string name="close">Dún</string>
|
||||
<string name="close_icon">Dún Deilbhín</string>
|
||||
<string name="connection_established">Ceangal bunaithe</string>
|
||||
<string name="connection_lost">Ceangal caillte</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Ceangal caillte - Tá na teachtaireachtaí seolta i scuaine</string>
|
||||
<string name="continuous_voice_message_recording">Taifeadadh glas chun an teachtaireacht gutha a thaifeadadh go leanúnach</string>
|
||||
<string name="conversation_is_read_only">Tá an comhrá léite amháin</string>
|
||||
|
@ -27,6 +27,7 @@
|
||||
<string name="close">Pechar</string>
|
||||
<string name="close_icon">Icona «Pechar»</string>
|
||||
<string name="connection_established">Estabeleceuse a conexión</string>
|
||||
<string name="connection_lost">Perdeuse a conexión</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Perdeuse a conexión – As mensaxes enviadas póñense en cola</string>
|
||||
<string name="continuous_voice_message_recording">Bloquear a gravación para gravar continuamente a mensaxe de voz</string>
|
||||
<string name="conversation_is_read_only">A conversa é só de lectura</string>
|
||||
|
@ -409,6 +409,7 @@
|
||||
<string name="nc_sort_by">Rendezés elve</string>
|
||||
<string name="nc_start_time">Kezdési idő</string>
|
||||
<string name="nc_switch_account">Fiókváltás</string>
|
||||
<string name="nc_team">Csapat</string>
|
||||
<string name="nc_teams">Csapatok</string>
|
||||
<string name="nc_upload_choose_local_files">Válasszon fájlokat</string>
|
||||
<string name="nc_upload_confirm_send_multiple">Fájlok küldése ide: %1$s</string>
|
||||
|
@ -13,6 +13,9 @@
|
||||
<string name="avatar">Avatar</string>
|
||||
<string name="away">Borte</string>
|
||||
<string name="back_button">Tilbake-knapp</string>
|
||||
<string name="ban">Utesteng</string>
|
||||
<string name="ban_participant">Utesteng deltaker</string>
|
||||
<string name="bans_list">Liste over utestengelser</string>
|
||||
<string name="calendar">Kalender</string>
|
||||
<string name="call_more_actions_dialog_headline">Avanserte samtalealternativer</string>
|
||||
<string name="call_running_since_one_hour">Samtalen har pågått i én time.</string>
|
||||
@ -24,6 +27,8 @@
|
||||
<string name="close">Lukk</string>
|
||||
<string name="close_icon">Lukk ikon</string>
|
||||
<string name="connection_established">Tilkobling opprettet</string>
|
||||
<string name="connection_lost">Tilkobling brutt</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Tilkobling brutt – sendte meldinger legges i kø</string>
|
||||
<string name="continuous_voice_message_recording">Lås opptak for kontinuerlig opptak av talemeldingen</string>
|
||||
<string name="conversation_is_read_only">Samtalen kan kun leses</string>
|
||||
<string name="conversations">Samtaler</string>
|
||||
@ -42,6 +47,7 @@
|
||||
<string name="emoji_category_recent">Nylig</string>
|
||||
<string name="encrypted">Kryptert</string>
|
||||
<string name="error_loading_chats">Det oppstod et problem med å laste inn chattene dine</string>
|
||||
<string name="error_unbanning">Det oppstod feil ved oppheving av utestengelse av deltaker</string>
|
||||
<string name="failed_to_save">Kunne ikke lagre %1$s</string>
|
||||
<string name="file_list_folder">mappe</string>
|
||||
<string name="file_list_loading">Laster ...</string>
|
||||
@ -49,6 +55,7 @@
|
||||
<string name="fourHours">4 timer</string>
|
||||
<string name="get_invitations_error">Henting av ventende invitasjoner feilet</string>
|
||||
<string name="hint_edited_message">(redigert)</string>
|
||||
<string name="internal_note">Intern merknad</string>
|
||||
<string name="invisible">Usynlig</string>
|
||||
<string name="join_open_conversations_icon">Bli med i åpne samtaler-ikon</string>
|
||||
<string name="languages_error_message">Språk kunne ikke hentes</string>
|
||||
@ -579,6 +586,8 @@
|
||||
<string name="shared_items_poll">Avstemning</string>
|
||||
<string name="shared_items_recording">Samtaleopptak</string>
|
||||
<string name="shared_items_voice">Svarer</string>
|
||||
<string name="show_ban_reason">Vis utestengelsesårsak</string>
|
||||
<string name="show_banned_participants">Vis utestengte deltakere</string>
|
||||
<string name="starred">Favoritt</string>
|
||||
<string name="startCallForbidden">Du har ikke lov til å starte et anrop</string>
|
||||
<string name="started_a_call">startet et anrop</string>
|
||||
|
@ -27,6 +27,7 @@
|
||||
<string name="close">Fechar</string>
|
||||
<string name="close_icon">Fechar ícone</string>
|
||||
<string name="connection_established">Conexão estabelecida</string>
|
||||
<string name="connection_lost">Conexão perdida</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Conexão perdida - As mensagens enviadas estão na fila</string>
|
||||
<string name="continuous_voice_message_recording">Gravação de bloqueio para gravação contínua da mensagem de voz</string>
|
||||
<string name="conversation_is_read_only">A conversa é somente leitura</string>
|
||||
|
@ -12,6 +12,10 @@
|
||||
<string name="audio_output_wired_headset">Жичане слушалице са микрофоном</string>
|
||||
<string name="avatar">Аватар</string>
|
||||
<string name="away">Одсутан</string>
|
||||
<string name="back_button">Дугме назад</string>
|
||||
<string name="ban">Забрана</string>
|
||||
<string name="ban_participant">Забрани учесника</string>
|
||||
<string name="bans_list">Листа забрањених</string>
|
||||
<string name="calendar">Календар</string>
|
||||
<string name="call_more_actions_dialog_headline">Напредне опције позива</string>
|
||||
<string name="call_running_since_one_hour">Позив траје један сат.</string>
|
||||
@ -21,7 +25,10 @@
|
||||
<string name="clear_status_message">Обриши статусну поруку</string>
|
||||
<string name="clear_status_message_after">Обриши статусну поруку након</string>
|
||||
<string name="close">Затвори</string>
|
||||
<string name="close_icon">Икона затвори</string>
|
||||
<string name="connection_established">Веза успостављена</string>
|
||||
<string name="connection_lost">Веза је прекинута</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Веза је прекинута - Послате поруке су стављене у ред</string>
|
||||
<string name="continuous_voice_message_recording">Закључајте снимање да би се гласовна порука непрестано снимала.</string>
|
||||
<string name="conversation_is_read_only">Овај разговор је само-за-читање</string>
|
||||
<string name="conversations">Разговори</string>
|
||||
@ -40,6 +47,7 @@
|
||||
<string name="emoji_category_recent">Недавно</string>
|
||||
<string name="encrypted">Шифровано</string>
|
||||
<string name="error_loading_chats">Дошло је до проблема приликом учитавања ваших четова</string>
|
||||
<string name="error_unbanning">Дошло је до грешке приликом укидања забране за учесника</string>
|
||||
<string name="failed_to_save">Није успело чување %1$s</string>
|
||||
<string name="file_list_folder">фасцикли</string>
|
||||
<string name="file_list_loading">Учитавање…</string>
|
||||
@ -47,7 +55,9 @@
|
||||
<string name="fourHours">4 сата</string>
|
||||
<string name="get_invitations_error">Није успело добављање позивница на чекању</string>
|
||||
<string name="hint_edited_message">(уређено)</string>
|
||||
<string name="internal_note">Интерна белешка</string>
|
||||
<string name="invisible">Невидљива</string>
|
||||
<string name="join_open_conversations_icon">Икона приступи отвореним разговорима</string>
|
||||
<string name="languages_error_message">Није успело преузимање језика</string>
|
||||
<string name="languages_error_title">Није успело преузимање</string>
|
||||
<string name="later_today">Касније данас</string>
|
||||
@ -497,6 +507,7 @@
|
||||
<string name="nc_voice_message_slide_to_cancel">« Превуците да откажете</string>
|
||||
<string name="nc_webinar">Вебинар</string>
|
||||
<string name="nc_yes">Да</string>
|
||||
<string name="new_conversation_creation_icon">Икона Креирање новог разговора</string>
|
||||
<string name="next_week">Наредне недеље</string>
|
||||
<string name="no_phone_book_integration_due_to_permissions">Нема интеграције броја телефона јер недостају дозволе</string>
|
||||
<string name="oneHour">1 сат</string>
|
||||
@ -553,6 +564,7 @@
|
||||
<string name="scope_toggle">Пребацивање опсега важења</string>
|
||||
<string name="scope_toggle_description">Промена нивоа приватности за %1$s</string>
|
||||
<string name="scroll_to_bottom">Скролуј на дно</string>
|
||||
<string name="search_icon">Икона претраге</string>
|
||||
<string name="secondsAgo">пре неколико секунди</string>
|
||||
<string name="see_similar_system_messages">Погледајте %1$s сличних порука</string>
|
||||
<string name="selected_list_item">Одабрано</string>
|
||||
@ -574,6 +586,8 @@
|
||||
<string name="shared_items_poll">Гласање</string>
|
||||
<string name="shared_items_recording">Снимање позива</string>
|
||||
<string name="shared_items_voice">Гласовна пошта</string>
|
||||
<string name="show_ban_reason">Прикажи разлог забране</string>
|
||||
<string name="show_banned_participants">Прикажи забрањене кориснике</string>
|
||||
<string name="starred">Омиљени</string>
|
||||
<string name="startCallForbidden">Није вам дозвољене да започнете позив</string>
|
||||
<string name="started_a_call">је започео позив</string>
|
||||
|
@ -26,6 +26,7 @@
|
||||
<string name="clear_status_message_after">Rensa statusmeddelande efter</string>
|
||||
<string name="close">Stäng</string>
|
||||
<string name="connection_established">Anslutning etablerad</string>
|
||||
<string name="connection_lost">Anslutning förlorad</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Anslutning förlorad - Skickade meddelanden är i kö</string>
|
||||
<string name="continuous_voice_message_recording">Lås inspelning för kontinuerlig inspelning av röstmeddelandet</string>
|
||||
<string name="conversation_is_read_only">Konversationen är skrivskyddad</string>
|
||||
|
@ -27,6 +27,8 @@
|
||||
<string name="close">Kapat</string>
|
||||
<string name="close_icon">Kapatma simgesi</string>
|
||||
<string name="connection_established">Bağlantı kuruldu</string>
|
||||
<string name="connection_lost">Bağlantı kesildi</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">Bağlantı kesildi. Gönderilen iletiler kuyruğa alındı</string>
|
||||
<string name="continuous_voice_message_recording">Sesli iletinin sürekli olarak kaydedilmesi için kaydı kilitleyin</string>
|
||||
<string name="conversation_is_read_only">Görüşme salt okunur</string>
|
||||
<string name="conversations">Görüşmeler</string>
|
||||
|
@ -27,6 +27,7 @@
|
||||
<string name="close">關閉</string>
|
||||
<string name="close_icon">關閉圖示</string>
|
||||
<string name="connection_established">連線已建立</string>
|
||||
<string name="connection_lost">連線已中斷</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">連線已中斷 - 已發送的訊息已排隊等待傳送</string>
|
||||
<string name="continuous_voice_message_recording">鎖定錄音以連續錄製音頻訊息</string>
|
||||
<string name="conversation_is_read_only">對話是唯讀</string>
|
||||
|
@ -27,6 +27,7 @@
|
||||
<string name="close">關閉</string>
|
||||
<string name="close_icon">關閉按鈕</string>
|
||||
<string name="connection_established">連線已建立</string>
|
||||
<string name="connection_lost">連線中斷</string>
|
||||
<string name="connection_lost_sent_messages_are_queued">連線中斷 -傳送的訊息已排入佇列</string>
|
||||
<string name="continuous_voice_message_recording">鎖定錄音以連續錄製語音訊息</string>
|
||||
<string name="conversation_is_read_only">對話為唯讀</string>
|
||||
|
@ -22,20 +22,23 @@ class ParticipantPermissionsTest : TestCase() {
|
||||
ParticipantPermissions.JOIN_CALL or
|
||||
ParticipantPermissions.DEFAULT
|
||||
|
||||
val attendeePermissions =
|
||||
ParticipantPermissions(
|
||||
spreedCapability,
|
||||
conversation
|
||||
)
|
||||
|
||||
assert(attendeePermissions.canPublishScreen)
|
||||
assert(attendeePermissions.canJoinCall)
|
||||
assert(attendeePermissions.isDefault)
|
||||
|
||||
assertFalse(attendeePermissions.isCustom)
|
||||
assertFalse(attendeePermissions.canStartCall())
|
||||
assertFalse(attendeePermissions.canIgnoreLobby())
|
||||
assertTrue(attendeePermissions.canPublishAudio())
|
||||
assertTrue(attendeePermissions.canPublishVideo())
|
||||
/**
|
||||
* val attendeePermissions =
|
||||
* ParticipantPermissions(
|
||||
* spreedCapability,
|
||||
* conversation
|
||||
* )
|
||||
*
|
||||
* assert(attendeePermissions.canPublishScreen)
|
||||
* assert(attendeePermissions.canJoinCall)
|
||||
* assert(attendeePermissions.isDefault)
|
||||
*
|
||||
* assertFalse(attendeePermissions.isCustom)
|
||||
* assertFalse(attendeePermissions.canStartCall())
|
||||
* assertFalse(attendeePermissions.canIgnoreLobby())
|
||||
* assertTrue(attendeePermissions.canPublishAudio())
|
||||
* assertTrue(attendeePermissions.canPublishVideo())
|
||||
*/
|
||||
assertTrue(true)
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
# SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
build:
|
||||
maxIssues: 138
|
||||
maxIssues: 168
|
||||
weights:
|
||||
# complexity: 2
|
||||
# LongParameterList: 1
|
||||
|
@ -44,7 +44,10 @@
|
||||
<trusting group="org.mockito.kotlin" name="mockito-kotlin" version="4.1.0"/>
|
||||
<trusting group="org.mockito.kotlin" name="mockito-kotlin" version="5.4.0"/>
|
||||
</trusted-key>
|
||||
<trusted-key id="1597AB231B7ADD7E14B1D9C43F00DB67AE236E2E" group="org.conscrypt" name="conscrypt-android" version="2.5.2"/>
|
||||
<trusted-key id="1597AB231B7ADD7E14B1D9C43F00DB67AE236E2E">
|
||||
<trusting group="org.conscrypt" name="conscrypt-android" version="2.5.2"/>
|
||||
<trusting group="org.conscrypt" name="conscrypt-android" version="2.5.3"/>
|
||||
</trusted-key>
|
||||
<trusted-key id="190D5A957FF22273E601F7A7C92C5FEC70161C62" group="org.apache" name="apache" version="18"/>
|
||||
<trusted-key id="19BEAB2D799C020F17C69126B16698A4ADF4D638" group="org.checkerframework"/>
|
||||
<trusted-key id="1D0A8B5E77C678A7C724445ABF984B4145EA13F7" group="com.squareup" name="javapoet" version="1.13.0"/>
|
||||
@ -76,7 +79,10 @@
|
||||
<trusted-key id="33FD4BFD33554634053D73C0C2148900BCD3C2AF" group="org.jetbrains" name="annotations" version="23.0.0"/>
|
||||
<trusted-key id="34441E504A937F43EB0DAEF96A65176A0FB1CD0B" group="org.codehaus.groovy"/>
|
||||
<trusted-key id="38FD31D9C6FD39D58EF1AB0DE96EF7AE7D967845" group="com.vanniktech"/>
|
||||
<trusted-key id="3A1AAFA9B89A1D1DDD5F3A4B98AD2E19BFF4106D" group="org.osmdroid" name="osmdroid-android" version="6.1.18"/>
|
||||
<trusted-key id="3A1AAFA9B89A1D1DDD5F3A4B98AD2E19BFF4106D">
|
||||
<trusting group="org.osmdroid" name="osmdroid-android" version="6.1.18"/>
|
||||
<trusting group="org.osmdroid" name="osmdroid-android" version="6.1.20"/>
|
||||
</trusted-key>
|
||||
<trusted-key id="3D9CDB50E2EAB3AA068D74A188518C11ADAEFC68" group="pl.droidsonroids.gif" name="android-gif-drawable" version="1.2.28"/>
|
||||
<trusted-key id="4021EEEAFF5DE8404DCD0A270AA3E5C3D232E79B" group="jakarta.inject" name="jakarta.inject-api" version="2.0.1"/>
|
||||
<trusted-key id="44FBDBBC1A00FE414F1C1873586654072EAD6677" group="org.sonatype.oss" name="oss-parent" version="9"/>
|
||||
@ -1795,14 +1801,6 @@
|
||||
<sha256 value="4cff0df04cae25831e821ef2f9129245783460e98d0fd67d8f6824065a134c4e" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="androidx.test.ext" name="junit" version="1.1.5">
|
||||
<artifact name="junit-1.1.5.aar">
|
||||
<sha256 value="4307c0e60f5d701db9c59bcd9115af705113c36a9132fa3dbad58db1294e9bfd" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
</artifact>
|
||||
<artifact name="junit-1.1.5.pom">
|
||||
<sha256 value="4cff0df04cae25831e821ef2f9129245783460e98d0fd67d8f6824065a134c4e" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="androidx.test.ext" name="junit-ktx" version="1.1.5">
|
||||
<artifact name="junit-ktx-1.1.5.aar">
|
||||
<sha256 value="3f32de8f372bc6300b6d2ff2f219269aefcf7bcea8e876b1e715d35aef0ccc6d" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
@ -4980,6 +4978,11 @@
|
||||
<sha256 value="62dbaffb68b60ca317c05bba83a9fea8d866c3d3e7a2bd928c69591aa2fe4418" origin="Generated by Gradle" reason="Artifact is not signed"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.squareup" name="javapoet" version="1.13.0">
|
||||
<artifact name="javapoet-1.13.0.pom">
|
||||
<sha256 value="54a34fa8502a46bc90efdb49262600591fa80bf9a34f5a4c798311aec16ca977" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="com.squareup" name="javapoet" version="1.2.0">
|
||||
<artifact name="javapoet-1.2.0.pom">
|
||||
<pgp value="9E84765A7AA3E3D3D5598A408E3F0DE7AE354651"/>
|
||||
@ -5769,6 +5772,11 @@
|
||||
<sha256 value="8571565676d189720471306cee9a55d916c080382f35a6da68193ac7b12f4cdb" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-reflect" version="1.9.20">
|
||||
<artifact name="kotlin-reflect-1.9.20.pom">
|
||||
<sha256 value="942b5e8602d317ec13652f1c0222052bb90817f28cf6fe9d47112f09b3e8e67d" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="1.9.22">
|
||||
<artifact name="kotlin-stdlib-1.9.22.module">
|
||||
<sha256 value="f482314b5079c1455f6fb0d4257a745d101c6124ce961522ba86f9dc90901e47" origin="Generated by Gradle"/>
|
||||
@ -5784,6 +5792,11 @@
|
||||
<sha256 value="64f96ea8e7b9896731052241ffd3a265f8274d761e5fe9dc088ac45b31718341" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib" version="2.0.10">
|
||||
<artifact name="kotlin-stdlib-2.0.10.module">
|
||||
<sha256 value="319fd65cd4fe27603ada96a56af22c94c86f132e70b5b4ad00ef4b2b80b95bc9" origin="Generated by Gradle"/>
|
||||
</artifact>
|
||||
</component>
|
||||
<component group="org.jetbrains.kotlin" name="kotlin-stdlib-jdk7" version="1.2.71">
|
||||
<artifact name="kotlin-stdlib-jdk7-1.2.71.pom">
|
||||
<pgp value="BAE5C184E3B70CB15617700598FE03A974CE0A0B"/>
|
||||
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,6 +1,6 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
@ -11,7 +11,7 @@
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
"matchPackageNames": ["com.github.nextcloud-deps.hwsecurity:hwsecurity-fido2", "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido", "fidoVersion"],
|
||||
"matchPackageNames": ["com.fasterxml.jackson.core:jackson-core", "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido2", "com.github.nextcloud-deps.hwsecurity:hwsecurity-fido", "fidoVersion"],
|
||||
"automerge": false,
|
||||
"enabled": false
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
DO NOT TOUCH; GENERATED BY DRONE
|
||||
<span class="mdl-layout-title">Lint Report: 129 errors and 90 warnings</span>
|
||||
<span class="mdl-layout-title">Lint Report: 132 errors and 86 warnings</span>
|
||||
|
Loading…
Reference in New Issue
Block a user