Make gpodnet sync error notifications optional
This commit is contained in:
parent
a806d58966
commit
b307d96e95
|
@ -118,5 +118,14 @@ public class PreferenceActivity extends AppCompatActivity {
|
||||||
activity.preferenceController.onResume();
|
activity.preferenceController.onResume();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPause() {
|
||||||
|
PreferenceActivity activity = instance.get();
|
||||||
|
if(activity != null && activity.preferenceController != null) {
|
||||||
|
activity.preferenceController.onPause();
|
||||||
|
}
|
||||||
|
super.onPause();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -54,6 +54,12 @@ public class PreferenceActivityGingerbread extends android.preference.Preference
|
||||||
preferenceController.onResume();
|
preferenceController.onResume();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
|
preferenceController.onPause();
|
||||||
|
super.onPause();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
|
protected void onApplyThemeResource(Theme theme, int resid, boolean first) {
|
||||||
theme.applyStyle(UserPreferences.getTheme(), true);
|
theme.applyStyle(UserPreferences.getTheme(), true);
|
||||||
|
|
|
@ -6,7 +6,7 @@ import android.content.res.Configuration;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.app.ActionBarActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
@ -40,7 +40,7 @@ import de.danoeh.antennapod.core.service.GpodnetSyncService;
|
||||||
* Step 2: Choose device from a list of available devices or create a new one
|
* Step 2: Choose device from a list of available devices or create a new one
|
||||||
* Step 3: Choose from a list of actions
|
* Step 3: Choose from a list of actions
|
||||||
*/
|
*/
|
||||||
public class GpodnetAuthenticationActivity extends ActionBarActivity {
|
public class GpodnetAuthenticationActivity extends AppCompatActivity {
|
||||||
private static final String TAG = "GpodnetAuthActivity";
|
private static final String TAG = "GpodnetAuthActivity";
|
||||||
|
|
||||||
private static final String CURRENT_STEP = "current_step";
|
private static final String CURRENT_STEP = "current_step";
|
||||||
|
|
|
@ -28,10 +28,11 @@ import android.text.Editable;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.text.format.DateFormat;
|
import android.text.format.DateFormat;
|
||||||
|
import android.text.format.DateUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.Toast;
|
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.afollestad.materialdialogs.MaterialDialog;
|
import com.afollestad.materialdialogs.MaterialDialog;
|
||||||
|
|
||||||
|
@ -89,6 +90,8 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
|
||||||
public static final String PREF_GPODNET_SYNC = "pref_gpodnet_sync";
|
public static final String PREF_GPODNET_SYNC = "pref_gpodnet_sync";
|
||||||
public static final String PREF_GPODNET_LOGOUT = "pref_gpodnet_logout";
|
public static final String PREF_GPODNET_LOGOUT = "pref_gpodnet_logout";
|
||||||
public static final String PREF_GPODNET_HOSTNAME = "pref_gpodnet_hostname";
|
public static final String PREF_GPODNET_HOSTNAME = "pref_gpodnet_hostname";
|
||||||
|
public static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications";
|
||||||
|
public static final String PREF_GPODNET_SYNC_REPORT = "pref_gpodnet_sync_report";
|
||||||
public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
|
public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
|
||||||
public static final String PREF_PROXY = "prefProxy";
|
public static final String PREF_PROXY = "prefProxy";
|
||||||
public static final String PREF_KNOWN_ISSUES = "prefKnownIssues";
|
public static final String PREF_KNOWN_ISSUES = "prefKnownIssues";
|
||||||
|
@ -433,9 +436,17 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
|
||||||
setParallelDownloadsText(UserPreferences.getParallelDownloads());
|
setParallelDownloadsText(UserPreferences.getParallelDownloads());
|
||||||
setEpisodeCacheSizeText(UserPreferences.getEpisodeCacheSize());
|
setEpisodeCacheSizeText(UserPreferences.getEpisodeCacheSize());
|
||||||
setDataFolderText();
|
setDataFolderText();
|
||||||
|
GpodnetPreferences.setSyncAttemptListener(() -> ui.getActivity().runOnUiThread(
|
||||||
|
() -> updateLastGpodnetSyncReport(
|
||||||
|
GpodnetPreferences.getLastSyncAttemptResult(),
|
||||||
|
GpodnetPreferences.getLastSyncAttemptTimestamp())));
|
||||||
updateGpodnetPreferenceScreen();
|
updateGpodnetPreferenceScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onPause() {
|
||||||
|
GpodnetPreferences.setSyncAttemptListener(null);
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressLint("NewApi")
|
@SuppressLint("NewApi")
|
||||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||||
if (resultCode == Activity.RESULT_OK &&
|
if (resultCode == Activity.RESULT_OK &&
|
||||||
|
@ -478,17 +489,43 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
|
||||||
ui.findPreference(PreferenceController.PREF_GPODNET_SETLOGIN_INFORMATION).setEnabled(loggedIn);
|
ui.findPreference(PreferenceController.PREF_GPODNET_SETLOGIN_INFORMATION).setEnabled(loggedIn);
|
||||||
ui.findPreference(PreferenceController.PREF_GPODNET_SYNC).setEnabled(loggedIn);
|
ui.findPreference(PreferenceController.PREF_GPODNET_SYNC).setEnabled(loggedIn);
|
||||||
ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setEnabled(loggedIn);
|
ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setEnabled(loggedIn);
|
||||||
|
ui.findPreference(PREF_GPODNET_NOTIFICATIONS).setEnabled(loggedIn);
|
||||||
if(loggedIn) {
|
if(loggedIn) {
|
||||||
String format = ui.getActivity().getString(R.string.pref_gpodnet_login_status);
|
String format = ui.getActivity().getString(R.string.pref_gpodnet_login_status);
|
||||||
String summary = String.format(format, GpodnetPreferences.getUsername(),
|
String summary = String.format(format, GpodnetPreferences.getUsername(),
|
||||||
GpodnetPreferences.getDeviceID());
|
GpodnetPreferences.getDeviceID());
|
||||||
ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setSummary(Html.fromHtml(summary));
|
ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setSummary(Html.fromHtml(summary));
|
||||||
|
updateLastGpodnetSyncReport(GpodnetPreferences.getLastSyncAttemptResult(),
|
||||||
|
GpodnetPreferences.getLastSyncAttemptTimestamp());
|
||||||
} else {
|
} else {
|
||||||
ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setSummary(null);
|
ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setSummary(null);
|
||||||
|
updateLastGpodnetSyncReport(false, 0);
|
||||||
}
|
}
|
||||||
ui.findPreference(PreferenceController.PREF_GPODNET_HOSTNAME).setSummary(GpodnetPreferences.getHostname());
|
ui.findPreference(PreferenceController.PREF_GPODNET_HOSTNAME).setSummary(GpodnetPreferences.getHostname());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateLastGpodnetSyncReport(boolean successful, long lastTime) {
|
||||||
|
Preference syncReport = ui.findPreference(PREF_GPODNET_SYNC_REPORT);
|
||||||
|
if (lastTime != 0) {
|
||||||
|
syncReport.setTitle(ui.getActivity().getString(R.string.pref_gpodnet_last_sync_title,
|
||||||
|
ui.getActivity().getString(successful ?
|
||||||
|
R.string.gpodnetsync_pref_report_successful :
|
||||||
|
R.string.gpodnetsync_pref_report_failed)));
|
||||||
|
syncReport.setSummary(DateUtils.getRelativeDateTimeString(
|
||||||
|
ui.getActivity(),
|
||||||
|
lastTime,
|
||||||
|
DateUtils.MINUTE_IN_MILLIS,
|
||||||
|
DateUtils.WEEK_IN_MILLIS,
|
||||||
|
DateUtils.FORMAT_SHOW_TIME));
|
||||||
|
syncReport.setEnabled(true);
|
||||||
|
} else {
|
||||||
|
syncReport.setTitle(ui.getActivity().getString(R.string.pref_gpodnet_last_sync_title,
|
||||||
|
ui.getActivity().getString(R.string.gpodnetsync_pref_report_undetermined)));
|
||||||
|
syncReport.setSummary(null);
|
||||||
|
syncReport.setEnabled(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private String[] getUpdateIntervalEntries(final String[] values) {
|
private String[] getUpdateIntervalEntries(final String[] values) {
|
||||||
final Resources res = ui.getActivity().getResources();
|
final Resources res = ui.getActivity().getResources();
|
||||||
String[] entries = new String[values.length];
|
String[] entries = new String[values.length];
|
||||||
|
|
|
@ -74,7 +74,6 @@
|
||||||
android:key="prefQueueAddToFront"
|
android:key="prefQueueAddToFront"
|
||||||
android:summary="@string/pref_queueAddToFront_sum"
|
android:summary="@string/pref_queueAddToFront_sum"
|
||||||
android:title="@string/pref_queueAddToFront_title"/>
|
android:title="@string/pref_queueAddToFront_title"/>
|
||||||
/>
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory android:title="@string/playback_pref">
|
<PreferenceCategory android:title="@string/playback_pref">
|
||||||
|
@ -233,7 +232,7 @@
|
||||||
android:title="@string/pref_revokeAccess_title"/>
|
android:title="@string/pref_revokeAccess_title"/>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
android:key="prefFlattrSettings"
|
android:key="prefGpodderSettings"
|
||||||
android:title="@string/gpodnet_main_label">
|
android:title="@string/gpodnet_main_label">
|
||||||
|
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
|
@ -256,6 +255,16 @@
|
||||||
<Preference
|
<Preference
|
||||||
android:key="pref_gpodnet_hostname"
|
android:key="pref_gpodnet_hostname"
|
||||||
android:title="@string/pref_gpodnet_sethostname_title"/>
|
android:title="@string/pref_gpodnet_sethostname_title"/>
|
||||||
|
<de.danoeh.antennapod.preferences.SwitchCompatPreference
|
||||||
|
android:key="pref_gpodnet_notifications"
|
||||||
|
android:title="@string/pref_gpodnet_notifications_title"
|
||||||
|
android:summary="@string/pref_gpodnet_notifications_sum"
|
||||||
|
android:defaultValue="true"/>
|
||||||
|
<Preference android:key="pref_gpodnet_sync_report"
|
||||||
|
android:title="@string/pref_gpodnet_last_sync_title"
|
||||||
|
android:selectable="false"
|
||||||
|
android:enabled="false"
|
||||||
|
android:shouldDisableView="true"/>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory android:title="@string/storage_pref">
|
<PreferenceCategory android:title="@string/storage_pref">
|
||||||
|
|
|
@ -37,6 +37,8 @@ public class GpodnetPreferences {
|
||||||
public static final String PREF_SYNC_ADDED = "de.danoeh.antennapod.preferences.gpoddernet.sync_added";
|
public static final String PREF_SYNC_ADDED = "de.danoeh.antennapod.preferences.gpoddernet.sync_added";
|
||||||
public static final String PREF_SYNC_REMOVED = "de.danoeh.antennapod.preferences.gpoddernet.sync_removed";
|
public static final String PREF_SYNC_REMOVED = "de.danoeh.antennapod.preferences.gpoddernet.sync_removed";
|
||||||
public static final String PREF_SYNC_EPISODE_ACTIONS = "de.danoeh.antennapod.preferences.gpoddernet.sync_queued_episode_actions";
|
public static final String PREF_SYNC_EPISODE_ACTIONS = "de.danoeh.antennapod.preferences.gpoddernet.sync_queued_episode_actions";
|
||||||
|
public static final String PREF_LAST_SYNC_ATTEMPT_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_attempt_timestamp";
|
||||||
|
public static final String PREF_LAST_SYNC_ATTEMPT_RESULT = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_attempt_result";
|
||||||
|
|
||||||
private static String username;
|
private static String username;
|
||||||
private static String password;
|
private static String password;
|
||||||
|
@ -56,6 +58,12 @@ public class GpodnetPreferences {
|
||||||
|
|
||||||
private static long lastEpisodeActionsSyncTimeStamp;
|
private static long lastEpisodeActionsSyncTimeStamp;
|
||||||
|
|
||||||
|
private static long lastSyncAttemptTimestamp;
|
||||||
|
|
||||||
|
private static boolean lastSyncAttemptResult;
|
||||||
|
|
||||||
|
private static Runnable syncAttemptListener;
|
||||||
|
|
||||||
private static boolean preferencesLoaded = false;
|
private static boolean preferencesLoaded = false;
|
||||||
|
|
||||||
private static SharedPreferences getPreferences() {
|
private static SharedPreferences getPreferences() {
|
||||||
|
@ -70,6 +78,8 @@ public class GpodnetPreferences {
|
||||||
deviceID = prefs.getString(PREF_GPODNET_DEVICEID, null);
|
deviceID = prefs.getString(PREF_GPODNET_DEVICEID, null);
|
||||||
lastSubscriptionSyncTimestamp = prefs.getLong(PREF_LAST_SUBSCRIPTION_SYNC_TIMESTAMP, 0);
|
lastSubscriptionSyncTimestamp = prefs.getLong(PREF_LAST_SUBSCRIPTION_SYNC_TIMESTAMP, 0);
|
||||||
lastEpisodeActionsSyncTimeStamp = prefs.getLong(PREF_LAST_EPISODE_ACTIONS_SYNC_TIMESTAMP, 0);
|
lastEpisodeActionsSyncTimeStamp = prefs.getLong(PREF_LAST_EPISODE_ACTIONS_SYNC_TIMESTAMP, 0);
|
||||||
|
lastSyncAttemptTimestamp = prefs.getLong(PREF_LAST_SYNC_ATTEMPT_TIMESTAMP, 0);
|
||||||
|
lastSyncAttemptResult = prefs.getBoolean(PREF_LAST_SYNC_ATTEMPT_RESULT, false);
|
||||||
addedFeeds = readListFromString(prefs.getString(PREF_SYNC_ADDED, ""));
|
addedFeeds = readListFromString(prefs.getString(PREF_SYNC_ADDED, ""));
|
||||||
removedFeeds = readListFromString(prefs.getString(PREF_SYNC_REMOVED, ""));
|
removedFeeds = readListFromString(prefs.getString(PREF_SYNC_REMOVED, ""));
|
||||||
queuedEpisodeActions = readEpisodeActionsFromString(prefs.getString(PREF_SYNC_EPISODE_ACTIONS, ""));
|
queuedEpisodeActions = readEpisodeActionsFromString(prefs.getString(PREF_SYNC_EPISODE_ACTIONS, ""));
|
||||||
|
@ -82,19 +92,25 @@ public class GpodnetPreferences {
|
||||||
private static void writePreference(String key, String value) {
|
private static void writePreference(String key, String value) {
|
||||||
SharedPreferences.Editor editor = getPreferences().edit();
|
SharedPreferences.Editor editor = getPreferences().edit();
|
||||||
editor.putString(key, value);
|
editor.putString(key, value);
|
||||||
editor.commit();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void writePreference(String key, long value) {
|
private static void writePreference(String key, long value) {
|
||||||
SharedPreferences.Editor editor = getPreferences().edit();
|
SharedPreferences.Editor editor = getPreferences().edit();
|
||||||
editor.putLong(key, value);
|
editor.putLong(key, value);
|
||||||
editor.commit();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void writePreference(String key, Collection<String> value) {
|
private static void writePreference(String key, Collection<String> value) {
|
||||||
SharedPreferences.Editor editor = getPreferences().edit();
|
SharedPreferences.Editor editor = getPreferences().edit();
|
||||||
editor.putString(key, writeListToString(value));
|
editor.putString(key, writeListToString(value));
|
||||||
editor.commit();
|
editor.apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void writePreference(String key, boolean value) {
|
||||||
|
SharedPreferences.Editor editor = getPreferences().edit();
|
||||||
|
editor.putBoolean(key, value);
|
||||||
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getUsername() {
|
public static String getUsername() {
|
||||||
|
@ -147,6 +163,26 @@ public class GpodnetPreferences {
|
||||||
writePreference(PREF_LAST_EPISODE_ACTIONS_SYNC_TIMESTAMP, timestamp);
|
writePreference(PREF_LAST_EPISODE_ACTIONS_SYNC_TIMESTAMP, timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static long getLastSyncAttemptTimestamp() {
|
||||||
|
ensurePreferencesLoaded();
|
||||||
|
return lastSyncAttemptTimestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean getLastSyncAttemptResult() {
|
||||||
|
ensurePreferencesLoaded();
|
||||||
|
return lastSyncAttemptResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setLastSyncAttempt(boolean result, long timestamp) {
|
||||||
|
GpodnetPreferences.lastSyncAttemptResult = result;
|
||||||
|
GpodnetPreferences.lastSyncAttemptTimestamp = timestamp;
|
||||||
|
writePreference(PREF_LAST_SYNC_ATTEMPT_RESULT, result);
|
||||||
|
writePreference(PREF_LAST_SYNC_ATTEMPT_TIMESTAMP, timestamp);
|
||||||
|
if (timestamp != 0 && syncAttemptListener != null) {
|
||||||
|
syncAttemptListener.run();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static String getHostname() {
|
public static String getHostname() {
|
||||||
ensurePreferencesLoaded();
|
ensurePreferencesLoaded();
|
||||||
return hostname;
|
return hostname;
|
||||||
|
@ -269,6 +305,12 @@ public class GpodnetPreferences {
|
||||||
writePreference(PREF_SYNC_EPISODE_ACTIONS, writeEpisodeActionsToString(queuedEpisodeActions));
|
writePreference(PREF_SYNC_EPISODE_ACTIONS, writeEpisodeActionsToString(queuedEpisodeActions));
|
||||||
feedListLock.unlock();
|
feedListLock.unlock();
|
||||||
setLastSubscriptionSyncTimestamp(0);
|
setLastSubscriptionSyncTimestamp(0);
|
||||||
|
setLastSyncAttempt(false, 0);
|
||||||
|
UserPreferences.setGpodnetNotificationsEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setSyncAttemptListener(Runnable listener) {
|
||||||
|
syncAttemptListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Set<String> readListFromString(String s) {
|
private static Set<String> readListFromString(String s) {
|
||||||
|
|
|
@ -92,6 +92,7 @@ public class UserPreferences {
|
||||||
// Services
|
// Services
|
||||||
public static final String PREF_AUTO_FLATTR = "pref_auto_flattr";
|
public static final String PREF_AUTO_FLATTR = "pref_auto_flattr";
|
||||||
public static final String PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD = "prefAutoFlattrPlayedDurationThreshold";
|
public static final String PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD = "prefAutoFlattrPlayedDurationThreshold";
|
||||||
|
public static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications";
|
||||||
|
|
||||||
// Other
|
// Other
|
||||||
public static final String PREF_DATA_FOLDER = "prefDataFolder";
|
public static final String PREF_DATA_FOLDER = "prefDataFolder";
|
||||||
|
@ -546,6 +547,16 @@ public class UserPreferences {
|
||||||
.apply();
|
.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean gpodnetNotificationsEnabled() {
|
||||||
|
return prefs.getBoolean(PREF_GPODNET_NOTIFICATIONS, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setGpodnetNotificationsEnabled() {
|
||||||
|
prefs.edit()
|
||||||
|
.putBoolean(PREF_GPODNET_NOTIFICATIONS, true)
|
||||||
|
.apply();
|
||||||
|
}
|
||||||
|
|
||||||
public static void setHiddenDrawerItems(List<String> items) {
|
public static void setHiddenDrawerItems(List<String> items) {
|
||||||
String str = TextUtils.join(",", items);
|
String str = TextUtils.join(",", items);
|
||||||
prefs.edit()
|
prefs.edit()
|
||||||
|
|
|
@ -30,6 +30,7 @@ import de.danoeh.antennapod.core.gpoddernet.model.GpodnetEpisodeActionPostRespon
|
||||||
import de.danoeh.antennapod.core.gpoddernet.model.GpodnetSubscriptionChange;
|
import de.danoeh.antennapod.core.gpoddernet.model.GpodnetSubscriptionChange;
|
||||||
import de.danoeh.antennapod.core.gpoddernet.model.GpodnetUploadChangesResponse;
|
import de.danoeh.antennapod.core.gpoddernet.model.GpodnetUploadChangesResponse;
|
||||||
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
|
import de.danoeh.antennapod.core.preferences.GpodnetPreferences;
|
||||||
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.core.storage.DBReader;
|
import de.danoeh.antennapod.core.storage.DBReader;
|
||||||
import de.danoeh.antennapod.core.storage.DBTasks;
|
import de.danoeh.antennapod.core.storage.DBTasks;
|
||||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||||
|
@ -107,7 +108,7 @@ public class GpodnetSyncService extends Service {
|
||||||
|
|
||||||
|
|
||||||
private synchronized void sync() {
|
private synchronized void sync() {
|
||||||
if (GpodnetPreferences.loggedIn() == false || NetworkUtils.networkAvailable() == false) {
|
if (!GpodnetPreferences.loggedIn() || !NetworkUtils.networkAvailable()) {
|
||||||
stopSelf();
|
stopSelf();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -161,6 +162,7 @@ public class GpodnetSyncService extends Service {
|
||||||
GpodnetPreferences.removeRemovedFeeds(localRemoved);
|
GpodnetPreferences.removeRemovedFeeds(localRemoved);
|
||||||
}
|
}
|
||||||
GpodnetPreferences.setLastSubscriptionSyncTimestamp(newTimeStamp);
|
GpodnetPreferences.setLastSubscriptionSyncTimestamp(newTimeStamp);
|
||||||
|
GpodnetPreferences.setLastSyncAttempt(true, System.currentTimeMillis());
|
||||||
clearErrorNotifications();
|
clearErrorNotifications();
|
||||||
} catch (GpodnetServiceException e) {
|
} catch (GpodnetServiceException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -177,15 +179,15 @@ public class GpodnetSyncService extends Service {
|
||||||
// local changes are always superior to remote changes!
|
// local changes are always superior to remote changes!
|
||||||
// add subscription if (1) not already subscribed and (2) not just unsubscribed
|
// add subscription if (1) not already subscribed and (2) not just unsubscribed
|
||||||
for (String downloadUrl : changes.getAdded()) {
|
for (String downloadUrl : changes.getAdded()) {
|
||||||
if (false == localSubscriptions.contains(downloadUrl) &&
|
if (!localSubscriptions.contains(downloadUrl) &&
|
||||||
false == localRemoved.contains(downloadUrl)) {
|
!localRemoved.contains(downloadUrl)) {
|
||||||
Feed feed = new Feed(downloadUrl, null);
|
Feed feed = new Feed(downloadUrl, null);
|
||||||
DownloadRequester.getInstance().downloadFeed(this, feed);
|
DownloadRequester.getInstance().downloadFeed(this, feed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// remove subscription if not just subscribed (again)
|
// remove subscription if not just subscribed (again)
|
||||||
for (String downloadUrl : changes.getRemoved()) {
|
for (String downloadUrl : changes.getRemoved()) {
|
||||||
if(false == localAdded.contains(downloadUrl)) {
|
if(!localAdded.contains(downloadUrl)) {
|
||||||
DBTasks.removeFeedWithDownloadUrl(GpodnetSyncService.this, downloadUrl);
|
DBTasks.removeFeedWithDownloadUrl(GpodnetSyncService.this, downloadUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -215,6 +217,7 @@ public class GpodnetSyncService extends Service {
|
||||||
GpodnetPreferences.removeQueuedEpisodeActions(localActions);
|
GpodnetPreferences.removeQueuedEpisodeActions(localActions);
|
||||||
}
|
}
|
||||||
GpodnetPreferences.setLastEpisodeActionsSyncTimestamp(lastUpdate);
|
GpodnetPreferences.setLastEpisodeActionsSyncTimestamp(lastUpdate);
|
||||||
|
GpodnetPreferences.setLastSyncAttempt(true, System.currentTimeMillis());
|
||||||
clearErrorNotifications();
|
clearErrorNotifications();
|
||||||
} catch (GpodnetServiceException e) {
|
} catch (GpodnetServiceException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
@ -299,7 +302,6 @@ public class GpodnetSyncService extends Service {
|
||||||
private void updateErrorNotification(GpodnetServiceException exception) {
|
private void updateErrorNotification(GpodnetServiceException exception) {
|
||||||
Log.d(TAG, "Posting error notification");
|
Log.d(TAG, "Posting error notification");
|
||||||
|
|
||||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
|
|
||||||
final String title;
|
final String title;
|
||||||
final String description;
|
final String description;
|
||||||
final int id;
|
final int id;
|
||||||
|
@ -308,18 +310,24 @@ public class GpodnetSyncService extends Service {
|
||||||
description = getString(R.string.gpodnetsync_auth_error_descr);
|
description = getString(R.string.gpodnetsync_auth_error_descr);
|
||||||
id = R.id.notification_gpodnet_sync_autherror;
|
id = R.id.notification_gpodnet_sync_autherror;
|
||||||
} else {
|
} else {
|
||||||
title = getString(R.string.gpodnetsync_error_title);
|
GpodnetPreferences.setLastSyncAttempt(false, System.currentTimeMillis());
|
||||||
description = getString(R.string.gpodnetsync_error_descr) + exception.getMessage();
|
if (UserPreferences.gpodnetNotificationsEnabled()) {
|
||||||
id = R.id.notification_gpodnet_sync_error;
|
title = getString(R.string.gpodnetsync_error_title);
|
||||||
|
description = getString(R.string.gpodnetsync_error_descr) + exception.getMessage();
|
||||||
|
id = R.id.notification_gpodnet_sync_error;
|
||||||
|
} else {
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PendingIntent activityIntent = ClientConfig.gpodnetCallbacks.getGpodnetSyncServiceErrorNotificationPendingIntent(this);
|
PendingIntent activityIntent = ClientConfig.gpodnetCallbacks.getGpodnetSyncServiceErrorNotificationPendingIntent(this);
|
||||||
Notification notification = builder.setContentTitle(title)
|
Notification notification = new NotificationCompat.Builder(this)
|
||||||
|
.setContentTitle(title)
|
||||||
.setContentText(description)
|
.setContentText(description)
|
||||||
.setContentIntent(activityIntent)
|
.setContentIntent(activityIntent)
|
||||||
.setSmallIcon(R.drawable.stat_notify_sync_error)
|
.setSmallIcon(R.drawable.stat_notify_sync_error)
|
||||||
.setAutoCancel(true)
|
.setAutoCancel(true)
|
||||||
.setVisibility(Notification.VISIBILITY_PUBLIC)
|
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
|
||||||
.build();
|
.build();
|
||||||
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
nm.notify(id, notification);
|
nm.notify(id, notification);
|
||||||
|
|
|
@ -368,6 +368,9 @@
|
||||||
<string name="pref_gpodnet_sync_sum">Sync subscriptions and episode states with gpodder.net</string>
|
<string name="pref_gpodnet_sync_sum">Sync subscriptions and episode states with gpodder.net</string>
|
||||||
<string name="pref_gpodnet_sync_started">Sync started</string>
|
<string name="pref_gpodnet_sync_started">Sync started</string>
|
||||||
<string name="pref_gpodnet_login_status"><![CDATA[Logged in as <i>%1$s</i> with device <i>%2$s</i>]]></string>
|
<string name="pref_gpodnet_login_status"><![CDATA[Logged in as <i>%1$s</i> with device <i>%2$s</i>]]></string>
|
||||||
|
<string name="pref_gpodnet_notifications_title">Show sync error notifications</string>
|
||||||
|
<string name="pref_gpodnet_notifications_sum">This setting does not apply to authentication errors.</string>
|
||||||
|
<string name="pref_gpodnet_last_sync_title">Last sync attempt: %1$s</string>
|
||||||
<string name="pref_playback_speed_title">Playback Speeds</string>
|
<string name="pref_playback_speed_title">Playback Speeds</string>
|
||||||
<string name="pref_playback_speed_sum">Customize the speeds available for variable speed audio playback</string>
|
<string name="pref_playback_speed_sum">Customize the speeds available for variable speed audio playback</string>
|
||||||
<string name="pref_fast_forward">Fast forward time</string>
|
<string name="pref_fast_forward">Fast forward time</string>
|
||||||
|
@ -502,6 +505,9 @@
|
||||||
<string name="gpodnetsync_auth_error_descr">Wrong username or password</string>
|
<string name="gpodnetsync_auth_error_descr">Wrong username or password</string>
|
||||||
<string name="gpodnetsync_error_title">gpodder.net sync error</string>
|
<string name="gpodnetsync_error_title">gpodder.net sync error</string>
|
||||||
<string name="gpodnetsync_error_descr">An error occurred during syncing:\u0020</string>
|
<string name="gpodnetsync_error_descr">An error occurred during syncing:\u0020</string>
|
||||||
|
<string name="gpodnetsync_pref_report_successful">Successful</string>
|
||||||
|
<string name="gpodnetsync_pref_report_failed">Failed</string>
|
||||||
|
<string name="gpodnetsync_pref_report_undetermined">Undetermined</string>
|
||||||
|
|
||||||
<!-- Directory chooser -->
|
<!-- Directory chooser -->
|
||||||
<string name="selected_folder_label">Selected folder:</string>
|
<string name="selected_folder_label">Selected folder:</string>
|
||||||
|
|
Loading…
Reference in New Issue