mirror of
https://github.com/revanced/revanced-patches
synced 2025-02-23 14:01:14 +01:00
135 lines
5.7 KiB
Java
135 lines
5.7 KiB
Java
|
package app.revanced.tiktok.settingsmenu;
|
||
|
|
||
|
import android.app.Activity;
|
||
|
import android.app.AlarmManager;
|
||
|
import android.app.AlertDialog;
|
||
|
import android.app.PendingIntent;
|
||
|
import android.content.Context;
|
||
|
import android.content.Intent;
|
||
|
import android.content.SharedPreferences;
|
||
|
import android.os.Bundle;
|
||
|
import android.os.Process;
|
||
|
import android.preference.PreferenceCategory;
|
||
|
import android.preference.PreferenceFragment;
|
||
|
import android.preference.PreferenceScreen;
|
||
|
import android.preference.SwitchPreference;
|
||
|
|
||
|
import androidx.annotation.Nullable;
|
||
|
|
||
|
import com.ss.android.ugc.aweme.splash.SplashActivity;
|
||
|
|
||
|
import app.revanced.tiktok.settings.SettingsEnum;
|
||
|
import app.revanced.tiktok.utils.ReVancedUtils;
|
||
|
import app.revanced.tiktok.utils.SharedPrefHelper;
|
||
|
|
||
|
public class ReVancedSettingsFragment extends PreferenceFragment {
|
||
|
|
||
|
private boolean Registered = false;
|
||
|
private boolean settingsInitialized = false;
|
||
|
|
||
|
SharedPreferences.OnSharedPreferenceChangeListener listener = (sharedPreferences, str) -> {
|
||
|
for (SettingsEnum setting : SettingsEnum.values()) {
|
||
|
if (!setting.getPath().equals(str)) continue;
|
||
|
|
||
|
if (ReVancedUtils.getAppContext() != null && this.settingsInitialized && setting.shouldRebootOnChange()) {
|
||
|
rebootDialog(getActivity());
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
@Override
|
||
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||
|
super.onCreate(savedInstanceState);
|
||
|
getPreferenceManager().setSharedPreferencesName(SharedPrefHelper.SharedPrefNames.TIKTOK_PREFS.getName());
|
||
|
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this.listener);
|
||
|
this.Registered = true;
|
||
|
|
||
|
final Activity context = this.getActivity();
|
||
|
PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(context);
|
||
|
setPreferenceScreen(preferenceScreen);
|
||
|
|
||
|
//Feed filter
|
||
|
if (SettingsStatus.feedFilter) {
|
||
|
PreferenceCategory feedFilter = new PreferenceCategory(context);
|
||
|
feedFilter.setTitle("Feed filter");
|
||
|
preferenceScreen.addPreference(feedFilter);
|
||
|
|
||
|
//Remove ads toggle
|
||
|
{
|
||
|
SwitchPreference preference = new SwitchPreference(context);
|
||
|
feedFilter.addPreference(preference);
|
||
|
preference.setKey(SettingsEnum.TIK_REMOVE_ADS.getPath());
|
||
|
preference.setDefaultValue(SettingsEnum.TIK_REMOVE_ADS.getDefaultValue());
|
||
|
preference.setChecked(SettingsEnum.TIK_REMOVE_ADS.getBoolean());
|
||
|
preference.setTitle("Remove feed ads");
|
||
|
preference.setSummary("Remove ads from feed.");
|
||
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
||
|
final boolean value = (Boolean) newValue;
|
||
|
SettingsEnum.TIK_REMOVE_ADS.saveValue(value);
|
||
|
return true;
|
||
|
});
|
||
|
}
|
||
|
//Hide LiveStreams toggle
|
||
|
{
|
||
|
SwitchPreference preference = new SwitchPreference(context);
|
||
|
feedFilter.addPreference(preference);
|
||
|
preference.setKey(SettingsEnum.TIK_HIDE_LIVE.getPath());
|
||
|
preference.setDefaultValue(SettingsEnum.TIK_HIDE_LIVE.getDefaultValue());
|
||
|
preference.setChecked(SettingsEnum.TIK_HIDE_LIVE.getBoolean());
|
||
|
preference.setTitle("Hide livestreams");
|
||
|
preference.setSummary("Hide livestreams from feed.");
|
||
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
||
|
final boolean value = (Boolean) newValue;
|
||
|
SettingsEnum.TIK_HIDE_LIVE.saveValue(value);
|
||
|
return true;
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//Integration
|
||
|
PreferenceCategory integration = new PreferenceCategory(context);
|
||
|
integration.setTitle("Integration");
|
||
|
preferenceScreen.addPreference(integration);
|
||
|
//Enable DebugLog toggle
|
||
|
{
|
||
|
SwitchPreference preference = new SwitchPreference(context);
|
||
|
integration.addPreference(preference);
|
||
|
preference.setKey(SettingsEnum.TIK_DEBUG.getPath());
|
||
|
preference.setDefaultValue(SettingsEnum.TIK_DEBUG.getDefaultValue());
|
||
|
preference.setChecked(SettingsEnum.TIK_DEBUG.getBoolean());
|
||
|
preference.setTitle("Enable debug log");
|
||
|
preference.setSummary("Show integration debug log.");
|
||
|
preference.setOnPreferenceChangeListener((pref, newValue) -> {
|
||
|
final boolean value = (Boolean) newValue;
|
||
|
SettingsEnum.TIK_DEBUG.saveValue(value);
|
||
|
return true;
|
||
|
});
|
||
|
}
|
||
|
this.settingsInitialized = true;
|
||
|
}
|
||
|
|
||
|
@Override // android.preference.PreferenceFragment, android.app.Fragment
|
||
|
public void onDestroy() {
|
||
|
if (this.Registered) {
|
||
|
getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this.listener);
|
||
|
this.Registered = false;
|
||
|
}
|
||
|
super.onDestroy();
|
||
|
}
|
||
|
|
||
|
private void reboot(Activity activity) {
|
||
|
int intent;
|
||
|
intent = PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE;
|
||
|
((AlarmManager) activity.getSystemService(Context.ALARM_SERVICE)).setExact(AlarmManager.ELAPSED_REALTIME, 1500L, PendingIntent.getActivity(activity, 0, new Intent(activity, SplashActivity.class), intent));
|
||
|
Process.killProcess(Process.myPid());
|
||
|
}
|
||
|
|
||
|
private void rebootDialog(final Activity activity) {
|
||
|
new AlertDialog.Builder(activity).
|
||
|
setMessage("Refresh and restart").
|
||
|
setPositiveButton("RESTART", (dialog, i) -> reboot(activity))
|
||
|
.setNegativeButton("CANCEL", null)
|
||
|
.show();
|
||
|
}
|
||
|
}
|