From 965a8a0b195cae3ecaa585ade76ed0b34f64b6c6 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Tue, 4 Feb 2020 14:10:37 -0600 Subject: [PATCH] Add EteSyncCalendarSettingsActivity --- app/src/main/AndroidManifest.xml | 4 ++ .../astrid/activity/TaskListFragment.java | 17 +++++++- .../etesync/CreateCalendarViewModel.java | 11 +++++ .../etesync/DeleteCalendarViewModel.java | 12 ++++++ .../EteSyncCalendarSettingsActivity.java | 42 +++++++++++++++++++ .../java/org/tasks/etesync/EteSyncClient.java | 17 ++++++++ .../org/tasks/filters/FilterProvider.java | 7 +++- .../tasks/injection/ActivityComponent.java | 3 ++ 8 files changed, 110 insertions(+), 3 deletions(-) create mode 100644 app/src/main/java/org/tasks/etesync/CreateCalendarViewModel.java create mode 100644 app/src/main/java/org/tasks/etesync/DeleteCalendarViewModel.java create mode 100644 app/src/main/java/org/tasks/etesync/EteSyncCalendarSettingsActivity.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 110ffb73b..a9b45902e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -559,6 +559,10 @@ + + { + void createCalendar(EteSyncClient client, CaldavAccount account, String name) { + run(() -> client.forAccount(account).makeCollection(name)); + } +} diff --git a/app/src/main/java/org/tasks/etesync/DeleteCalendarViewModel.java b/app/src/main/java/org/tasks/etesync/DeleteCalendarViewModel.java new file mode 100644 index 000000000..62e79903c --- /dev/null +++ b/app/src/main/java/org/tasks/etesync/DeleteCalendarViewModel.java @@ -0,0 +1,12 @@ +package org.tasks.etesync; + +import org.tasks.data.CaldavAccount; +import org.tasks.data.CaldavCalendar; +import org.tasks.ui.ActionViewModel; + +@SuppressWarnings("WeakerAccess") +public class DeleteCalendarViewModel extends ActionViewModel { + void deleteCalendar(EteSyncClient client, CaldavAccount account, CaldavCalendar calendar) { + run(() -> client.forAccount(account).deleteCollection(calendar)); + } +} diff --git a/app/src/main/java/org/tasks/etesync/EteSyncCalendarSettingsActivity.java b/app/src/main/java/org/tasks/etesync/EteSyncCalendarSettingsActivity.java new file mode 100644 index 000000000..9ff89fe22 --- /dev/null +++ b/app/src/main/java/org/tasks/etesync/EteSyncCalendarSettingsActivity.java @@ -0,0 +1,42 @@ +package org.tasks.etesync; + +import android.os.Bundle; +import androidx.lifecycle.ViewModelProviders; +import javax.inject.Inject; +import org.tasks.caldav.BaseCaldavCalendarSettingsActivity; +import org.tasks.data.CaldavAccount; +import org.tasks.data.CaldavCalendar; +import org.tasks.injection.ActivityComponent; + +public class EteSyncCalendarSettingsActivity extends BaseCaldavCalendarSettingsActivity { + + @Inject EteSyncClient client; + private CreateCalendarViewModel createCalendarViewModel; + private DeleteCalendarViewModel deleteCalendarViewModel; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + createCalendarViewModel = ViewModelProviders.of(this).get(CreateCalendarViewModel.class); + deleteCalendarViewModel = ViewModelProviders.of(this).get(DeleteCalendarViewModel.class); + + createCalendarViewModel.observe(this, this::createSuccessful, this::requestFailed); + deleteCalendarViewModel.observe(this, this::onDeleted, this::requestFailed); + } + + @Override + protected void createCalendar(CaldavAccount caldavAccount, String name) { + createCalendarViewModel.createCalendar(client, caldavAccount, name); + } + + @Override + protected void deleteCalendar(CaldavAccount caldavAccount, CaldavCalendar caldavCalendar) { + deleteCalendarViewModel.deleteCalendar(client, caldavAccount, caldavCalendar); + } + + @Override + public void inject(ActivityComponent component) { + component.inject(this); + } +} diff --git a/app/src/main/java/org/tasks/etesync/EteSyncClient.java b/app/src/main/java/org/tasks/etesync/EteSyncClient.java index 4c15029e9..778a1fe15 100644 --- a/app/src/main/java/org/tasks/etesync/EteSyncClient.java +++ b/app/src/main/java/org/tasks/etesync/EteSyncClient.java @@ -226,4 +226,21 @@ public class EteSyncClient { Timber.e(e); } } + + String makeCollection(String name) + throws VersionTooNewException, IntegrityException, HttpException { + String uid = Journal.genUid(); + CollectionInfo collectionInfo = new CollectionInfo(); + collectionInfo.setDisplayName(name); + collectionInfo.setType("TASKS"); + collectionInfo.setUid(uid); + collectionInfo.setSelected(true); + CryptoManager crypto = new CryptoManager(collectionInfo.getVersion(), encryptionPassword, uid); + journalManager.create(new Journal(crypto, collectionInfo.toJson(), uid)); + return uid; + } + + void deleteCollection(CaldavCalendar calendar) throws HttpException { + journalManager.delete(Journal.fakeWithUid(calendar.getUrl())); + } } diff --git a/app/src/main/java/org/tasks/filters/FilterProvider.java b/app/src/main/java/org/tasks/filters/FilterProvider.java index ae7d7f6a9..bd3f644d2 100644 --- a/app/src/main/java/org/tasks/filters/FilterProvider.java +++ b/app/src/main/java/org/tasks/filters/FilterProvider.java @@ -35,6 +35,7 @@ import org.tasks.caldav.CaldavCalendarSettingsActivity; import org.tasks.caldav.CaldavFilterExposer; import org.tasks.data.CaldavAccount; import org.tasks.data.GoogleTaskAccount; +import org.tasks.etesync.EteSyncCalendarSettingsActivity; import org.tasks.injection.ForApplication; import org.tasks.preferences.BasicPreferences; import org.tasks.ui.NavigationDrawerFragment; @@ -159,7 +160,11 @@ public class FilterProvider { new NavigationDrawerAction( context.getString(R.string.new_list), R.drawable.ic_outline_add_24px, - new Intent(context, CaldavCalendarSettingsActivity.class) + new Intent( + context, + account.isCaldavAccount() + ? CaldavCalendarSettingsActivity.class + : EteSyncCalendarSettingsActivity.class) .putExtra(EXTRA_CALDAV_ACCOUNT, account), NavigationDrawerFragment.REQUEST_NEW_CALDAV_COLLECTION)); } diff --git a/app/src/main/java/org/tasks/injection/ActivityComponent.java b/app/src/main/java/org/tasks/injection/ActivityComponent.java index 2cf9d73b3..34c2fcbcb 100644 --- a/app/src/main/java/org/tasks/injection/ActivityComponent.java +++ b/app/src/main/java/org/tasks/injection/ActivityComponent.java @@ -20,6 +20,7 @@ import org.tasks.activities.FilterSelectionActivity; import org.tasks.activities.FilterSettingsActivity; import org.tasks.activities.GoogleTaskListSettingsActivity; import org.tasks.etesync.EteSyncAccountSettingsActivity; +import org.tasks.etesync.EteSyncCalendarSettingsActivity; import org.tasks.tags.TagPickerActivity; import org.tasks.activities.TagSettingsActivity; import org.tasks.activities.TimePickerActivity; @@ -152,4 +153,6 @@ public interface ActivityComponent { void inject(TagPickerActivity tagPickerActivity); void inject(TagPickerViewModel viewModel); + + void inject(EteSyncCalendarSettingsActivity eteSyncCalendarSettingsActivity); }