Commit 71aaaadc authored by Thomas's avatar Thomas
Browse files

Set instance max chars

parent 10e66a3e
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -516,6 +516,9 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
            } else if (id == R.id.nav_cache) {
                Intent intent = new Intent(BaseMainActivity.this, CacheActivity.class);
                startActivity(intent);
            } else if (id == R.id.nav_about_instance) {
                Intent intent = new Intent(BaseMainActivity.this, InstanceActivity.class);
                startActivity(intent);
            }
            binding.drawerLayout.close();
            return false;
@@ -677,10 +680,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                    AlertDialog alert = alt_bld.create();
                    alert.show();
                    return true;
                } else if (itemId == R.id.action_about_instance) {
                    Intent intent = new Intent(BaseMainActivity.this, InstanceActivity.class);
                    startActivity(intent);
                    return true;
                } else if (itemId == R.id.action_proxy) {
                    Intent intent = new Intent(BaseMainActivity.this, ProxyActivity.class);
                    startActivity(intent);
+57 −30
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ package app.fedilab.android.activities;


import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
@@ -23,9 +24,9 @@ import android.text.Html;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import androidx.lifecycle.ViewModelProvider;
import androidx.preference.PreferenceManager;

import com.bumptech.glide.Glide;

@@ -35,13 +36,13 @@ import app.fedilab.android.client.entities.api.Instance;
import app.fedilab.android.databinding.ActivityInstanceBinding;
import app.fedilab.android.helper.ThemeHelper;
import app.fedilab.android.viewmodel.mastodon.InstancesVM;
import es.dmoral.toasty.Toasty;


public class InstanceActivity extends BaseActivity {


    ActivityInstanceBinding binding;
    private boolean applyMaxChar = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
@@ -54,8 +55,26 @@ public class InstanceActivity extends BaseActivity {
        getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        if (getSupportActionBar() != null)
            getSupportActionBar().hide();
        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(InstanceActivity.this);
        binding.close.setOnClickListener(

                view -> {
                    if (applyMaxChar) {
                        String max_char = binding.maxChar.getText().toString();

                        SharedPreferences.Editor editor = sharedpreferences.edit();
                        if (!max_char.isEmpty()) {
                            try {
                                editor.putInt(getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, Integer.parseInt(max_char));
                                editor.apply();
                            } catch (Exception ignored) {
                            }
                        }
                    }
                    finish();
                }

        binding.close.setOnClickListener(view -> finish());
        );

        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
@@ -66,10 +85,17 @@ public class InstanceActivity extends BaseActivity {
        instancesVM.getInstance(BaseMainActivity.currentInstance).observe(InstanceActivity.this, instanceInfo -> {
            binding.instanceContainer.setVisibility(View.VISIBLE);
            binding.loader.setVisibility(View.GONE);
            if (instanceInfo == null || instanceInfo.info == null) {
                Toasty.error(InstanceActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show();
                return;

            if (instanceInfo == null || instanceInfo.info == null || instanceInfo.info.description == null) {
                binding.maxCharContainer.setVisibility(View.VISIBLE);
                binding.instanceContainer.setVisibility(View.GONE);
                int val = sharedpreferences.getInt(getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, -1);
                if (val != -1) {
                    binding.maxChar.setText(String.valueOf(val));
                }
                applyMaxChar = true;

            } else {
                Instance instance = instanceInfo.info;
                binding.instanceTitle.setText(instance.title);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
@@ -93,6 +119,7 @@ public class InstanceActivity extends BaseActivity {
                    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "[Mastodon] - " + instance.uri);
                    startActivity(Intent.createChooser(emailIntent, getString(R.string.send_email)));
                });
            }
        });
    }

+18 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ package app.fedilab.android.helper;
 * see <http://www.gnu.org/licenses>. */


import static app.fedilab.android.BaseMainActivity.instanceInfo;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
@@ -51,6 +53,7 @@ import java.util.regex.Pattern;

import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R;
import app.fedilab.android.activities.MainActivity;
import app.fedilab.android.client.entities.api.Account;
import app.fedilab.android.client.entities.api.Pagination;
import app.fedilab.android.client.entities.api.RelationShip;
@@ -499,4 +502,19 @@ public class MastodonHelper {
        void onTimedMute(RelationShip relationShip);
    }

    public static int getInstanceMaxChars(Context context) {
        int max_car;
        if (instanceInfo != null) {
            max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters;
        } else {
            SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
            int val = sharedpreferences.getInt(context.getString(R.string.SET_MAX_INSTANCE_CHAR) + MainActivity.currentInstance, -1);
            if (val != -1) {
                return val;
            } else {
                max_car = 500;
            }
        }
        return max_car;
    }
}
+2 −7
Original line number Diff line number Diff line
@@ -712,12 +712,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
            public void afterTextChanged(Editable s) {
                int currentLength = MastodonHelper.countLength(holder);
                //Copy/past
                int max_car;
                if (instanceInfo != null) {
                    max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters;
                } else {
                    max_car = 500;
                }
                int max_car = MastodonHelper.getInstanceMaxChars(context);
                if (currentLength > max_car + 1) {
                    int from = max_car - holder.binding.contentSpoiler.getText().length();
                    int to = (currentLength - holder.binding.contentSpoiler.getText().length());
@@ -1246,7 +1241,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
            if (instanceInfo == null) {
                return;
            }
            int max_car = instanceInfo.max_toot_chars != null ? Integer.parseInt(instanceInfo.max_toot_chars) : instanceInfo.configuration.statusesConf.max_characters;
            int max_car = MastodonHelper.getInstanceMaxChars(context);
            holder.binding.characterProgress.setMax(max_car);
            holder.binding.contentSpoiler.addTextChangedListener(new TextWatcher() {
                private int cPosition;
+58 −15
Original line number Diff line number Diff line
@@ -16,10 +16,11 @@
-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="350dp">
    android:layout_height="wrap_content">

    <RelativeLayout
    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="@dimen/fab_margin"
@@ -28,25 +29,31 @@

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="300dp"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:alpha="0.2">

            <ImageView
                android:id="@+id/back_ground_image"
                android:layout_width="match_parent"
                android:layout_height="300dp"
                android:layout_height="match_parent"
                android:contentDescription="@string/logo_of_the_instance"
                android:scaleType="centerCrop" />
                android:scaleType="centerCrop"
                tools:src="@tools:sample/backgrounds/scenic" />
        </RelativeLayout>

        <LinearLayout
        <androidx.appcompat.widget.LinearLayoutCompat
            android:layout_height="wrap_content"
            android:id="@+id/instance_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_marginTop="20dp"
            android:orientation="vertical">
            <!-- Instance title -->
            <TextView
            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/instance_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
@@ -55,7 +62,7 @@
                android:textSize="20sp" />

            <!-- Instance description -->
            <TextView
            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/instance_description"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
@@ -64,7 +71,7 @@
                android:gravity="center_horizontal"
                android:textSize="16sp" />

            <LinearLayout
            <androidx.appcompat.widget.LinearLayoutCompat
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
@@ -72,7 +79,7 @@
                android:gravity="center"
                android:orientation="horizontal">
                <!-- Instance version -->
                <TextView
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/instance_version"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
@@ -80,7 +87,7 @@
                    android:textSize="14sp"
                    android:textStyle="italic" />
                <!-- Instance URI -->
                <TextView
                <androidx.appcompat.widget.AppCompatTextView
                    android:id="@+id/instance_uri"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
@@ -88,7 +95,7 @@
                    android:gravity="center_horizontal"
                    android:textSize="14sp"
                    android:textStyle="italic" />
            </LinearLayout>
            </androidx.appcompat.widget.LinearLayoutCompat>

            <com.google.android.material.floatingactionbutton.FloatingActionButton
                android:id="@+id/instance_contact"
@@ -99,13 +106,45 @@
                android:contentDescription="@string/contact_instance_admin"
                android:src="@drawable/ic_baseline_mail_outline_24"
                app:backgroundTint="@color/cyanea_accent_dark_reference" />
        </LinearLayout>


        </androidx.appcompat.widget.LinearLayoutCompat>

        <androidx.appcompat.widget.LinearLayoutCompat
            android:id="@+id/max_char_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:visibility="gone"
            app:layout_constraintTop_toBottomOf="@+id/instance_container"
            tools:visibility="visible">

            <androidx.appcompat.widget.AppCompatTextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/set_your_max_char_count"
                android:textSize="18sp" />

            <androidx.appcompat.widget.AppCompatEditText
                android:id="@+id/max_char"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="10dp"
                android:hint="500"
                android:inputType="number"
                android:textSize="18sp"
                tools:ignore="HardcodedText" />
        </androidx.appcompat.widget.LinearLayoutCompat>

        <!-- Main Loader -->
        <RelativeLayout
            android:id="@+id/loader"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            tools:visibility="visible"
            android:visibility="gone">

            <ProgressBar
@@ -115,6 +154,10 @@
        </RelativeLayout>

        <androidx.appcompat.widget.AppCompatButton
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/max_char_container"
            android:id="@+id/close"
            style="@style/Widget.AppCompat.Button.Colored"
            android:layout_width="wrap_content"
@@ -127,5 +170,5 @@
            android:textAllCaps="false"
            android:textColor="@color/white"
            android:textSize="16sp" />
    </RelativeLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
 No newline at end of file
Loading