Sync feeds that have their state changed to subscribed
This commit is contained in:
parent
2037978dd3
commit
2ab4ab9638
|
@ -500,11 +500,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
|
|||
viewBinding.header.butShowInfo.setOnClickListener(v -> showFeedInfo());
|
||||
viewBinding.header.imgvCover.setOnClickListener(v -> showFeedInfo());
|
||||
viewBinding.header.butSubscribe.setOnClickListener(view -> {
|
||||
feed.getPreferences().setKeepUpdated(true);
|
||||
DBWriter.setFeedPreferences(feed.getPreferences());
|
||||
feed.setState(Feed.STATE_SUBSCRIBED);
|
||||
DBWriter.setFeedState(feed);
|
||||
FeedUpdateManager.getInstance().runOnceOrAsk(requireContext(), feed);
|
||||
DBWriter.setFeedState(getContext(), feed, Feed.STATE_SUBSCRIBED);
|
||||
});
|
||||
viewBinding.header.butShowSettings.setOnClickListener(v -> {
|
||||
if (feed != null) {
|
||||
|
|
|
@ -29,7 +29,6 @@ import com.google.android.material.snackbar.Snackbar;
|
|||
import de.danoeh.antennapod.R;
|
||||
import de.danoeh.antennapod.net.download.service.feed.remote.Downloader;
|
||||
import de.danoeh.antennapod.net.download.service.feed.remote.HttpDownloader;
|
||||
import de.danoeh.antennapod.net.download.serviceinterface.FeedUpdateManager;
|
||||
import de.danoeh.antennapod.ui.appstartintent.MainActivityStarter;
|
||||
import de.danoeh.antennapod.ui.common.ThemeSwitcher;
|
||||
import de.danoeh.antennapod.net.download.serviceinterface.DownloadRequestCreator;
|
||||
|
@ -394,22 +393,18 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
|
|||
if (feedInSubscriptions != null) {
|
||||
if (feedInSubscriptions.getState() == Feed.STATE_SUBSCRIBED) {
|
||||
viewBinding.subscribeButton.setVisibility(View.GONE);
|
||||
viewBinding.viewEpisodesButton.setVisibility(View.GONE);
|
||||
viewBinding.previewEpisodesButton.setVisibility(View.GONE);
|
||||
viewBinding.openPodcastButton.setVisibility(View.VISIBLE);
|
||||
viewBinding.openPodcastButton.setOnClickListener(view -> openFeed(feedInSubscriptions.getId()));
|
||||
} else {
|
||||
viewBinding.openPodcastButton.setVisibility(View.GONE);
|
||||
viewBinding.subscribeButton.setVisibility(View.VISIBLE);
|
||||
viewBinding.subscribeButton.setOnClickListener(view -> {
|
||||
feedInSubscriptions.getPreferences().setKeepUpdated(true);
|
||||
DBWriter.setFeedPreferences(feedInSubscriptions.getPreferences());
|
||||
feedInSubscriptions.setState(Feed.STATE_SUBSCRIBED);
|
||||
DBWriter.setFeedState(feedInSubscriptions);
|
||||
FeedUpdateManager.getInstance().runOnceOrAsk(this, feedInSubscriptions);
|
||||
DBWriter.setFeedState(this, feedInSubscriptions, Feed.STATE_SUBSCRIBED);
|
||||
openFeed(feedInSubscriptions.getId());
|
||||
});
|
||||
viewBinding.viewEpisodesButton.setVisibility(View.VISIBLE);
|
||||
viewBinding.viewEpisodesButton.setOnClickListener(view -> {
|
||||
viewBinding.previewEpisodesButton.setVisibility(View.VISIBLE);
|
||||
viewBinding.previewEpisodesButton.setOnClickListener(view -> {
|
||||
feed.setId(feedInSubscriptions.getId());
|
||||
FeedDatabaseWriter.updateFeed(this, feed, false);
|
||||
openFeed(feedInSubscriptions.getId());
|
||||
|
@ -418,9 +413,9 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
|
|||
} else {
|
||||
viewBinding.openPodcastButton.setVisibility(View.GONE);
|
||||
viewBinding.subscribeButton.setVisibility(View.VISIBLE);
|
||||
viewBinding.viewEpisodesButton.setVisibility(View.VISIBLE);
|
||||
viewBinding.previewEpisodesButton.setVisibility(View.VISIBLE);
|
||||
|
||||
viewBinding.viewEpisodesButton.setOnClickListener(v -> {
|
||||
viewBinding.previewEpisodesButton.setOnClickListener(v -> {
|
||||
feed.setState(Feed.STATE_NOT_SUBSCRIBED);
|
||||
FeedDatabaseWriter.updateFeed(this, feed, false);
|
||||
Feed feedFromDb = DBReader.getFeed(feed.getId(), false, 0, Integer.MAX_VALUE);
|
||||
|
|
|
@ -151,11 +151,11 @@
|
|||
android:text="@string/open_podcast" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/viewEpisodesButton"
|
||||
android:id="@+id/previewEpisodesButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="4dp"
|
||||
android:text="@string/view_episodes"
|
||||
android:text="@string/preview_episodes"
|
||||
style="@style/Widget.Material3.Button.OutlinedButton" />
|
||||
|
||||
<CheckBox
|
||||
|
|
|
@ -14,6 +14,7 @@ import androidx.documentfile.provider.DocumentFile;
|
|||
import com.google.common.util.concurrent.Futures;
|
||||
import de.danoeh.antennapod.event.DownloadLogEvent;
|
||||
|
||||
import de.danoeh.antennapod.model.feed.FeedItemFilter;
|
||||
import de.danoeh.antennapod.net.download.serviceinterface.AutoDownloadManager;
|
||||
import de.danoeh.antennapod.net.download.serviceinterface.DownloadServiceInterface;
|
||||
import de.danoeh.antennapod.net.download.serviceinterface.FeedUpdateManager;
|
||||
|
@ -929,11 +930,27 @@ public class DBWriter {
|
|||
});
|
||||
}
|
||||
|
||||
public static Future<?> setFeedState(Feed feed) {
|
||||
public static Future<?> setFeedState(Context context, Feed feed, int newState) {
|
||||
int oldState = feed.getState();
|
||||
return runOnDbThread(() -> {
|
||||
PodDBAdapter adapter = PodDBAdapter.getInstance();
|
||||
adapter.open();
|
||||
adapter.setFeedState(feed.getId(), feed.getState());
|
||||
adapter.setFeedState(feed.getId(), newState);
|
||||
feed.setState(newState);
|
||||
if (oldState == Feed.STATE_NOT_SUBSCRIBED && newState == Feed.STATE_SUBSCRIBED) {
|
||||
feed.getPreferences().setKeepUpdated(true);
|
||||
DBWriter.setFeedPreferences(feed.getPreferences());
|
||||
FeedUpdateManager.getInstance().runOnceOrAsk(context, feed);
|
||||
SynchronizationQueueSink.enqueueFeedAddedIfSynchronizationIsActive(context, feed.getDownloadUrl());
|
||||
DBReader.getFeedItemList(feed, FeedItemFilter.unfiltered(),
|
||||
SortOrder.DATE_NEW_OLD, 0, Integer.MAX_VALUE);
|
||||
for (FeedItem item : feed.getItems()) {
|
||||
if (item.isPlayed()) {
|
||||
SynchronizationQueueSink.enqueueEpisodePlayedIfSynchronizationIsActive(
|
||||
context, item.getMedia(), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
adapter.close();
|
||||
EventBus.getDefault().post(new FeedListUpdateEvent(feed));
|
||||
});
|
||||
|
|
|
@ -681,7 +681,7 @@
|
|||
|
||||
<!-- Online feed view -->
|
||||
<string name="subscribe_label">Subscribe</string>
|
||||
<string name="view_episodes">View episodes</string>
|
||||
<string name="preview_episodes">Preview episodes</string>
|
||||
|
||||
<!-- Content descriptions for image buttons -->
|
||||
<string name="toolbar_back_button_content_description">Back</string>
|
||||
|
|
Loading…
Reference in New Issue