mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
99 lines
3.0 KiB
Java
99 lines
3.0 KiB
Java
package org.tasks.caldav;
|
|
|
|
import android.os.Bundle;
|
|
import androidx.appcompat.widget.Toolbar;
|
|
import androidx.lifecycle.ViewModelProvider;
|
|
import com.todoroo.astrid.helper.UUIDHelper;
|
|
import dagger.hilt.android.AndroidEntryPoint;
|
|
import javax.inject.Inject;
|
|
import org.tasks.R;
|
|
import org.tasks.data.CaldavAccount;
|
|
import timber.log.Timber;
|
|
|
|
@AndroidEntryPoint
|
|
public class CaldavAccountSettingsActivity extends BaseCaldavAccountSettingsActivity
|
|
implements Toolbar.OnMenuItemClickListener {
|
|
|
|
@Inject CaldavClient client;
|
|
|
|
private AddCaldavAccountViewModel addCaldavAccountViewModel;
|
|
private UpdateCaldavAccountViewModel updateCaldavAccountViewModel;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
|
|
ViewModelProvider provider = new ViewModelProvider(this);
|
|
addCaldavAccountViewModel = provider.get(AddCaldavAccountViewModel.class);
|
|
updateCaldavAccountViewModel = provider.get(UpdateCaldavAccountViewModel.class);
|
|
|
|
addCaldavAccountViewModel.observe(this, this::addAccount, this::requestFailed);
|
|
updateCaldavAccountViewModel.observe(this, this::updateAccount, this::requestFailed);
|
|
}
|
|
|
|
@Override
|
|
protected int getDescription() {
|
|
return R.string.caldav_account_description;
|
|
}
|
|
|
|
private void addAccount(String principal) {
|
|
hideProgressIndicator();
|
|
|
|
Timber.d("Found principal: %s", principal);
|
|
|
|
CaldavAccount newAccount = new CaldavAccount();
|
|
newAccount.setName(getNewName());
|
|
newAccount.setUrl(principal);
|
|
newAccount.setUsername(getNewUsername());
|
|
newAccount.setPassword(encryption.encrypt(getNewPassword()));
|
|
newAccount.setUuid(UUIDHelper.newUUID());
|
|
newAccount.setId(caldavDao.insert(newAccount));
|
|
|
|
setResult(RESULT_OK);
|
|
finish();
|
|
}
|
|
|
|
private void updateAccount(String principal) {
|
|
hideProgressIndicator();
|
|
|
|
caldavAccount.setName(getNewName());
|
|
caldavAccount.setUrl(principal);
|
|
caldavAccount.setUsername(getNewUsername());
|
|
caldavAccount.setError("");
|
|
if (passwordChanged()) {
|
|
caldavAccount.setPassword(encryption.encrypt(getNewPassword()));
|
|
}
|
|
caldavAccount.setSuppressRepeatingTasks(binding.repeat.isChecked());
|
|
caldavDao.update(caldavAccount);
|
|
|
|
setResult(RESULT_OK);
|
|
finish();
|
|
}
|
|
|
|
@Override
|
|
protected void addAccount(String url, String username, String password) {
|
|
addCaldavAccountViewModel.addAccount(client, url, username, password);
|
|
}
|
|
|
|
@Override
|
|
protected void updateAccount(String url, String username, String password) {
|
|
updateCaldavAccountViewModel.updateCaldavAccount(client, url, username, password);
|
|
}
|
|
|
|
@Override
|
|
protected void updateAccount() {
|
|
updateAccount(caldavAccount.getUrl());
|
|
}
|
|
|
|
@Override
|
|
protected String getNewPassword() {
|
|
String input = binding.password.getText().toString().trim();
|
|
return PASSWORD_MASK.equals(input) ? encryption.decrypt(caldavAccount.getPassword()) : input;
|
|
}
|
|
|
|
@Override
|
|
protected String getHelpUrl() {
|
|
return "https://tasks.org/caldav";
|
|
}
|
|
}
|