diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-03 09:15:32 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-03 09:15:32 +0100 |
| commit | cb10a78f9de660be32c16f08404137334541d4c0 (patch) | |
| tree | a1d2c4cd42e9414ed4f2da3b662d33b4f6043d1f /app/src/main/java | |
| parent | 7bdcb041de95c8d8d8d14f1dbd34a3380b326871 (diff) | |
| download | HardenedPass-cb10a78f9de660be32c16f08404137334541d4c0.tar.gz HardenedPass-cb10a78f9de660be32c16f08404137334541d4c0.zip | |
fix(app): pick editor recipients and folder from resolved paths
- Look up the .gpg-id from the normalized target's folder, so a
prefilled folder such as a/../b cannot pick a/'s recipients.
- Derive the edited entry's folder from its canonical parent, so a
store path spelled differently does not show as ../../data/...;
the file name still comes from the link.
- Drop the REPO_PATH shortcut extra nothing reads any more.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'app/src/main/java')
3 files changed, 5 insertions, 6 deletions
diff --git a/app/src/main/java/app/passwordstore/data/password/PasswordItem.kt b/app/src/main/java/app/passwordstore/data/password/PasswordItem.kt index 82798a05..765e886d 100644 --- a/app/src/main/java/app/passwordstore/data/password/PasswordItem.kt +++ b/app/src/main/java/app/passwordstore/data/password/PasswordItem.kt @@ -6,7 +6,6 @@ package app.passwordstore.data.password import android.content.Context import android.content.Intent -import app.passwordstore.data.repo.PasswordRepository import app.passwordstore.ui.crypto.BasePGPActivity import app.passwordstore.ui.main.LaunchActivity import java.io.File @@ -44,7 +43,6 @@ data class PasswordItem( val intent = Intent(context, LaunchActivity::class.java) intent.putExtra("NAME", toString()) intent.putExtra("FILE_PATH", file.absolutePath) - intent.putExtra("REPO_PATH", PasswordRepository.getRepositoryDirectory().absolutePath) intent.action = LaunchActivity.ACTION_DECRYPT_PASS return intent } diff --git a/app/src/main/java/app/passwordstore/ui/editor/EditorDestination.kt b/app/src/main/java/app/passwordstore/ui/editor/EditorDestination.kt index 2d1e12f7..6d9f9c9f 100644 --- a/app/src/main/java/app/passwordstore/ui/editor/EditorDestination.kt +++ b/app/src/main/java/app/passwordstore/ui/editor/EditorDestination.kt @@ -120,7 +120,8 @@ fun EditorDestination( } if (problem != null) return say(problem) // Recipients from the nearest .gpg-id, as pass does; null: an invalid ID, already reported. - val ids = activity.getPGPIdentifiers(current.dir) ?: return + val ids = + activity.getPGPIdentifiers(target.parentFile?.relativeTo(root)?.path.orEmpty()) ?: return activity.lifecycleScope.launch { val result = viewModel.save(ids, target, original, activity, copy) if (result is SaveResult.Failed) failure = activity.getString(result.message, result.arg) diff --git a/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt b/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt index da708148..58ef4381 100644 --- a/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt @@ -122,9 +122,9 @@ class MainActivity : BaseGitActivity() { }, onEdit = { if (nav.currentBackStackEntry?.id == entry.id) { - // Not canonical: a symlinked entry keeps its own folder and name. - val root = PasswordRepository.getRepositoryDirectory() - val dir = file.parentFile?.relativeTo(root)?.path.orEmpty() + // Canonical folder, link's own name: a symlinked entry keeps its name. + val root = PasswordRepository.getRepositoryDirectory().canonicalFile + val dir = file.parentFile?.canonicalFile?.relativeTo(root)?.path.orEmpty() nav.navigate(EditRoute(dir, file.nameWithoutExtension)) } }, |
