* release:
build: bump version
CHANGELOG: add entries for #1142 and #1131
Temporarily work around SSHJ compatibility issues (#1142)
all: refactor ActivityResultContracts usages to adhere to API requirements
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Using ECDSA either as a key exchange or a host key algorithm fails with
SSHJ 0.30.0 on Android, but should again become possible in 0.31.0.
While we wait for the release, demote ECDSA in the list of key
algorithms (as it should still be available for public key auth) and
remove it from the list of key exchange algorithms.
(cherry picked from commit 0d2788ab54)
The newest versions of AndroidX Activity and Fragments correctly enforce the
requirement for all contracts to be registered at class init or before
the lifecycle has reached `Lifecycle.State.STARTED`. To comply with these requirements,
move all instances of `registerForActivityResult` being called at arbitrary points
in the code to be done at class init.
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
(cherry picked from commit cf03c55478)
Using ECDSA either as a key exchange or a host key algorithm fails with
SSHJ 0.30.0 on Android, but should again become possible in 0.31.0.
While we wait for the release, demote ECDSA in the list of key
algorithms (as it should still be available for public key auth) and
remove it from the list of key exchange algorithms.
If Autofill shows a warning about an app whose publisher changed and the
user decides to trust the app and clear previous matches, they should
immediately be given the option to select a new match.
Previously, as AutofillPublisherChangedActivity did not return a
result, the old FillResponse with just a warning would be reused. We
now pass a useful response with no matches on to the activity, which
returns it after the user has chosen to reset the publisher info.
The newest versions of AndroidX Activity and Fragments correctly enforce the
requirement for all contracts to be registered at class init or before
the lifecycle has reached `Lifecycle.State.STARTED`. To comply with these requirements,
move all instances of `registerForActivityResult` being called at arbitrary points
in the code to be done at class init.
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* BaseGitActivity: unwrap root cause for InvalidRemoteException as well
JGit's InvalidRemoteException, like TransportException, swallows more
useful errors as is clear from this (redacted) snippet.
```
D org.eclipse.jgit.api.errors.InvalidRemoteException: Invalid remote: origin
D at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:26)
D at org.eclipse.jgit.api.PullCommand.call(PullCommand.java:41)
D at com.zeapo.pwdstore.git.GitCommandExecutor$execute$2$result$1.invokeSuspend(GitCommandExecutor.kt:2)
D at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:3)
D at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:15)
D at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1)
D at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:13)
D Caused by: org.eclipse.jgit.errors.NoRemoteRepositoryException: ssh://msfjarvis@[fe80::dead:beef]:22/pass-repo: fatal: '/pass-repo'
does not appear to be a git repository
D at org.eclipse.jgit.transport.TransportGitSsh.cleanNotFound(TransportGitSsh.java:14)
D at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:20)
D at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:1)
D at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:1)
D at org.eclipse.jgit.transport.Transport.fetch(Transport.java:20)
D at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:18)
```
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Add changelog entry
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Ensure we're creating dialogs on the main thread
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Remove unused operation type
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Refactor launchGitOperation to use an enum
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* OnboardingActivity: fix directory change option
Add an else clause to cover the case when storage permission is granted already
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* all: rename permission grant method
The new name is a bit more explicit about its purpose
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* UserPreference: add static method for external directory selection intent
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>