Skip to content

Commit 2b6134b

Browse files
Merge branch 'master' into bugfix/offline-operation-conflict-handling
2 parents 5d98ad4 + b52dcad commit 2b6134b

File tree

27 files changed

+1854
-113
lines changed

27 files changed

+1854
-113
lines changed

.devcontainer/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ubuntu:noble@sha256:b59d21599a2b151e23eea5f6602f4af4d7d31c4e236d22bf0b62b86d2e386b8f
1+
FROM ubuntu:noble@sha256:440dcf6a5640b2ae5c77724e68787a906afb8ddee98bf86db94eea8528c2c076
22

33
ARG DEBIAN_FRONTEND=noninteractive
44
ENV ANDROID_HOME=/usr/lib/android-sdk

.github/workflows/autoApproveSync.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,3 @@ jobs:
3838
- uses: hmarr/auto-approve-action@f0939ea97e9205ef24d872e76833fa908a770363 # v4.0.0
3939
with:
4040
github-token: "${{ secrets.GITHUB_TOKEN }}"
41-

.github/workflows/codeql.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ jobs:
4343
with:
4444
swap-size-gb: 10
4545
- name: Initialize CodeQL
46-
uses: github/codeql-action/init@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
46+
uses: github/codeql-action/init@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
4747
with:
4848
languages: ${{ matrix.language }}
4949
- name: Set up JDK 17
@@ -57,4 +57,4 @@ jobs:
5757
echo "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError" > "$HOME/.gradle/gradle.properties"
5858
./gradlew assembleDebug
5959
- name: Perform CodeQL Analysis
60-
uses: github/codeql-action/analyze@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
60+
uses: github/codeql-action/analyze@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2

