#168 set vault position while creating, adding and deleting vaults
This commit is contained in:
parent
2ef3824b79
commit
9b63b7c525
@ -35,7 +35,10 @@ class CreateVault {
|
||||
CloudFolder vaultFolder = cloudContentRepository.folder(folder, vaultName);
|
||||
vaultFolder = cloudContentRepository.create(vaultFolder);
|
||||
cloudRepository.create(vaultFolder, password);
|
||||
return vaultRepository.store(aVault().thatIsNew().withNamePathAndCloudFrom(vaultFolder).build());
|
||||
return vaultRepository.store(aVault() //
|
||||
.thatIsNew() //
|
||||
.withNamePathAndCloudFrom(vaultFolder) //
|
||||
.withPosition(vaultRepository.vaults().size() + 1) //
|
||||
.build());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,8 @@ import org.cryptomator.domain.repository.VaultRepository;
|
||||
import org.cryptomator.generator.Parameter;
|
||||
import org.cryptomator.generator.UseCase;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@UseCase
|
||||
class DeleteVault {
|
||||
|
||||
@ -18,7 +20,12 @@ class DeleteVault {
|
||||
}
|
||||
|
||||
public Long execute() throws BackendException {
|
||||
return vaultRepository.delete(vault);
|
||||
Long vaultId = vaultRepository.delete(vault);
|
||||
|
||||
List<Vault> reorderVaults = MoveVaultHelper.Companion.reorderVaults(vaultRepository);
|
||||
MoveVaultHelper.Companion.updateVaultsInDatabase(reorderVaults, vaultRepository);
|
||||
|
||||
return vaultId;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -29,6 +29,19 @@ class MoveVaultHelper {
|
||||
return vaults
|
||||
}
|
||||
|
||||
private fun reorderVaults(vaults: MutableList<Vault>) : List<Vault> {
|
||||
for (i in 0 until vaults.size) {
|
||||
vaults[i] = Vault.aCopyOf(vaults[i]).withPosition(i + 1).build()
|
||||
}
|
||||
return vaults;
|
||||
}
|
||||
|
||||
fun reorderVaults(vaultRepository: VaultRepository) : List<Vault> {
|
||||
val vaults = vaultRepository.vaults()
|
||||
vaults.sortWith(VaultComparator())
|
||||
return reorderVaults(vaults)
|
||||
}
|
||||
|
||||
fun updateVaultsInDatabase(vaults: List<Vault>, vaultRepository: VaultRepository): List<Vault> {
|
||||
vaults.forEach { vault -> vaultRepository.store(vault) }
|
||||
return vaultRepository.vaults()
|
||||
|
@ -7,6 +7,7 @@ import org.cryptomator.domain.CloudFolder;
|
||||
import org.cryptomator.domain.Vault;
|
||||
import org.cryptomator.domain.di.PerView;
|
||||
import org.cryptomator.domain.usecases.cloud.GetRootFolderUseCase;
|
||||
import org.cryptomator.domain.usecases.vault.GetVaultListUseCase;
|
||||
import org.cryptomator.domain.usecases.vault.SaveVaultUseCase;
|
||||
import org.cryptomator.generator.Callback;
|
||||
import org.cryptomator.presentation.R;
|
||||
@ -18,6 +19,7 @@ import org.cryptomator.presentation.model.mappers.CloudModelMapper;
|
||||
import org.cryptomator.presentation.presenter.VaultListPresenter;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@ -30,6 +32,7 @@ import static org.cryptomator.presentation.intent.Intents.chooseCloudServiceInte
|
||||
public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.State> {
|
||||
|
||||
private final SaveVaultUseCase saveVaultUseCase;
|
||||
private final GetVaultListUseCase getVaultListUseCase;
|
||||
private final GetRootFolderUseCase getRootFolderUseCase;
|
||||
private final CloudModelMapper cloudModelMapper;
|
||||
private final AuthenticationExceptionHandler authenticationExceptionHandler;
|
||||
@ -38,13 +41,15 @@ public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.
|
||||
@Inject
|
||||
public AddExistingVaultWorkflow( //
|
||||
Context context, //
|
||||
SaveVaultUseCase saveVaultUseCase, //
|
||||
SaveVaultUseCase saveVaultUseCase,
|
||||
GetVaultListUseCase getVaultListUseCase, //
|
||||
GetRootFolderUseCase getRootFolderUseCase, //
|
||||
CloudModelMapper cloudModelMapper, //
|
||||
AuthenticationExceptionHandler authenticationExceptionHandler) {
|
||||
super(new State());
|
||||
this.context = context;
|
||||
this.saveVaultUseCase = saveVaultUseCase;
|
||||
this.getVaultListUseCase = getVaultListUseCase;
|
||||
this.getRootFolderUseCase = getRootFolderUseCase;
|
||||
this.cloudModelMapper = cloudModelMapper;
|
||||
this.authenticationExceptionHandler = authenticationExceptionHandler;
|
||||
@ -117,17 +122,23 @@ public class AddExistingVaultWorkflow extends Workflow<AddExistingVaultWorkflow.
|
||||
@Override
|
||||
void completed() {
|
||||
presenter().getView().showProgress(ProgressModel.GENERIC);
|
||||
saveVaultUseCase//
|
||||
.withVault(aVault() //
|
||||
.withNamePathAndCloudFrom(state().masterkeyFile.getParent()) //
|
||||
.thatIsNew() //
|
||||
.build()) //
|
||||
.run(presenter().new ProgressCompletingResultHandler<Vault>() {
|
||||
@Override
|
||||
public void onSuccess(Vault vault) {
|
||||
((VaultListPresenter) presenter()).onAddOrCreateVaultCompleted(vault);
|
||||
}
|
||||
});
|
||||
getVaultListUseCase.run(presenter().new ProgressCompletingResultHandler<List<Vault>>() {
|
||||
@Override
|
||||
public void onSuccess(List<Vault> vaults) {
|
||||
saveVaultUseCase//
|
||||
.withVault(aVault() //
|
||||
.withNamePathAndCloudFrom(state().masterkeyFile.getParent()) //
|
||||
.withPosition(vaults.size() + 1) //
|
||||
.thatIsNew() //
|
||||
.build()) //
|
||||
.run(presenter().new ProgressCompletingResultHandler<Vault>() {
|
||||
@Override
|
||||
public void onSuccess(Vault vault) {
|
||||
((VaultListPresenter) presenter()).onAddOrCreateVaultCompleted(vault);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public static class State implements Serializable {
|
||||
|
Loading…
x
Reference in New Issue
Block a user