forked from mirrors/Fedilab
Fix some crashes
This commit is contained in:
parent
770eef7629
commit
167c3e6251
7 changed files with 50 additions and 26 deletions
|
@ -697,7 +697,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
|
||||||
new ViewModelProvider(BaseMainActivity.this).get(AccountsVM.class).getConnectedAccount(currentInstance, currentToken)
|
new ViewModelProvider(BaseMainActivity.this).get(AccountsVM.class).getConnectedAccount(currentInstance, currentToken)
|
||||||
.observe(BaseMainActivity.this, mastodonAccount -> {
|
.observe(BaseMainActivity.this, mastodonAccount -> {
|
||||||
//Initialize static var
|
//Initialize static var
|
||||||
if (mastodonAccount != null) {
|
if (mastodonAccount != null && currentAccount != null) {
|
||||||
currentAccount.mastodon_account = mastodonAccount;
|
currentAccount.mastodon_account = mastodonAccount;
|
||||||
displayReleaseNotesIfNeeded(BaseMainActivity.this, false);
|
displayReleaseNotesIfNeeded(BaseMainActivity.this, false);
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
|
|
|
@ -870,10 +870,14 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
|
||||||
|
|
||||||
|
|
||||||
private boolean canBeSent(StatusDraft statusDraft) {
|
private boolean canBeSent(StatusDraft statusDraft) {
|
||||||
if (statusDraft == null || statusDraft.statusDraftList == null || statusDraft.statusDraftList.isEmpty()) {
|
if (statusDraft == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
Status statusCheck = statusDraft.statusDraftList.get(0);
|
List<Status> statuses = statusDraft.statusDraftList;
|
||||||
|
if (statuses == null || statuses.size() == 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Status statusCheck = statuses.get(0);
|
||||||
if (statusCheck == null) {
|
if (statusCheck == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,18 +111,23 @@ public class LoginActivity extends BaseActivity {
|
||||||
//API call to retrieve account information for the new token
|
//API call to retrieve account information for the new token
|
||||||
AccountsVM accountsVM = new ViewModelProvider(LoginActivity.this).get(AccountsVM.class);
|
AccountsVM accountsVM = new ViewModelProvider(LoginActivity.this).get(AccountsVM.class);
|
||||||
accountsVM.getConnectedAccount(currentInstanceLogin, account.token).observe(LoginActivity.this, mastodonAccount -> {
|
accountsVM.getConnectedAccount(currentInstanceLogin, account.token).observe(LoginActivity.this, mastodonAccount -> {
|
||||||
account.mastodon_account = mastodonAccount;
|
if (mastodonAccount != null) {
|
||||||
account.user_id = mastodonAccount.id;
|
account.mastodon_account = mastodonAccount;
|
||||||
//We check if user have really moderator rights
|
account.user_id = mastodonAccount.id;
|
||||||
if (requestedAdmin) {
|
//We check if user have really moderator rights
|
||||||
AdminVM adminVM = new ViewModelProvider(LoginActivity.this).get(AdminVM.class);
|
if (requestedAdmin) {
|
||||||
adminVM.getAccount(account.instance, account.token, account.user_id).observe(LoginActivity.this, adminAccount -> {
|
AdminVM adminVM = new ViewModelProvider(LoginActivity.this).get(AdminVM.class);
|
||||||
account.admin = adminAccount != null;
|
adminVM.getAccount(account.instance, account.token, account.user_id).observe(LoginActivity.this, adminAccount -> {
|
||||||
|
account.admin = adminAccount != null;
|
||||||
|
proceedLogin(LoginActivity.this, account);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
proceedLogin(LoginActivity.this, account);
|
proceedLogin(LoginActivity.this, account);
|
||||||
});
|
}
|
||||||
} else {
|
} else {
|
||||||
proceedLogin(LoginActivity.this, account);
|
Toasty.error(LoginActivity.this, getString(R.string.toast_token), Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
Toasty.error(LoginActivity.this, getString(R.string.toast_token), Toast.LENGTH_LONG).show();
|
Toasty.error(LoginActivity.this, getString(R.string.toast_token), Toast.LENGTH_LONG).show();
|
||||||
|
|
|
@ -903,16 +903,20 @@ public class ProfileActivity extends BaseActivity {
|
||||||
if (relationship == null || !relationship.following) {
|
if (relationship == null || !relationship.following) {
|
||||||
accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
|
accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
|
||||||
.observe(ProfileActivity.this, newRelationShip -> {
|
.observe(ProfileActivity.this, newRelationShip -> {
|
||||||
relationship = newRelationShip;
|
if (newRelationShip != null) {
|
||||||
updateAccount();
|
relationship = newRelationShip;
|
||||||
if (isChecked) {
|
updateAccount();
|
||||||
timelinesVM.addAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds).observe(ProfileActivity.this, success -> {
|
if (isChecked) {
|
||||||
if (success == null || !success) {
|
timelinesVM.addAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds).observe(ProfileActivity.this, success -> {
|
||||||
Toasty.error(ProfileActivity.this, getString(R.string.toast_error_add_to_list), Toast.LENGTH_LONG).show();
|
if (success == null || !success) {
|
||||||
}
|
Toasty.error(ProfileActivity.this, getString(R.string.toast_error_add_to_list), Toast.LENGTH_LONG).show();
|
||||||
});
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
timelinesVM.deleteAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
timelinesVM.deleteAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds);
|
Toasty.error(ProfileActivity.this, getString(R.string.toast_error_add_to_list), Toast.LENGTH_LONG).show();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -854,7 +854,9 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
||||||
//It only targets last message in a thread
|
//It only targets last message in a thread
|
||||||
//Return content of last compose message
|
//Return content of last compose message
|
||||||
public String getLastComposeContent() {
|
public String getLastComposeContent() {
|
||||||
return statusList.get(currentCursorPosition).text != null ? statusList.get(currentCursorPosition).text : "";
|
if (currentCursorPosition < statusList.size()) {
|
||||||
|
return statusList.get(currentCursorPosition).text != null ? statusList.get(currentCursorPosition).text : "";
|
||||||
|
} else return "";
|
||||||
}
|
}
|
||||||
//------- end contact ----->
|
//------- end contact ----->
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
public FetchMoreCallBack fetchMoreCallBack;
|
public FetchMoreCallBack fetchMoreCallBack;
|
||||||
private Context context;
|
private Context context;
|
||||||
private boolean isExpended = false;
|
private boolean isExpended = false;
|
||||||
|
private RecyclerView mRecyclerView;
|
||||||
|
|
||||||
public ConversationAdapter(List<Conversation> conversations) {
|
public ConversationAdapter(List<Conversation> conversations) {
|
||||||
if (conversations == null) {
|
if (conversations == null) {
|
||||||
|
@ -194,7 +195,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
holder.binding.spoiler.setVisibility(View.VISIBLE);
|
holder.binding.spoiler.setVisibility(View.VISIBLE);
|
||||||
holder.binding.spoiler.setText(
|
holder.binding.spoiler.setText(
|
||||||
conversation.last_status.getSpanSpoiler(context,
|
conversation.last_status.getSpanSpoiler(context,
|
||||||
new WeakReference<>(holder.binding.spoiler), () -> notifyItemChanged(holder.getBindingAdapterPosition())),
|
new WeakReference<>(holder.binding.spoiler), () -> mRecyclerView.post(() -> notifyItemChanged(holder.getBindingAdapterPosition()))),
|
||||||
TextView.BufferType.SPANNABLE);
|
TextView.BufferType.SPANNABLE);
|
||||||
} else {
|
} else {
|
||||||
holder.binding.spoiler.setVisibility(View.GONE);
|
holder.binding.spoiler.setVisibility(View.GONE);
|
||||||
|
@ -204,7 +205,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
//--- MAIN CONTENT ---
|
//--- MAIN CONTENT ---
|
||||||
holder.binding.statusContent.setText(
|
holder.binding.statusContent.setText(
|
||||||
conversation.last_status.getSpanContent(context,
|
conversation.last_status.getSpanContent(context,
|
||||||
new WeakReference<>(holder.binding.statusContent), () -> notifyItemChanged(holder.getBindingAdapterPosition())),
|
new WeakReference<>(holder.binding.statusContent), () -> mRecyclerView.post(() -> notifyItemChanged(holder.getBindingAdapterPosition()))),
|
||||||
TextView.BufferType.SPANNABLE);
|
TextView.BufferType.SPANNABLE);
|
||||||
//--- DATE ---
|
//--- DATE ---
|
||||||
holder.binding.lastMessageDate.setText(Helper.dateDiff(context, conversation.last_status.created_at));
|
holder.binding.lastMessageDate.setText(Helper.dateDiff(context, conversation.last_status.created_at));
|
||||||
|
@ -224,6 +225,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
displayAttachments(holder, position);
|
displayAttachments(holder, position);
|
||||||
if (holder.timer != null) {
|
if (holder.timer != null) {
|
||||||
holder.timer.cancel();
|
holder.timer.cancel();
|
||||||
|
@ -245,6 +247,13 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
||||||
applyColorConversation(context, holder);
|
applyColorConversation(context, holder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
|
||||||
|
super.onAttachedToRecyclerView(recyclerView);
|
||||||
|
|
||||||
|
mRecyclerView = recyclerView;
|
||||||
|
}
|
||||||
|
|
||||||
private void displayAttachments(ConversationAdapter.ConversationHolder holder, int position) {
|
private void displayAttachments(ConversationAdapter.ConversationHolder holder, int position) {
|
||||||
if (conversationList.get(position).last_status != null) {
|
if (conversationList.get(position).last_status != null) {
|
||||||
Status status = conversationList.get(position).last_status;
|
Status status = conversationList.get(position).last_status;
|
||||||
|
|
|
@ -2288,8 +2288,8 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
||||||
StatusViewHolder holder = (StatusViewHolder) viewHolder;
|
StatusViewHolder holder = (StatusViewHolder) viewHolder;
|
||||||
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||||
if (sharedpreferences.getBoolean(context.getString(R.string.SET_CARDVIEW), false)) {
|
if (sharedpreferences.getBoolean(context.getString(R.string.SET_CARDVIEW), false)) {
|
||||||
holder.binding.cardviewContainer.setCardElevation(Helper.convertDpToPixel(5, context));
|
holder.bindingFilteredHide.cardviewContainer.setCardElevation(Helper.convertDpToPixel(5, context));
|
||||||
holder.binding.dividerCard.setVisibility(View.GONE);
|
holder.bindingFilteredHide.dividerCard.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
if (status.isFetchMore && fetchMoreCallBack != null) {
|
if (status.isFetchMore && fetchMoreCallBack != null) {
|
||||||
holder.bindingFilteredHide.layoutFetchMore.fetchMoreContainer.setVisibility(View.VISIBLE);
|
holder.bindingFilteredHide.layoutFetchMore.fetchMoreContainer.setVisibility(View.VISIBLE);
|
||||||
|
|
Loading…
Reference in a new issue