.github/workflows/pr-feedback.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
blocklist=$(curl https://raw.githubusercontent.com/nextcloud/.github/master/non-community-usernames.txt | paste -s -d, -)
3737
echo "blocklist=$blocklist" >> "$GITHUB_OUTPUT"
3838
39-
- uses: nextcloud/pr-feedback-action@f0cab224dea8e1f282f9451de322f323c78fc7a5 # main
39+
- uses: nextcloud/pr-feedback-action@e397f3c7e655092b746e3610d121545530c6a90e # main
4040
with:
4141
feedback-message: |
4242
Hello there,

.github/workflows/renovate-approve-merge.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ jobs:
2929
permissions:
3030
# for hmarr/auto-approve-action to approve PRs
3131
pull-requests: write
32-
# for alexwilson/enable-github-automerge-action to approve PRs
33-
contents: write
3432

3533
steps:
3634
- name: Disabled on forks
@@ -59,4 +57,5 @@ jobs:
5957
if: github.actor == 'renovate[bot]'
6058
run: gh pr merge --merge --auto
6159
env:
62-
GH_TOKEN: ${{ secrets.AUTOMERGE }}
60+
GH_TOKEN: ${{ secrets.AUTOMERGE }}
61+

.github/workflows/reuse.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,17 @@ name: REUSE Compliance Check
1111

1212
on: [pull_request]
1313

14+
permissions:
15+
contents: read
16+
1417
jobs:
1518
reuse-compliance-check:
16-
runs-on: ubuntu-latest
19+
runs-on: ubuntu-latest-low
1720
steps:
1821
- name: Checkout
1922
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
23+
with:
24+
persist-credentials: false
2025

2126
- name: REUSE Compliance Check
2227
uses: fsfe/reuse-action@bb774aa972c2a89ff34781233d275075cbddf542 # v5.0.0

.github/workflows/scorecard.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ jobs:
4242

4343
# Upload the results to GitHub's code scanning dashboard.
4444
- name: "Upload to code-scanning"
45-
uses: github/codeql-action/upload-sarif@ce28f5bb42b7a9f2c824e633a3f6ee835bab6858 # v3.29.0
45+
uses: github/codeql-action/upload-sarif@181d5eefc20863364f96762470ba6f862bdef56b # v3.29.2
4646
with:
4747
sarif_file: results.sarif

Gemfile.lock

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,26 +10,26 @@ GEM
1010
artifactory (3.0.17)
1111
atomos (0.1.3)
1212
aws-eventstream (1.4.0)
13-
aws-partitions (1.1115.0)
14-
aws-sdk-core (3.225.2)
13+
aws-partitions (1.1121.0)
14+
aws-sdk-core (3.226.1)
1515
aws-eventstream (~> 1, >= 1.3.0)
1616
aws-partitions (~> 1, >= 1.992.0)
1717
aws-sigv4 (~> 1.9)
1818
base64
1919
jmespath (~> 1, >= 1.6.1)
2020
logger
21-
aws-sdk-kms (1.104.0)
21+
aws-sdk-kms (1.106.0)
2222
aws-sdk-core (~> 3, >= 3.225.0)
2323
aws-sigv4 (~> 1.5)
24-
aws-sdk-s3 (1.189.1)
24+
aws-sdk-s3 (1.191.0)
2525
aws-sdk-core (~> 3, >= 3.225.0)
2626
aws-sdk-kms (~> 1)
2727
aws-sigv4 (~> 1.5)
2828
aws-sigv4 (1.12.1)
2929
aws-eventstream (~> 1, >= 1.0.2)
3030
babosa (1.0.4)
3131
base64 (0.3.0)
32-
cgi (0.4.1)
32+
cgi (0.4.2)
3333
claide (1.1.0)
3434
colored (1.2)
3535
colored2 (3.1.2)
@@ -58,10 +58,10 @@ GEM
5858
faraday (>= 0.8.0)
5959
http-cookie (~> 1.0.0)
6060
faraday-em_http (1.0.0)
61-
faraday-em_synchrony (1.0.0)
61+
faraday-em_synchrony (1.0.1)
6262
faraday-excon (1.1.0)
6363
faraday-httpclient (1.0.1)
64-
faraday-multipart (1.1.0)
64+
faraday-multipart (1.1.1)
6565
multipart-post (~> 2.0)
6666
faraday-net_http (1.0.2)
6767
faraday-net_http_persistent (1.2.0)
@@ -170,7 +170,7 @@ GEM
170170
multipart-post (2.4.1)
171171
mutex_m (0.3.0)
172172
nanaimo (0.4.0)
173-
naturally (2.2.2)
173+
naturally (2.3.0)
174174
nkf (0.2.0)
175175
optparse (0.6.0)
176176
os (1.1.4)

app/lint.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,8 @@
8080
<ignore path="**/jetified-firebase-installations**/**/lint.jar" />
8181
<ignore path="**/appcompat-1.**/**/lint.jar" />
8282
</issue>
83+
84+
<issue id="Aligned16KB">
85+
<ignore path="**/arm64-v8a/libmockkjvmtiagent.so" />
86+
</issue>
8387
</lint>

app/src/androidTest/java/com/nextcloud/client/assistant/AssistantRepositoryTests.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ class AssistantRepositoryTests : AbstractOnServerIT() {
6262
"core:text2text",
6363
"Free text to text prompt",
6464
"Runs an arbitrary prompt through a language model that returns a reply",
65-
null,
66-
null
65+
emptyMap(),
66+
emptyMap()
6767
)
6868
val result = sut?.createTask(input, taskType)
6969
assertTrue(result?.isSuccess == true)

app/src/main/java/com/nextcloud/client/assistant/component/AddTaskAlertDialog.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import com.owncloud.android.R
2323

2424
@Composable
2525
fun AddTaskAlertDialog(
26-
title: String?,
26+
title: String,
2727
description: String?,
2828
defaultInput: String = "",
2929
addTask: (String) -> Unit,
@@ -34,7 +34,7 @@ fun AddTaskAlertDialog(
3434
}
3535

3636
SimpleAlertDialog(
37-
title = title ?: "",
37+
title = title,
3838
description = description ?: "",
3939
dismiss = { dismiss() },
4040
onComplete = {

app/src/main/java/com/nextcloud/client/assistant/model/ScreenOverlayState.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ sealed class ScreenOverlayState {
5050
task.type,
5151
activity.getString(R.string.assistant_screen_add_task_alert_dialog_title),
5252
null,
53-
null,
54-
null
53+
emptyMap(),
54+
emptyMap()
5555
)
5656
val newState = AddTask(taskType, getInput() ?: "")
5757
onComplete(newState)

app/src/main/java/com/nextcloud/client/assistant/repository/AssistantMockRepository.kt

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,29 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult
1212
import com.owncloud.android.lib.resources.assistant.v2.model.Shape
1313
import com.owncloud.android.lib.resources.assistant.v2.model.Task
1414
import com.owncloud.android.lib.resources.assistant.v2.model.TaskInput
15-
import com.owncloud.android.lib.resources.assistant.v2.model.TaskInputShape
1615
import com.owncloud.android.lib.resources.assistant.v2.model.TaskOutput
17-
import com.owncloud.android.lib.resources.assistant.v2.model.TaskOutputShape
1816
import com.owncloud.android.lib.resources.assistant.v2.model.TaskTypeData
1917

2018
@Suppress("MagicNumber")
2119
class AssistantMockRepository(private val giveEmptyTasks: Boolean = false) : AssistantRepositoryType {
2220
override fun getTaskTypes(): List<TaskTypeData> {
2321
return listOf(
2422
TaskTypeData(
25-
"core:text2text",
26-
"Free text to text prompt",
27-
"Runs an arbitrary prompt through a language model that returns a reply",
28-
inputShape = TaskInputShape(
29-
input = Shape(
30-
"Prompt",
31-
"Describe a task that you want the assistant to do or ask a question",
32-
"Text"
23+
id = "core:text2text",
24+
name = "Free text to text prompt",
25+
description = "Runs an arbitrary prompt through a language model that returns a reply",
26+
inputShape = mapOf(
27+
"input" to Shape(
28+
name = "Prompt",
29+
description = "Describe a task that you want the assistant to do or ask a question",
30+
type = "Text"
3331
)
3432
),
35-
outputShape = TaskOutputShape(
36-
output = Shape(
37-
"Generated reply",
38-
"The generated text from the assistant",
39-
"Text"
33+
outputShape = mapOf(
34+
"output" to Shape(
35+
name = "Generated reply",
36+
description = "The generated text from the assistant",
37+
type = "Text"
4038
)
4139
)
4240
)

app/src/main/java/com/nextcloud/client/assistant/taskTypes/TaskTypesRow.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,13 @@ fun TaskTypesRow(selectedTaskType: TaskTypeData?, data: List<TaskTypeData>, sele
3838
}
3939
) {
4040
data.forEach { taskType ->
41-
taskType.name?.let { taskTypeName ->
41+
if (taskType.name.isNotEmpty()) {
4242
Tab(
4343
selected = selectedTaskType?.id == taskType.id,
4444
onClick = { selectTaskType(taskType) },
4545
selectedContentColor = colorResource(R.color.text_color),
4646
unselectedContentColor = colorResource(R.color.disabled_text),
47-
text = { Text(text = taskTypeName) }
47+
text = { Text(text = taskType.name) }
4848
)
4949
}
5050
}
@@ -54,12 +54,12 @@ fun TaskTypesRow(selectedTaskType: TaskTypeData?, data: List<TaskTypeData>, sele
5454
@Composable
5555
@Preview
5656
private fun TaskTypesRowPreview() {
57-
val selectedTaskType = TaskTypeData("1", "Free text to text prompt", "", null, null)
57+
val selectedTaskType = TaskTypeData("1", "Free text to text prompt", "", emptyMap(), emptyMap())
5858
val taskTypes = listOf(
59-
TaskTypeData("1", "Free text to text prompt", "", null, null),
60-
TaskTypeData("2", "Extract topics", "", null, null),
61-
TaskTypeData("3", "Generate Headline", "", null, null),
62-
TaskTypeData("4", "Summarize", "", null, null)
59+
TaskTypeData("1", "Free text to text prompt", "", emptyMap(), emptyMap()),
60+
TaskTypeData("2", "Extract topics", "", emptyMap(), emptyMap()),
61+
TaskTypeData("3", "Generate Headline", "", emptyMap(), emptyMap()),
62+
TaskTypeData("4", "Summarize", "", emptyMap(), emptyMap())
6363
)
6464

6565
TaskTypesRow(selectedTaskType, taskTypes) { }

app/src/main/java/com/nextcloud/client/jobs/NotificationWork.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77
package com.nextcloud.client.jobs
88

9+
import android.Manifest
910
import android.accounts.AuthenticatorException
1011
import android.accounts.OperationCanceledException
1112
import android.app.Activity
@@ -14,10 +15,12 @@ import android.app.PendingIntent
1415
import android.content.BroadcastReceiver
1516
import android.content.Context
1617
import android.content.Intent
18+
import android.content.pm.PackageManager
1719
import android.graphics.BitmapFactory
1820
import android.media.RingtoneManager
1921
import android.text.TextUtils
2022
import android.util.Base64
23+
import androidx.core.app.ActivityCompat
2124
import androidx.core.app.NotificationCompat
2225
import androidx.core.app.NotificationManagerCompat
2326
import androidx.work.Worker
@@ -224,8 +227,17 @@ class NotificationWork constructor(
224227
}
225228
.build()
226229
)
227-
val notificationManager = NotificationManagerCompat.from(context)
228-
notificationManager.notify(notification.getNotificationId(), notificationBuilder.build())
230+
231+
if (ActivityCompat.checkSelfPermission(
232+
context,
233+
Manifest.permission.POST_NOTIFICATIONS
234+
) != PackageManager.PERMISSION_GRANTED
235+
) {
236+
Log_OC.w(this, "Missing permission to post notifications")
237+
} else {
238+
val notificationManager = NotificationManagerCompat.from(context)
239+
notificationManager.notify(notification.getNotificationId(), notificationBuilder.build())
240+
}
229241
}
230242

231243
@Suppress("TooGenericExceptionCaught") // legacy code

app/src/main/java/com/owncloud/android/ui/dialog/RenamePublicShareDialogFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ class RenamePublicShareDialogFragment : DialogFragment(), DialogInterface.OnClic
8888
AlertDialog.BUTTON_POSITIVE -> {
8989
var newName = ""
9090
if (binding.userInput.text != null) {
91-
newName = binding.userInput.text.toString().trim { it <= ' ' }
91+
newName = binding.userInput.text.toString().trim()
9292
}
9393

9494
if (TextUtils.isEmpty(newName)) {

app/src/main/res/values-da/strings.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@
656656
<string name="pref_instant_name_collision_policy_entries_rename">Omdøb ny version</string>
657657
<string name="pref_instant_name_collision_policy_title">Hvad skal ske, hvis filen allerede findes?</string>
658658
<string name="prefs_add_account">Tilføj konto</string>
659-
<string name="prefs_calendar_contacts">Synkroniser kalender og kontakter</string>
659+
<string name="prefs_calendar_contacts">Synkronisér kalender og kontakter</string>
660660
<string name="prefs_calendar_contacts_no_store_error">Hverken F-droid eller Google Play er installeret</string>
661661
<string name="prefs_calendar_contacts_summary">Opsæt DAVx⁵ (tidligere kendt som DAVdroid) (v1.3.0+) for aktuel konto</string>
662662
<string name="prefs_calendar_contacts_sync_setup_successful">Kalender og kontakt synkronisering sat op</string>
@@ -669,7 +669,7 @@
669669
<string name="prefs_daily_backup_summary">Daglig backup af din kalender og kontakter</string>
670670
<string name="prefs_daily_contact_backup_summary">Daglig backup af dine kontakter</string>
671671
<string name="prefs_data_storage_location">Datalagringslokation</string>
672-
<string name="prefs_data_storage_location_summary">Styre datalagringslokation</string>
672+
<string name="prefs_data_storage_location_summary">Administrér datalagringslokation</string>
673673
<string name="prefs_davx5_setup_error">Uventet fejl under opsætning af DAVx⁵ (tidligere kendt som DAVdroid)</string>
674674
<string name="prefs_e2e_active">End-to-end kryptering er blevet konfigureret!</string>
675675
<string name="prefs_e2e_mnemonic">E2E mnemonic</string>
@@ -704,7 +704,7 @@
704704
<string name="prefs_show_ecosystem_apps_summary">Nextcloud app anbefalinger i navigationspanelet</string>
705705
<string name="prefs_show_hidden_files">Vis skjulte filer</string>
706706
<string name="prefs_sourcecode">Hent kildetekst</string>
707-
<string name="prefs_sycned_folders_summary">Administrer mapper til auto upload</string>
707+
<string name="prefs_sycned_folders_summary">Administrér mapper til auto upload</string>
708708
<string name="prefs_synced_folders_local_path_title">Lokal mappe</string>
709709
<string name="prefs_synced_folders_remote_path_title">Ekstern mappe</string>
710710
<string name="prefs_theme_title">Tema</string>

app/src/main/res/values-hu-rHU/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
<string name="app_widget_description">Egy modult jelenít meg a irányítópultról</string>
4545
<string name="appbar_search_in">Keresés itt: %s</string>
4646
<string name="assistant_screen_add_task_alert_dialog_title">Új feladat hozzáadása</string>
47+
<string name="assistant_screen_create_a_new_task_from_bottom_right_text">Új feladat létrehozása a jobb lentiből</string>
4748
<string name="assistant_screen_create_task_alert_dialog_input_field_placeholder">Gépeljen be szöveget</string>
4849
<string name="assistant_screen_delete_task_alert_dialog_description">Valóban törölni akarja ezt a feladatot?</string>
4950
<string name="assistant_screen_delete_task_alert_dialog_title">Feladat törlése</string>

app/src/main/res/values-lv/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@
144144
<string name="copy_file_error">Radās kļūda, mēģinot kopēt šo datni vai mapi</string>
145145
<string name="copy_file_invalid_into_descendent">Nav iespējams kopēt mapi tās apakšmapē</string>
146146
<string name="copy_file_invalid_overwrite">Datne jau pastāv mērķa mapē</string>
147-
<string name="copy_link">Kopēt saiti</string>
147+
<string name="copy_link">Ievietot saiti starpliktuvē</string>
148148
<string name="could_not_download_image">Nevarēja lejupielādēt pilnu attēlu</string>
149149
<string name="could_not_retrieve_url">Neizdevās iegūt URL </string>
150150
<string name="create">Izveidot</string>
@@ -489,6 +489,7 @@
489489
<string name="set_status">Iestatīt stāvokli</string>
490490
<string name="set_status_message">Iestatīt stāvokļa ziņojumu</string>
491491
<string name="share">Kopīgot</string>
492+
<string name="share_copy_link">Kopīgot saiti un ievietot to starpliktuvē</string>
492493
<string name="share_delete_permission">Izdzēst</string>
493494
<string name="share_dialog_title">Koplietošana</string>
494495
<string name="share_edit_permission">Labot</string>

app/src/main/res/values-pt-rBR/strings.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,8 +488,8 @@
488488
<string name="image_editor_file_edited_suffix">editado</string>
489489
<string name="image_editor_flip_horizontal">Espelhar horizontalmente</string>
490490
<string name="image_editor_flip_vertical">Espelhar verticalmente</string>
491-
<string name="image_editor_rotate_ccw">Girar no sentido anti-horário</string>
492-
<string name="image_editor_rotate_cw">Girar no sentido horário</string>
491+
<string name="image_editor_rotate_ccw">Rotacionar no sentido anti-horário</string>
492+
<string name="image_editor_rotate_cw">Rotacionar no sentido horário</string>
493493
<string name="image_editor_unable_to_edit_image">Não foi possível editar a imagem.</string>
494494
<string name="image_preview_filedetails">Detalhes do arquivo</string>
495495
<string name="image_preview_image_taking_conditions">Condições de captura de imagens</string>
@@ -786,6 +786,7 @@
786786
<string name="send">Enviar</string>
787787
<string name="send_share">Enviar compartilhamento</string>
788788
<string name="sendbutton_description">Ícone do botão Enviar</string>
789+
<string name="server_not_reachable">Não foi possível carregar o conteúdo</string>
789790
<string name="server_not_reachable_content">O dispositivo provavelmente não está conectado à Internet</string>
790791
<string name="set_as">Definir como</string>
791792
<string name="set_download_limit_failed">Não foi possível definir o limite de download. Verifique as capacidades.</string>

0 commit comments

Comments
 (0)