From 4e41199271b78b466822b64e380eecdada5fed15 Mon Sep 17 00:00:00 2001
From: Shane <6071159+smashedr@users.noreply.github.com>
Date: Wed, 19 Aug 2026 21:21:38 -0700
Subject: [PATCH 1/5] Fix Shorten URL Menu Buttons on API 26-28
---
app/src/main/res/layout/fragment_short.xml | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/app/src/main/res/layout/fragment_short.xml b/app/src/main/res/layout/fragment_short.xml
index e8a3b8f..d984ba2 100644
--- a/app/src/main/res/layout/fragment_short.xml
+++ b/app/src/main/res/layout/fragment_short.xml
@@ -89,7 +89,8 @@
app:icon="@drawable/md_share_24px"
app:iconSize="24dp"
app:iconGravity="textStart"
- app:iconPadding="0dp" />
+ app:iconPadding="0dp"
+ style="@style/Widget.Material3.Button" />
+ app:iconPadding="0dp"
+ style="@style/Widget.Material3.Button" />
+ app:iconPadding="0dp"
+ style="@style/Widget.Material3.Button" />
+ app:iconSize="28dp"
+ style="@style/Widget.Material3.Button" />
From e7d026c4b6f2ca29dadd35ec1ce92a4a0eb4e5b8 Mon Sep 17 00:00:00 2001
From: Shane <6071159+smashedr@users.noreply.github.com>
Date: Wed, 19 Aug 2026 21:25:12 -0700
Subject: [PATCH 2/5] Update Taskfile.yml
---
AGENTS.md | 17 +++++++++--------
Taskfile.yml | 13 +++++++++----
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/AGENTS.md b/AGENTS.md
index 83cca47..109b0a3 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -10,14 +10,15 @@ Android client for [Django Files Upload Server](https://github.com/django-files/
ALWAYS use the `task *` commands
-| Command | Purpose |
-| -------------- | --------------------------------------------------- |
-| `task compile` | Compile Kotlin |
-| `task debug` | Build debug variant (APK) |
-| `task release` | Build release variant (APK) |
-| `task bundle` | Build Android App Bundle (AAB) |
-| `task lint` | Prettier check + yamllint + actionlint + shellcheck |
-| `task format` | Prettier write (format non-kotlin files) |
+| Command | Purpose |
+| -------------- | ---------------------------------------- |
+| `task lint` | Gradle Lint |
+| `task compile` | Compile Kotlin |
+| `task debug` | Build debug variant (APK) |
+| `task release` | Build release variant (APK) |
+| `task bundle` | Build Android App Bundle (AAB) |
+| `task check` | Prettier check (check non-kotlin files) |
+| `task format` | Prettier write (format non-kotlin files) |
Do NOT use `-q` or pipe Gradle output through `Select-Object` — both hide progress and make long builds look hung.
diff --git a/Taskfile.yml b/Taskfile.yml
index d054832..97c0c30 100644
--- a/Taskfile.yml
+++ b/Taskfile.yml
@@ -5,8 +5,9 @@ vars:
GRADLEW: 'gradlew{{if eq OS "windows"}}.bat{{end}}'
tasks:
- lint:
- desc: Lint
+ check:
+ desc: Check Non-Kotlin Files
+ aliases: [prettier:check]
cmds:
- prettier --check .
- yamllint -c .github/yamllint.yaml .
@@ -14,14 +15,18 @@ tasks:
- shellcheck .github/scripts/prepare.sh
format:
- desc: Format
+ desc: Format Non-Kotlin Files
aliases: [prettier, prettier:write]
cmds:
- prettier --write .
+ lint:
+ desc: Gradle Lint
+ cmd: "{{.GRADLEW}} lint {{.CLI_ARGS}}"
+
compile:
desc: Compile Kotlin
- cmd: "{{.GRADLEW}} :app:compileDebugKotlin"
+ cmd: "{{.GRADLEW}} :app:compileDebugKotlin {{.CLI_ARGS}}"
debug:
desc: Build Debug (recommended android studio)
From 2aa60eb1f7132a57473b31d8fabf54a2d1fbf62a Mon Sep 17 00:00:00 2001
From: Shane <6071159+smashedr@users.noreply.github.com>
Date: Wed, 19 Aug 2026 21:26:05 -0700
Subject: [PATCH 3/5] Update libs.versions.toml
---
gradle/libs.versions.toml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index d2d86dd..99c262a 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -27,8 +27,8 @@ moshiKotlinCodegen = "1.15.2"
glide = "5.0.9"
googleServices = "4.5.0"
-firebaseBom = "34.17.0"
-crashlyticsPlugin = "3.0.7"
+firebaseBom = "34.18.0"
+crashlyticsPlugin = "3.0.8"
# navigationSafeargsVersion = "2.8.9"
# roomRuntime = "2.6.1"
From 9914f0f45ff3ac285a4b477aeb80677860f2b9a2 Mon Sep 17 00:00:00 2001
From: Shane <6071159+smashedr@users.noreply.github.com>
Date: Wed, 19 Aug 2026 21:49:59 -0700
Subject: [PATCH 4/5] Reformat
---
.../djangofiles/ui/files/FilesBottomSheet.kt | 2 +-
.../djangofiles/ui/files/FilesFragment.kt | 17 ++++++++++++++---
.../djangofiles/ui/home/HomeFragment.kt | 3 ++-
3 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesBottomSheet.kt b/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesBottomSheet.kt
index a6b7a15..9db4047 100644
--- a/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesBottomSheet.kt
+++ b/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesBottomSheet.kt
@@ -80,7 +80,7 @@ class FilesBottomSheet : BottomSheetDialogFragment() {
dialog.setOnShowListener {
dialog.window?.let { window ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
- window.setNavigationBarContrastEnforced(false)
+ window.isNavigationBarContrastEnforced = false
}
WindowCompat.setDecorFitsSystemWindows(window, false)
}
diff --git a/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesFragment.kt b/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesFragment.kt
index 57a06d3..73acfbc 100644
--- a/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesFragment.kt
+++ b/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesFragment.kt
@@ -211,11 +211,22 @@ class FilesFragment : Fragment() {
fun updateCheckButton() {
val selectedSize = viewModel.selected.value?.size ?: 0
val filesSize = viewModel.filesData.value?.size ?: 0
- binding.filesTotalText.text = resources.getQuantityString(R.plurals.files_total, filesSize, filesSize)
+ binding.filesTotalText.text =
+ resources.getQuantityString(R.plurals.files_total, filesSize, filesSize)
binding.filesSelectedText.text =
- resources.getQuantityString(R.plurals.files_selected_total, selectedSize, selectedSize, filesSize)
+ resources.getQuantityString(
+ R.plurals.files_selected_total,
+ selectedSize,
+ selectedSize,
+ filesSize
+ )
binding.filesSelectedText.text =
- resources.getQuantityString(R.plurals.files_selected_total, filesSize, selectedSize, filesSize)
+ resources.getQuantityString(
+ R.plurals.files_selected_total,
+ filesSize,
+ selectedSize,
+ filesSize
+ )
if (selectedSize == filesSize) {
//Log.i("filesData[updateCheckButton]", "ALL SELECTED")
binding.filesSelectAll.setImageResource(R.drawable.md_check_box_24px)
diff --git a/app/src/main/java/com/djangofiles/djangofiles/ui/home/HomeFragment.kt b/app/src/main/java/com/djangofiles/djangofiles/ui/home/HomeFragment.kt
index 2c33ee3..628d242 100644
--- a/app/src/main/java/com/djangofiles/djangofiles/ui/home/HomeFragment.kt
+++ b/app/src/main/java/com/djangofiles/djangofiles/ui/home/HomeFragment.kt
@@ -96,7 +96,8 @@ class HomeFragment : Fragment() {
// insets
//}
ViewCompat.setOnApplyWindowInsetsListener(view) { view, windowInsets ->
- val types = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()
+ val types =
+ WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()
val insets = windowInsets.getInsets(types)
view.updatePadding(top = insets.top)
WindowInsetsCompat.Builder(windowInsets)
From 637b529af6ee7c3710edf1816c24f191ade0fc36 Mon Sep 17 00:00:00 2001
From: Shane <6071159+smashedr@users.noreply.github.com>
Date: Wed, 19 Aug 2026 21:59:11 -0700
Subject: [PATCH 5/5] Add UploadMultiFragment.kt Plurals
---
.../djangofiles/djangofiles/ui/files/FilesFragment.kt | 7 -------
.../djangofiles/ui/upload/UploadMultiFragment.kt | 9 +++++++--
app/src/main/res/values/strings.xml | 7 +++++--
3 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesFragment.kt b/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesFragment.kt
index 73acfbc..6b96d38 100644
--- a/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesFragment.kt
+++ b/app/src/main/java/com/djangofiles/djangofiles/ui/files/FilesFragment.kt
@@ -213,13 +213,6 @@ class FilesFragment : Fragment() {
val filesSize = viewModel.filesData.value?.size ?: 0
binding.filesTotalText.text =
resources.getQuantityString(R.plurals.files_total, filesSize, filesSize)
- binding.filesSelectedText.text =
- resources.getQuantityString(
- R.plurals.files_selected_total,
- selectedSize,
- selectedSize,
- filesSize
- )
binding.filesSelectedText.text =
resources.getQuantityString(
R.plurals.files_selected_total,
diff --git a/app/src/main/java/com/djangofiles/djangofiles/ui/upload/UploadMultiFragment.kt b/app/src/main/java/com/djangofiles/djangofiles/ui/upload/UploadMultiFragment.kt
index 5a6f12e..d7aeee3 100644
--- a/app/src/main/java/com/djangofiles/djangofiles/ui/upload/UploadMultiFragment.kt
+++ b/app/src/main/java/com/djangofiles/djangofiles/ui/upload/UploadMultiFragment.kt
@@ -138,7 +138,8 @@ class UploadMultiFragment : Fragment() {
Log.i("Multi[onViewCreated]", "INITIALIZE NEW ADAPTER")
adapter = UploadMultiAdapter(fileUris, selectedUris.toMutableSet()) { updated ->
viewModel.selectedUris.value = updated
- binding.uploadButton.text = getString(R.string.upload_multi, updated.size)
+ binding.uploadButton.text =
+ resources.getQuantityString(R.plurals.upload_multi, updated.size, updated.size)
}
}
@@ -179,7 +180,11 @@ class UploadMultiFragment : Fragment() {
val editRequest = FileEditRequest()
// Upload Button
- binding.uploadButton.text = getString(R.string.upload_multi, selectedUris.size)
+ binding.uploadButton.text = resources.getQuantityString(
+ R.plurals.upload_multi,
+ selectedUris.size,
+ selectedUris.size
+ )
binding.uploadButton.setOnClickListener {
val selectedUris = viewModel.getSelectedUris()
//Log.d("uploadButton", "selectedUris: $selectedUris")
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bab147f..7b61316 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,4 +1,4 @@
-
+
Django Files
v%s
%1$s (%2$s)
@@ -20,7 +20,10 @@
File List
App Settings
- Upload %1$d Files
+
+ - Upload %d File
+ - Upload %d Files
+
- %1$d File
- %1$d Files