#!/data/adb/magisk/busybox sh

# our module's directory
MODDIR=$(magisk --path)/.magisk/modules/kevp75-tdp-tweaks/

# check for root
checkroot=`ls /data/data`
[ -z "$checkroot" ] && echo "Must be root. Check your app to see if you gave this root permissions." && exit

# if they somehow forced this to install, make sure device is Android 12.1+
if [[ "$(getprop ro.build.version.sdk)" -lt 31 ]]; then

	echo "---------------------------------------"
    echo "- This cannot be used on anything"
    echo "- older than Android 12.1"
    echo "-"
    echo "- Exitting..."
    echo "---------------------------------------"
    sleep 3
    exit 1

fi;

# setup a function to display Enable/Disable
en_dis_txt( ) {

    # hold the actual proprerty name
    PROP="persist.tdp.$1"

    # we actually want the opposite of the property value here
    if [ -z $(getprop $PROP) ] || [ $(getprop $PROP) == false ]; then
        echo "Enable"; 

    # otherwise
    else 
        echo "Disable"; 
        
    fi;

}

# setup a function to set the property's opposite based on what is currently set
en_dis( ) { 

    # hold the actual proprerty name
    PROP="persist.tdp.$1"
    
    # set the opposite
    if [ -z $(getprop $PROP) ] || [ $(getprop $PROP) == false ]; then
        setprop $PROP true; 

    # otherwise
    else
        setprop $PROP false;

        # run the backup script to reset the original settings, if it exists
        [ -e $MODDIR/backup/$1.bak ] && sh $MODDIR/backup/$1.bak

    fi;
    
}

