Commit a655cab7 authored by Thomas's avatar Thomas
Browse files

Request remove battery optimization

parent 7195f035
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
    <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE"
        tools:ignore="ScopedStorage" />
+16 −1
Original line number Diff line number Diff line
@@ -169,6 +169,8 @@ public class FetchHomeWorker extends Worker {
            int call = 0;
            String max_id = null;
            MastodonTimelinesService mastodonTimelinesService = init(account.instance);
            int insertValue = 0;
            StatusCache lastStatusCache = null;
            while (canContinue && call < max_calls) {
                Call<List<Status>> homeCall = mastodonTimelinesService.getHome(account.token, max_id, null, null, status_per_page, null);
                if (homeCall != null) {
@@ -184,12 +186,14 @@ public class FetchHomeWorker extends Worker {
                                statusCache.status = status;
                                statusCache.type = Timeline.TimeLineEnum.HOME;
                                statusCache.status_id = status.id;
                                lastStatusCache = statusCache;
                                try {
                                    statusCacheDAO.insertOrUpdate(statusCache, Timeline.TimeLineEnum.HOME.getValue());
                                    insertValue = statusCacheDAO.insertOrUpdate(statusCache, Timeline.TimeLineEnum.HOME.getValue());
                                } catch (DBException e) {
                                    e.printStackTrace();
                                }
                            }

                            Pagination pagination = MastodonHelper.getPagination(homeResponse.headers());
                            if (pagination.max_id != null) {
                                max_id = pagination.max_id;
@@ -211,6 +215,17 @@ public class FetchHomeWorker extends Worker {
                }
                call++;
            }
            //insertValue is for last status and equals zero if updated or 1 if inserted
            if (lastStatusCache != null && insertValue == 1) { //Last inserted message was not in cache.
                StatusCache statusCacheDAO = new StatusCache(getApplicationContext());
                lastStatusCache.status.isFetchMore = true;
                lastStatusCache.status.positionFetchMore = Status.PositionFetchMore.TOP;
                try {
                    statusCacheDAO.updateIfExists(lastStatusCache);
                } catch (DBException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }

+26 −0
Original line number Diff line number Diff line
@@ -14,12 +14,16 @@ package app.fedilab.android.mastodon.ui.fragment.settings;
 * You should have received a copy of the GNU General Public License along with Fedilab; if not,
 * see <http://www.gnu.org/licenses>. */

import static android.content.Context.POWER_SERVICE;

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.PowerManager;
import android.provider.Settings;

import androidx.annotation.NonNull;
@@ -121,6 +125,28 @@ public class FragmentNotificationsSettings extends PreferenceFragmentCompat impl
            }
        }

        Preference SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS = findPreference(getString(R.string.SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS));
        if (SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS != null) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                PowerManager pm = (PowerManager) requireActivity().getSystemService(POWER_SERVICE);
                String packageName = requireActivity().getPackageName();
                if (!pm.isIgnoringBatteryOptimizations(packageName)) {
                    SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS.setOnPreferenceClickListener(preference -> {
                        Intent intent = new Intent();
                        String packageName1 = requireActivity().getPackageName();
                        intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
                        intent.setData(Uri.parse("package:" + packageName1));
                        startActivity(intent);
                        return false;
                    });
                } else {
                    preferenceScreen.removePreferenceRecursively(getString(R.string.SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS));
                }
            } else {
                preferenceScreen.removePreferenceRecursively(getString(R.string.SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS));
            }
        }

        Preference button_mention = findPreference("button_mention");
        assert button_mention != null;
        button_mention.setOnPreferenceClickListener(preference -> {
+3 −0
Original line number Diff line number Diff line
@@ -840,6 +840,8 @@
    <string name="SET_NOTIFICATION_TYPE" translatable="false">SET_NOTIFICATION_TYPE</string>
    <string name="SET_LOAD_MEDIA_TYPE" translatable="false">SET_LOAD_MEDIA_TYPE</string>
    <string name="SET_NOTIFICATION_DELAY_VALUE" translatable="false">SET_NOTIFICATION_DELAY_VALUE</string>
    <string name="SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS" translatable="false">SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS</string>

    <string name="SET_PUSH_DISTRIBUTOR" translatable="false">SET_PUSH_DISTRIBUTOR</string>
    <string-array name="SET_NOTIFICATION_TYPE_VALUE" translatable="false">
        <item>PUSH_NOTIFICATIONS</item>
@@ -1923,4 +1925,5 @@
    <string name="set_alt_text_mandatory_warn">Warn only</string>
    <string name="set_alt_text_mandatory_description_warn">If there are missing media a dialog will be displayed with the ability to send the message without media description</string>
    <string name="send_anyway">Send anyway</string>
    <string name="set_remove_battery">Ignore battery optimizations</string>
</resources>
 No newline at end of file
+5 −0
Original line number Diff line number Diff line
@@ -33,6 +33,11 @@
            app:key="@string/SET_PUSH_DISTRIBUTOR"
            app:title="@string/push_distributors"
            app:useSimpleSummaryProvider="true" />

        <Preference
            app:iconSpaceReserved="false"
            app:key="@string/SET_KEY_IGNORE_BATTERY_OPTIMIZATIONS"
            app:title="@string/set_remove_battery" />
    </PreferenceCategory>


Loading