Commit 7ce644e9 authored by Thomas's avatar Thomas
Browse files

Add back custom tabs

parent a6c17512
Loading
Loading
Loading
Loading
+25 −10
Original line number Diff line number Diff line
@@ -76,6 +76,8 @@ import androidx.annotation.IdRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.browser.customtabs.CustomTabColorSchemeParams;
import androidx.browser.customtabs.CustomTabsIntent;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
@@ -646,6 +648,18 @@ public class Helper {
        if (url == null) {
            return;
        }
        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
        boolean customTab = sharedpreferences.getBoolean(context.getString(R.string.SET_CUSTOM_TABS), true);
        if (customTab) {
            CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
            int colorInt = ThemeHelper.getAttColor(context, R.attr.statusBar);
            CustomTabColorSchemeParams defaultColors = new CustomTabColorSchemeParams.Builder()
                    .setToolbarColor(colorInt)
                    .build();
            builder.setDefaultColorSchemeParams(defaultColors);
            CustomTabsIntent customTabsIntent = builder.build();
            customTabsIntent.launchUrl(context, Uri.parse(url));
        } else {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            if (!url.toLowerCase().startsWith("http://") && !url.toLowerCase().startsWith("https://") && !url.toLowerCase().startsWith("gemini://")) {
@@ -658,6 +672,7 @@ public class Helper {
                Toasty.error(context, context.getString(R.string.toast_error), Toast.LENGTH_LONG).show();
            }
        }
    }

    /**
     * Transform URLs to privacy frontend
+36 −7
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import static app.fedilab.android.activities.LoginActivity.softwareLogin;

import android.Manifest;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
@@ -43,9 +44,12 @@ import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.widget.PopupMenu;
import androidx.browser.customtabs.CustomTabColorSchemeParams;
import androidx.browser.customtabs.CustomTabsIntent;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;

import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
@@ -60,6 +64,7 @@ import app.fedilab.android.mastodon.client.entities.app.Account;
import app.fedilab.android.mastodon.client.entities.app.InstanceSocial;
import app.fedilab.android.mastodon.helper.Helper;
import app.fedilab.android.mastodon.helper.MastodonHelper;
import app.fedilab.android.mastodon.helper.ThemeHelper;
import app.fedilab.android.mastodon.helper.ZipHelper;
import app.fedilab.android.mastodon.viewmodel.mastodon.AppsVM;
import app.fedilab.android.mastodon.viewmodel.mastodon.InstanceSocialVM;
@@ -214,6 +219,10 @@ public class FragmentLoginMain extends Fragment {
        menuInflater.inflate(R.menu.main_login, popupMenu.getMenu());
        MenuItem adminTabItem = popupMenu.getMenu().findItem(R.id.action_request_admin);
        adminTabItem.setChecked(requestedAdmin);
        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity());
        boolean customTab = sharedpreferences.getBoolean(getString(R.string.SET_CUSTOM_TABS), true);
        popupMenu.getMenu().findItem(R.id.action_custom_tabs).setChecked(customTab);

        popupMenu.setOnMenuItemClickListener(item -> {
            int itemId = item.getItemId();
            if (itemId == R.id.action_proxy) {
@@ -242,6 +251,13 @@ public class FragmentLoginMain extends Fragment {
                } else {
                    proceed();
                }
            } else if (itemId == R.id.action_custom_tabs) {
                boolean newValue = !item.isChecked();
                item.setChecked(newValue);
                SharedPreferences.Editor editor = sharedpreferences.edit();
                editor.putBoolean(getString(R.string.SET_CUSTOM_TABS), newValue);
                editor.apply();
                return false;
            }
            return false;
        });
@@ -291,6 +307,18 @@ public class FragmentLoginMain extends Fragment {
                client_idLogin = app.client_id;
                client_secretLogin = app.client_secret;
                String redirectUrl = MastodonHelper.authorizeURL(currentInstanceLogin, client_idLogin, requestedAdmin);
                SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity());
                boolean customTab = sharedpreferences.getBoolean(getString(R.string.SET_CUSTOM_TABS), true);
                if (customTab) {
                    CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
                    int colorInt = ThemeHelper.getAttColor(requireActivity(), R.attr.statusBar);
                    CustomTabColorSchemeParams defaultColors = new CustomTabColorSchemeParams.Builder()
                            .setToolbarColor(colorInt)
                            .build();
                    builder.setDefaultColorSchemeParams(defaultColors);
                    CustomTabsIntent customTabsIntent = builder.build();
                    customTabsIntent.launchUrl(requireActivity(), Uri.parse(redirectUrl));
                } else {
                    Intent intent = new Intent(Intent.ACTION_VIEW);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    intent.setData(Uri.parse(redirectUrl));
@@ -299,6 +327,7 @@ public class FragmentLoginMain extends Fragment {
                    } catch (Exception e) {
                        Toasty.error(requireActivity(), getString(R.string.toast_error), Toast.LENGTH_LONG).show();
                    }
                }
            } else {
                Toasty.error(requireActivity(), getString(R.string.client_error), Toasty.LENGTH_SHORT).show();
            }
+6 −17
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <!--
     <item
         android:id="@+id/action_about"
         android:title="@string/action_about"
         app:showAsAction="never" />

     <item
         android:id="@+id/action_privacy"
         android:title="@string/action_privacy"
         app:showAsAction="never" />
          -->
    <item
        android:id="@+id/action_proxy"
        android:title="@string/proxy_set"
@@ -27,11 +17,10 @@
        android:title="@string/import_data"
        app:showAsAction="never" />

    <!--
    <item
     android:id="@+id/action_provider"
        android:id="@+id/action_custom_tabs"
        android:checkable="true"
     android:title="@string/set_security_provider"
        android:title="@string/custom_tabs"
        app:actionViewClass="android.widget.CheckBox" />
     -->

</menu>
+1 −0
Original line number Diff line number Diff line
@@ -1509,6 +1509,7 @@
    <string name="SET_NITTER_HOST" translatable="false">SET_NITTER_HOST</string>
    <string name="DEFAULT_NITTER_HOST" translatable="false">nitter.net</string>
    <string name="SET_USE_CACHE" translatable="false">SET_USE_CACHE</string>
    <string name="SET_CUSTOM_TABS" translatable="false">SET_CUSTOM_TABS</string>
    <string name="SET_BIBLIOGRAM" translatable="false">SET_BIBLIOGRAM</string>
    <string name="SET_BIBLIOGRAM_HOST" translatable="false">SET_BIBLIOGRAM_HOST</string>
    <string name="DEFAULT_BIBLIOGRAM_HOST" translatable="false">bibliogram.art</string>
+7 −0
Original line number Diff line number Diff line
@@ -69,6 +69,13 @@
        app:summary="@string/set_use_cache_indication"
        app:title="@string/set_use_cache" />

    <SwitchPreferenceCompat
        app:defaultValue="true"
        app:iconSpaceReserved="false"
        app:key="@string/SET_CUSTOM_TABS"
        app:singleLineTitle="false"
        app:title="@string/custom_tabs" />

    <SwitchPreferenceCompat
        app:defaultValue="false"
        app:iconSpaceReserved="false"
Loading