# start a loop to "expect" user input
while true; do

    echo
	echo "---------------------------------------"
	echo "---------------------------------------"
	echo "- Kevp75's TDP Tweaks"
	echo "-"
    echo "- Select what you want to setup..."
    echo "- 1) $(en_dis_txt debugger) Tweak Debugging"
    echo "- 2) Setup Settings Tweaks" #persist.tdp.settings
    echo "- 3) $(en_dis_txt kernel) Kernel Tweaks"
    echo "- 4) $(en_dis_txt memory) Memory Tweaks"
    echo "- 5) $(en_dis_txt dozing) Dozing Tweaks"
    echo "- 6) $(en_dis_txt debugging) Debugging Tweaks"
    echo "- 7) $(en_dis_txt io) Mount/IO Tweaks"
    echo "- 8) $(en_dis_txt analytics) Analytics Blocker"
    echo "- 9) $(en_dis_txt diagnostics) Diagnostics Blocker"
    echo "- 10) $(en_dis_txt adservices) Ad Services Blocker"
    echo "- 11) $(en_dis_txt tracking) Tracking Blocker"
    echo "- 12) $(en_dis_txt sensor) Sensor Blocker"
    echo "- 13) $(en_dis_txt wakelock) WakeLock Blocker"
    echo "- 14) $(en_dis_txt runinbackground) Run In Background Blocker"
    echo "-"
    echo "- 99) Disable / Restore Everything"

    # setup and hold the user selected option
    echo -n "Enter a number (enter to exit): "
    echo
	echo "---------------------------------------"
	echo "---------------------------------------"

    # read in the option selected
	read opts
	echo

    # what'd they choose to do?
    case $opts in
        # tweak debugger
        1)

            echo "---------------------------------------"
            echo "- $(en_dis_txt debugger)ign the Debugger"
            echo "---------------------------------------"
            en_dis debugger;

            sleep 1;
            ;;

        # settings tweaks
        2)

            # check if the settings exists and are already on
            if [[ $(getprop persist.tdp.settings) == true ]]; then

                # ask if we wanted to turn it off
                echo -n "Did you want to turn off the settings tweaks? (y/n) "
                read tod
                if [ "$tod" == "y" ]; then

                    # set the property to false
                    setprop persist.tdp.settings false;

                    # try to remove it
                    resetprop --delete persist.tdp.settings

                    for t in tweak_network tweak_wellbeing tweak_abusiveapps tweak_animation tweak_location tweak_pverifier tweak_wifi tweak_security tweak_settings tweak_screensaver tweak_telephony tweak_lockscreen tweak_gsystem tweak_gms tweak_gservice tweak_gesture tweak_feedback tweak_display tweak_performance tweak_battery; do

                        # set the false flag
                        setprop "persist.tdp.$t" false

                        # try to remove it
                        resetprop --delete "persist.tdp.$t"

                    done;

                    # now run the restore if it exists
                    [ -e $MODDIR/backup/settings.bak ] && sh $MODDIR/backup/settings.bak

                    echo "---------------------------------------"
                    echo "- Turning off the Settings Tweaks"
                    echo "---------------------------------------"
                    sleep 1;

                fi;

            # otherwise
            else

                # create the property and set it to true
                setprop persist.tdp.settings true;
                echo "---------------------------------------"
                echo "- Turning on the Settings Tweaks"
                sleep 1;

            fi;

            # setup a loop here to manage the menu
            while true; do

                echo "---------------------------------------"
                echo "- 1) $(en_dis_txt tweak_battery) Battery Tweaks"
                echo "- 2) $(en_dis_txt tweak_performance) Performance Tweaks"
                echo "- 3) $(en_dis_txt tweak_display) Display Tweaks"
                echo "- 4) $(en_dis_txt tweak_feedback) Feedback Tweaks"
                echo "- 5) $(en_dis_txt tweak_gesture) Gesture Tweaks"
                echo "- 6) $(en_dis_txt tweak_gservice) Google Service Tweaks"
                echo "- 7) $(en_dis_txt tweak_gms) GMS Tweaks"
                echo "- 8) $(en_dis_txt tweak_gsystem) Google System Tweaks"
                echo "- 9) $(en_dis_txt tweak_lockscreen) Lock Screen Tweaks"
                echo "- 10) $(en_dis_txt tweak_telephony) Telephony Tweaks"
                echo "- 11) $(en_dis_txt tweak_screensaver) Screen Saver Tweaks"
                echo "- 12) $(en_dis_txt tweak_settings) Settings Tweaks"
                echo "- 13) $(en_dis_txt tweak_security) Security Tweaks"
                echo "- 14) $(en_dis_txt tweak_wifi) Wifi Tweaks"
                echo "- 15) $(en_dis_txt tweak_pverifier) Package Verifier Tweaks"
                echo "- 16) $(en_dis_txt tweak_location) Location Tweaks"
                echo "- 17) $(en_dis_txt tweak_animation) Animation Tweaks"
                echo "- 18) $(en_dis_txt tweak_abusiveapps) Abusive Apps Tweaks"
                echo "- 19) $(en_dis_txt tweak_wellbeing) Well Being Tweaks"
                echo "- 20) $(en_dis_txt tweak_network) Network Tweaks"
                echo "- 0) Enable All Tweaks"
                echo "- 99) Disable All Tweaks"
                echo -n "Enter a number (enter for main menu): "

                echo
                echo "---------------------------------------"

                # read in the option selected
                read topts
                echo

                # what'd they choose to do?
                case $topts in
                    1)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_battery)ign"
                        echo "- Battery Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_battery;
                        sleep 1;

                        ;;
                    2)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_performance)ign"
                        echo "- Performance Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_performance;
                        sleep 1;

                        ;;
                    3)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_display)ign"
                        echo "- Display Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_display;
                        sleep 1;

                        ;;
                    4)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_feedback)ign"
                        echo "- Feedback Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_feedback;
                        sleep 1;

                        ;;
                    5)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_gesture)ign"
                        echo "- Gesture Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_gesture;
                        sleep 1;

                        ;;
                    6)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_gservice)ign"
                        echo "- Google Service Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_gservice;
                        sleep 1;

                        ;;
                    7)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_gms)ign"
                        echo "- GMS Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_gms;
                        sleep 1;

                        ;;
                    9)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_lockscreen)ign"
                        echo "- Lock Screen Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_lockscreen;
                        sleep 1;

                        ;;
                    10)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_telephony)ign"
                        echo "- Telephony Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_telephony;
                        sleep 1;

                        ;;
                    11)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_screensaver)ign"
                        echo "- Screen Saver Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_screensaver;
                        sleep 1;

                        ;;
                    12)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_settings)ign"
                        echo "- Settings Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_settings;
                        sleep 1;

                        ;;
                    13)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_security)ign"
                        echo "- Security Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_security;
                        sleep 1;

                        ;;
                    14)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_wifi)ign"
                        echo "- Wifi Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_wifi;
                        sleep 1;

                        ;;
                    15)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_pverifier)ign"
                        echo "- Package Verifier Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_pverifier;
                        sleep 1;

                        ;;
                    16)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_location)ign"
                        echo "- Location Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_location;
                        sleep 1;

                        ;;
                    17)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_animation)ign"
                        echo "- Animation Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_animation;
                        sleep 1;

                        ;;
                    18)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_abusiveapps)ign"
                        echo "- Abusive Apps Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_abusiveapps;
                        sleep 1;

                        ;;
                    19)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_wellbeing)ign"
                        echo "- Well Being Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_wellbeing;
                        sleep 1;

                        ;;
                    20)

                        echo "---------------------------------------"
                        echo "- $(en_dis_txt tweak_network)ign"
                        echo "- Network Tweaks"
                        echo "---------------------------------------"
                        en_dis tweak_network;
                        sleep 1;

                        ;;
                    0)

                        echo "---------------------------------------"
                        echo "- Enabling"
                        echo "- All Tweaks Tweaks"
                        echo "---------------------------------------"
                        # loop all the available tweaks manually
                        sleep 1;
                        for t in tweak_network tweak_wellbeing tweak_abusiveapps tweak_animation tweak_location tweak_pverifier tweak_wifi tweak_security tweak_settings tweak_screensaver tweak_telephony tweak_lockscreen tweak_gsystem tweak_gms tweak_gservice tweak_gesture tweak_feedback tweak_display tweak_performance tweak_battery; do

                            # set the true flag
                            setprop "persist.tdp.$t" true

                        done;

                        ;;
                    99)

                        echo "---------------------------------------"
                        echo "- Disabling"
                        echo "- All Tweaks Tweaks"
                        echo "---------------------------------------"
                        # loop all the available tweaks manually
                        sleep 1;
                        for t in tweak_network tweak_wellbeing tweak_abusiveapps tweak_animation tweak_location tweak_pverifier tweak_wifi tweak_security tweak_settings tweak_screensaver tweak_telephony tweak_lockscreen tweak_gsystem tweak_gms tweak_gservice tweak_gesture tweak_feedback tweak_display tweak_performance tweak_battery; do

                            # set the false flag
                            setprop "persist.tdp.$t" false

                            # try to remove it
                            resetprop --delete "persist.tdp.$t"

                        done;

                        # now run the restore if it exists
                        [ -e $MODDIR/backup/settings.bak ] && sh $MODDIR/backup/settings.bak

                        ;;
                    *)
                        break;
                    ;;
                esac

            done;

            sleep 1
            ;;
        # kernel tweaks
        3)

            echo "---------------------------------------"
            echo "- $(en_dis_txt kernel)ign the"
            echo "- Kernel Tweaks"
            echo "---------------------------------------"
            en_dis kernel;

            sleep 1
            ;;
        # memory tweaks
        4)

            echo "---------------------------------------"
            echo "- $(en_dis_txt memory)ign the"
            echo "- Memory Tweaks"
            echo "---------------------------------------"
            en_dis memory;

            sleep 1
            ;;
        # dozing tweaks
        5)

            echo "---------------------------------------"
            echo "- $(en_dis_txt dozing)ign the"
            echo "- Dozing Tweaks"
            echo "---------------------------------------"
            en_dis dozing;

            sleep 1
            ;;
        # debugging tweaks
        6)

            echo "---------------------------------------"
            echo "- $(en_dis_txt debugging)ign the"
            echo "- Debugging Tweaks"
            echo "---------------------------------------"
            en_dis debugging;

            sleep 1
            ;;
        # mount/io teaks
        7)

            echo "---------------------------------------"
            echo "- $(en_dis_txt io)ign the"
            echo "- Mount/IO Tweaks"
            echo "---------------------------------------"
            en_dis io;

            sleep 1
            ;;
        # analytics blocker
        8)

            echo "---------------------------------------"
            echo "- $(en_dis_txt analytics)ign the"
            echo "- Analytics Blocker"
            echo "---------------------------------------"
            en_dis analytics;

            sleep 1
            ;;
        # diagnostics blocker
        9)

            echo "---------------------------------------"
            echo "- $(en_dis_txt diagnostics)ign the"
            echo "- Diagnostics Blocker"
            echo "---------------------------------------"
            en_dis diagnostics;

            sleep 1
            ;;
        # ad services blocker
        10)

            echo "---------------------------------------"
            echo "- $(en_dis_txt adservices)ign the"
            echo "- Ad Services Blocker"
            echo "---------------------------------------"
            en_dis adservices;

            sleep 1
            ;;
        # tracking blocker
        11)

            echo "---------------------------------------"
            echo "- $(en_dis_txt tracking)ign the"
            echo "- Tracking Blocker"
            echo "---------------------------------------"
            en_dis tracking;

            sleep 1
            ;;
        # sensor blocker
        12)

            echo "---------------------------------------"
            echo "- $(en_dis_txt sensor)ign the"
            echo "- Sensor Blocker"
            echo "---------------------------------------"
            en_dis sensor;

            sleep 1
            ;;
        # wakelock blocker
        13)

            echo "---------------------------------------"
            echo "- $(en_dis_txt wakelock)ign the"
            echo "- Wake Lock Blocker"
            echo "---------------------------------------"
            en_dis wakelock;

            sleep 1
            ;;
        # run in background blocker
        14)

            echo "---------------------------------------"
            echo "- $(en_dis_txt runinbackground)ign the"
            echo "- Run In Background Blocker"
            echo "---------------------------------------"
            en_dis runinbackground;

            sleep 1
            ;;
        # disable everything!
        99)

            echo "---------------------------------------"
            echo "- Disabling all tweaks and blockers"
            PROPS=$(getprop | grep -e "persist.tdp" | sed -E "s/\[(.+)\]: (.*)/\1/g");
            for tdp in $PROPS; do

                # don't remove the backup_built property
                if [[ $tdp != 'persist.tdp.backup_built' ]]; then

                    # turn it off
                    setprop $tdp false;

                    # try to remove the property
                    resetprop --delete $tdp

                fi;

            done;
            sleep 1

        	echo "---------------------------------------"
            echo "- Restoring all original settings"
            # loop over the files in the backup dir
            for i in $MODDIR/backup/*.bak; do

                # execute them
                sh $i;

            done
            echo "---------------------------------------"

            sleep 1
            ;;
        *)
            echo "---------------------------------------"
            echo "- Nothing to Do"
            echo "- Exitting"
            echo "---------------------------------------"
            exit
        ;;
	esac

done;
