Some fixes

This commit is contained in:
Thomas 2022-06-16 18:37:14 +02:00
parent 890b9b64a6
commit df320324e2
5 changed files with 31 additions and 27 deletions

View File

@ -74,6 +74,7 @@ import com.jaredrummler.cyanea.Cyanea;
import java.io.File; import java.io.File;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -131,7 +132,7 @@ import es.dmoral.toasty.Toasty;
public abstract class BaseMainActivity extends BaseActivity implements NetworkStateReceiver.NetworkStateReceiverListener { public abstract class BaseMainActivity extends BaseActivity implements NetworkStateReceiver.NetworkStateReceiverListener {
public static String currentInstance, currentToken, currentUserID, client_id, client_secret, software; public static String currentInstance, currentToken, currentUserID, client_id, client_secret, software;
public static List<Emoji> emojis; public static HashMap<String, List<Emoji>> emojis = new HashMap<>();
public static Account.API api; public static Account.API api;
public static boolean admin; public static boolean admin;
public static WeakReference<Account> accountWeakReference; public static WeakReference<Account> accountWeakReference;
@ -731,10 +732,10 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
binding.toolbarSearch.setOnSearchClickListener(v -> binding.tabLayout.setVisibility(View.VISIBLE)); binding.toolbarSearch.setOnSearchClickListener(v -> binding.tabLayout.setVisibility(View.VISIBLE));
//For receiving data from other activities //For receiving data from other activities
LocalBroadcastManager.getInstance(BaseMainActivity.this).registerReceiver(broadcast_data, new IntentFilter(Helper.BROADCAST_DATA)); LocalBroadcastManager.getInstance(BaseMainActivity.this).registerReceiver(broadcast_data, new IntentFilter(Helper.BROADCAST_DATA));
if (emojis == null) { if (emojis == null || !emojis.containsKey(MainActivity.currentInstance)) {
new Thread(() -> { new Thread(() -> {
try { try {
emojis = new EmojiInstance(BaseMainActivity.this).getEmojiList(BaseMainActivity.currentInstance); emojis.put(currentInstance, new EmojiInstance(BaseMainActivity.this).getEmojiList(BaseMainActivity.currentInstance));
} catch (DBException e) { } catch (DBException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -15,6 +15,7 @@ package app.fedilab.android.activities;
* see <http://www.gnu.org/licenses>. */ * see <http://www.gnu.org/licenses>. */
import static app.fedilab.android.BaseMainActivity.currentInstance;
import static app.fedilab.android.BaseMainActivity.emojis; import static app.fedilab.android.BaseMainActivity.emojis;
import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.ColorDrawable;
@ -24,7 +25,6 @@ import android.view.MenuItem;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R; import app.fedilab.android.R;
import app.fedilab.android.client.entities.api.EmojiInstance; import app.fedilab.android.client.entities.api.EmojiInstance;
import app.fedilab.android.databinding.ActivityAnnouncementBinding; import app.fedilab.android.databinding.ActivityAnnouncementBinding;
@ -59,10 +59,10 @@ public class AnnouncementActivity extends BaseActivity {
} }
Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_tags, new FragmentMastodonAnnouncement(), null, null, null); Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_tags, new FragmentMastodonAnnouncement(), null, null, null);
if (emojis == null) { if (emojis == null || !emojis.containsKey(currentInstance)) {
new Thread(() -> { new Thread(() -> {
try { try {
emojis = new EmojiInstance(AnnouncementActivity.this).getEmojiList(BaseMainActivity.currentInstance); emojis.put(currentInstance, new EmojiInstance(AnnouncementActivity.this).getEmojiList(currentInstance));
} catch (DBException e) { } catch (DBException e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@ -15,6 +15,8 @@ package app.fedilab.android.activities;
* see <http://www.gnu.org/licenses>. */ * see <http://www.gnu.org/licenses>. */
import static app.fedilab.android.BaseMainActivity.currentInstance;
import static app.fedilab.android.BaseMainActivity.emojis;
import static app.fedilab.android.ui.drawer.ComposeAdapter.prepareDraft; import static app.fedilab.android.ui.drawer.ComposeAdapter.prepareDraft;
import android.Manifest; import android.Manifest;
@ -63,6 +65,7 @@ import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R; import app.fedilab.android.R;
import app.fedilab.android.client.entities.api.Attachment; import app.fedilab.android.client.entities.api.Attachment;
import app.fedilab.android.client.entities.api.Context; import app.fedilab.android.client.entities.api.Context;
import app.fedilab.android.client.entities.api.EmojiInstance;
import app.fedilab.android.client.entities.api.Mention; import app.fedilab.android.client.entities.api.Mention;
import app.fedilab.android.client.entities.api.ScheduledStatus; import app.fedilab.android.client.entities.api.ScheduledStatus;
import app.fedilab.android.client.entities.api.Status; import app.fedilab.android.client.entities.api.Status;
@ -199,7 +202,15 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
if (token == null) { if (token == null) {
token = account.token; token = account.token;
} }
if (emojis == null || !emojis.containsKey(currentInstance)) {
new Thread(() -> {
try {
emojis.put(currentInstance, new EmojiInstance(ComposeActivity.this).getEmojiList(currentInstance));
} catch (DBException e) {
e.printStackTrace();
}
}).start();
}
StatusesVM statusesVM = new ViewModelProvider(ComposeActivity.this).get(StatusesVM.class); StatusesVM statusesVM = new ViewModelProvider(ComposeActivity.this).get(StatusesVM.class);
//Empty compose //Empty compose
List<Status> statusDraftList = new ArrayList<>(); List<Status> statusDraftList = new ArrayList<>();
@ -207,10 +218,10 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
statusDraftList.add(status); statusDraftList.add(status);
if (statusReplyId != null && statusDraft != null) {//Delete and redraft if (statusReplyId != null && statusDraft != null) {//Delete and redraft
statusesVM.getStatus(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, statusReplyId) statusesVM.getStatus(currentInstance, BaseMainActivity.currentToken, statusReplyId)
.observe(ComposeActivity.this, status1 -> { .observe(ComposeActivity.this, status1 -> {
if (status1 != null) { if (status1 != null) {
statusesVM.getContext(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, statusReplyId) statusesVM.getContext(currentInstance, BaseMainActivity.currentToken, statusReplyId)
.observe(ComposeActivity.this, statusContext -> { .observe(ComposeActivity.this, statusContext -> {
if (statusContext != null) { if (statusContext != null) {
initializeContextRedraftView(statusContext, status1); initializeContextRedraftView(statusContext, status1);
@ -297,7 +308,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
LinearLayoutManager mLayoutManager = new LinearLayoutManager(ComposeActivity.this); LinearLayoutManager mLayoutManager = new LinearLayoutManager(ComposeActivity.this);
binding.recyclerView.setLayoutManager(mLayoutManager); binding.recyclerView.setLayoutManager(mLayoutManager);
binding.recyclerView.setAdapter(composeAdapter); binding.recyclerView.setAdapter(composeAdapter);
statusesVM.getContext(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, statusReply.id) statusesVM.getContext(currentInstance, BaseMainActivity.currentToken, statusReply.id)
.observe(ComposeActivity.this, this::initializeContextView); .observe(ComposeActivity.this, this::initializeContextView);
}; };
mainHandler.post(myRunnable); mainHandler.post(myRunnable);
@ -639,7 +650,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
delayToPass = (date.getTime() - new Date().getTime()); delayToPass = (date.getTime() - new Date().getTime());
} }
Data inputData = new Data.Builder() Data inputData = new Data.Builder()
.putString(Helper.ARG_INSTANCE, BaseMainActivity.currentInstance) .putString(Helper.ARG_INSTANCE, currentInstance)
.putString(Helper.ARG_TOKEN, BaseMainActivity.currentToken) .putString(Helper.ARG_TOKEN, BaseMainActivity.currentToken)
.putString(Helper.ARG_USER_ID, BaseMainActivity.currentUserID) .putString(Helper.ARG_USER_ID, BaseMainActivity.currentUserID)
.putLong(Helper.ARG_STATUS_DRAFT_ID, statusDraft.id) .putLong(Helper.ARG_STATUS_DRAFT_ID, statusDraft.id)

View File

@ -150,12 +150,12 @@ public class AnnouncementAdapter extends RecyclerView.Adapter<AnnouncementAdapte
builder.setTitle(R.string.insert_emoji); builder.setTitle(R.string.insert_emoji);
if (emojis != null && emojis.size() > 0) { if (emojis != null && emojis.size() > 0) {
GridView gridView = new GridView(context); GridView gridView = new GridView(context);
gridView.setAdapter(new EmojiAdapter(emojis)); gridView.setAdapter(new EmojiAdapter(emojis.get(MainActivity.currentInstance)));
gridView.setNumColumns(5); gridView.setNumColumns(5);
gridView.setOnItemClickListener((parent, view, index, id) -> { gridView.setOnItemClickListener((parent, view, index, id) -> {
String emojiStr = emojis.get(index).shortcode; String emojiStr = emojis.get(MainActivity.currentInstance).get(index).shortcode;
String url = emojis.get(index).url; String url = emojis.get(MainActivity.currentInstance).get(index).url;
String static_url = emojis.get(index).static_url; String static_url = emojis.get(MainActivity.currentInstance).get(index).static_url;
boolean alreadyAdded = false; boolean alreadyAdded = false;
for (Reaction reaction : announcement.reactions) { for (Reaction reaction : announcement.reactions) {
if (reaction.name.compareTo(emojiStr) == 0) { if (reaction.name.compareTo(emojiStr) == 0) {

View File

@ -83,6 +83,7 @@ import java.util.regex.Pattern;
import app.fedilab.android.BaseMainActivity; import app.fedilab.android.BaseMainActivity;
import app.fedilab.android.R; import app.fedilab.android.R;
import app.fedilab.android.activities.ComposeActivity; import app.fedilab.android.activities.ComposeActivity;
import app.fedilab.android.activities.MainActivity;
import app.fedilab.android.client.entities.api.Attachment; import app.fedilab.android.client.entities.api.Attachment;
import app.fedilab.android.client.entities.api.Emoji; import app.fedilab.android.client.entities.api.Emoji;
import app.fedilab.android.client.entities.api.EmojiInstance; import app.fedilab.android.client.entities.api.EmojiInstance;
@ -1005,16 +1006,7 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
} }
} else if (getItemViewType(position) == TYPE_COMPOSE) { } else if (getItemViewType(position) == TYPE_COMPOSE) {
Status statusDraft = statusList.get(position); Status statusDraft = statusList.get(position);
//Fill emoji and instance info
if (emojis == null) {
new Thread(() -> {
try {
emojis = new EmojiInstance(context).getEmojiList(BaseMainActivity.currentInstance);
} catch (DBException e) {
e.printStackTrace();
}
}).start();
}
ComposeViewHolder holder = (ComposeViewHolder) viewHolder; ComposeViewHolder holder = (ComposeViewHolder) viewHolder;
@ -1235,10 +1227,10 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
builder.setTitle(R.string.insert_emoji); builder.setTitle(R.string.insert_emoji);
if (emojis != null && emojis.size() > 0) { if (emojis != null && emojis.size() > 0) {
GridView gridView = new GridView(context); GridView gridView = new GridView(context);
gridView.setAdapter(new EmojiAdapter(emojis)); gridView.setAdapter(new EmojiAdapter(emojis.get(MainActivity.currentInstance)));
gridView.setNumColumns(5); gridView.setNumColumns(5);
gridView.setOnItemClickListener((parent, view, position, id) -> { gridView.setOnItemClickListener((parent, view, position, id) -> {
holder.binding.content.getText().insert(holder.binding.content.getSelectionStart(), " :" + emojis.get(position).shortcode + ": "); holder.binding.content.getText().insert(holder.binding.content.getSelectionStart(), " :" + emojis.get(MainActivity.currentInstance).get(position).shortcode + ": ");
alertDialogEmoji.dismiss(); alertDialogEmoji.dismiss();
}); });
gridView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp); gridView.setPadding(paddingDp, paddingDp, paddingDp, paddingDp);