2017-09-03 06:04:18 +00:00
|
|
|
package org.schabi.newpipe.settings;
|
|
|
|
|
2018-04-28 14:11:37 +00:00
|
|
|
import android.content.DialogInterface;
|
2017-09-03 06:04:18 +00:00
|
|
|
import android.os.Bundle;
|
2018-03-14 03:25:22 +00:00
|
|
|
import android.support.annotation.Nullable;
|
2018-04-28 14:11:37 +00:00
|
|
|
import android.support.design.widget.Snackbar;
|
|
|
|
import android.support.v7.app.AlertDialog;
|
2018-03-14 03:25:22 +00:00
|
|
|
import android.support.v7.preference.Preference;
|
2018-04-28 14:11:37 +00:00
|
|
|
import android.util.Log;
|
2018-03-14 03:25:22 +00:00
|
|
|
import android.widget.Toast;
|
2017-09-03 06:04:18 +00:00
|
|
|
|
2018-04-28 14:11:37 +00:00
|
|
|
import org.schabi.newpipe.MainActivity;
|
2017-09-03 06:04:18 +00:00
|
|
|
import org.schabi.newpipe.R;
|
2018-04-28 14:11:37 +00:00
|
|
|
import org.schabi.newpipe.local.history.HistoryRecordManager;
|
|
|
|
import org.schabi.newpipe.report.ErrorActivity;
|
|
|
|
import org.schabi.newpipe.report.UserAction;
|
2018-03-14 03:25:22 +00:00
|
|
|
import org.schabi.newpipe.util.InfoCache;
|
2017-09-03 06:04:18 +00:00
|
|
|
|
2018-04-28 14:11:37 +00:00
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Collection;
|
|
|
|
|
2018-04-29 15:06:54 +00:00
|
|
|
import io.reactivex.Single;
|
2018-04-28 14:11:37 +00:00
|
|
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
|
|
|
import io.reactivex.disposables.CompositeDisposable;
|
|
|
|
import io.reactivex.disposables.Disposable;
|
|
|
|
import io.reactivex.disposables.Disposables;
|
|
|
|
|
2017-09-03 06:04:18 +00:00
|
|
|
public class HistorySettingsFragment extends BasePreferenceFragment {
|
2018-03-14 03:25:22 +00:00
|
|
|
private String cacheWipeKey;
|
2018-04-28 14:11:37 +00:00
|
|
|
private String viewsHistroyClearKey;
|
|
|
|
private String searchHistoryClearKey;
|
|
|
|
private HistoryRecordManager recordManager;
|
|
|
|
private CompositeDisposable disposables;
|
2018-03-14 03:25:22 +00:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
cacheWipeKey = getString(R.string.metadata_cache_wipe_key);
|
2018-04-28 14:11:37 +00:00
|
|
|
viewsHistroyClearKey = getString(R.string.clear_views_history_key);
|
|
|
|
searchHistoryClearKey = getString(R.string.clear_search_history_key);
|
|
|
|
recordManager = new HistoryRecordManager(getActivity());
|
|
|
|
disposables = new CompositeDisposable();
|
2018-03-14 03:25:22 +00:00
|
|
|
}
|
|
|
|
|
2017-09-03 06:04:18 +00:00
|
|
|
@Override
|
|
|
|
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
|
|
|
addPreferencesFromResource(R.xml.history_settings);
|
|
|
|
}
|
2018-03-14 03:25:22 +00:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onPreferenceTreeClick(Preference preference) {
|
|
|
|
if (preference.getKey().equals(cacheWipeKey)) {
|
|
|
|
InfoCache.getInstance().clearCache();
|
|
|
|
Toast.makeText(preference.getContext(), R.string.metadata_cache_wipe_complete_notice,
|
|
|
|
Toast.LENGTH_SHORT).show();
|
|
|
|
}
|
|
|
|
|
2018-04-28 14:11:37 +00:00
|
|
|
if (preference.getKey().equals(viewsHistroyClearKey)) {
|
|
|
|
new AlertDialog.Builder(getActivity())
|
|
|
|
.setTitle(R.string.delete_view_history_alert)
|
|
|
|
.setNegativeButton(R.string.cancel, ((dialog, which) -> dialog.dismiss()))
|
|
|
|
.setPositiveButton(R.string.delete, ((dialog, which) -> {
|
2018-04-29 11:15:52 +00:00
|
|
|
final Disposable onDelete = recordManager.deleteWholeStreamHistory()
|
2018-04-28 14:11:37 +00:00
|
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
|
|
.subscribe(
|
2018-04-29 11:15:52 +00:00
|
|
|
howManyDeleted -> Toast.makeText(getActivity(),
|
2018-04-28 14:11:37 +00:00
|
|
|
R.string.view_history_deleted,
|
|
|
|
Toast.LENGTH_SHORT).show(),
|
|
|
|
throwable -> ErrorActivity.reportError(getContext(),
|
|
|
|
throwable,
|
|
|
|
SettingsActivity.class, null,
|
|
|
|
ErrorActivity.ErrorInfo.make(
|
|
|
|
UserAction.DELETE_FROM_HISTORY,
|
|
|
|
"none",
|
|
|
|
"Delete view history",
|
|
|
|
R.string.general_error)));
|
|
|
|
|
2018-04-29 15:06:54 +00:00
|
|
|
final Disposable onClearOrphans = recordManager.removeOrphanedRecords()
|
|
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
|
|
.subscribe(
|
|
|
|
howManyDeleted -> {},
|
|
|
|
throwable -> ErrorActivity.reportError(getContext(),
|
|
|
|
throwable,
|
|
|
|
SettingsActivity.class, null,
|
|
|
|
ErrorActivity.ErrorInfo.make(
|
|
|
|
UserAction.DELETE_FROM_HISTORY,
|
|
|
|
"none",
|
|
|
|
"Delete search history",
|
|
|
|
R.string.general_error)));
|
|
|
|
disposables.add(onClearOrphans);
|
2018-04-29 11:15:52 +00:00
|
|
|
disposables.add(onDelete);
|
2018-04-28 14:11:37 +00:00
|
|
|
}))
|
|
|
|
.create()
|
|
|
|
.show();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (preference.getKey().equals(searchHistoryClearKey)) {
|
|
|
|
new AlertDialog.Builder(getActivity())
|
|
|
|
.setTitle(R.string.delete_search_history_alert)
|
|
|
|
.setNegativeButton(R.string.cancel, ((dialog, which) -> dialog.dismiss()))
|
|
|
|
.setPositiveButton(R.string.delete, ((dialog, which) -> {
|
2018-04-29 11:15:52 +00:00
|
|
|
final Disposable onDelete = recordManager.deleteWholeSearchHistory()
|
2018-04-28 14:11:37 +00:00
|
|
|
.observeOn(AndroidSchedulers.mainThread())
|
|
|
|
.subscribe(
|
2018-04-29 11:15:52 +00:00
|
|
|
howManyDeleted -> Toast.makeText(getActivity(),
|
2018-04-28 14:11:37 +00:00
|
|
|
R.string.search_history_deleted,
|
|
|
|
Toast.LENGTH_SHORT).show(),
|
|
|
|
throwable -> ErrorActivity.reportError(getContext(),
|
|
|
|
throwable,
|
|
|
|
SettingsActivity.class, null,
|
|
|
|
ErrorActivity.ErrorInfo.make(
|
|
|
|
UserAction.DELETE_FROM_HISTORY,
|
|
|
|
"none",
|
|
|
|
"Delete search history",
|
|
|
|
R.string.general_error)));
|
2018-04-29 11:15:52 +00:00
|
|
|
disposables.add(onDelete);
|
2018-04-28 14:11:37 +00:00
|
|
|
}))
|
|
|
|
.create()
|
|
|
|
.show();
|
|
|
|
}
|
|
|
|
|
2018-03-14 03:25:22 +00:00
|
|
|
return super.onPreferenceTreeClick(preference);
|
|
|
|
}
|
2017-09-03 06:04:18 +00:00
|
|
|
}
|