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)
|
||||
.observe(BaseMainActivity.this, mastodonAccount -> {
|
||||
//Initialize static var
|
||||
if (mastodonAccount != null) {
|
||||
if (mastodonAccount != null && currentAccount != null) {
|
||||
currentAccount.mastodon_account = mastodonAccount;
|
||||
displayReleaseNotesIfNeeded(BaseMainActivity.this, false);
|
||||
new Thread(() -> {
|
||||
|
|
|
@ -870,10 +870,14 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana
|
|||
|
||||
|
||||
private boolean canBeSent(StatusDraft statusDraft) {
|
||||
if (statusDraft == null || statusDraft.statusDraftList == null || statusDraft.statusDraftList.isEmpty()) {
|
||||
if (statusDraft == null) {
|
||||
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) {
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -111,18 +111,23 @@ public class LoginActivity extends BaseActivity {
|
|||
//API call to retrieve account information for the new token
|
||||
AccountsVM accountsVM = new ViewModelProvider(LoginActivity.this).get(AccountsVM.class);
|
||||
accountsVM.getConnectedAccount(currentInstanceLogin, account.token).observe(LoginActivity.this, mastodonAccount -> {
|
||||
account.mastodon_account = mastodonAccount;
|
||||
account.user_id = mastodonAccount.id;
|
||||
//We check if user have really moderator rights
|
||||
if (requestedAdmin) {
|
||||
AdminVM adminVM = new ViewModelProvider(LoginActivity.this).get(AdminVM.class);
|
||||
adminVM.getAccount(account.instance, account.token, account.user_id).observe(LoginActivity.this, adminAccount -> {
|
||||
account.admin = adminAccount != null;
|
||||
if (mastodonAccount != null) {
|
||||
account.mastodon_account = mastodonAccount;
|
||||
account.user_id = mastodonAccount.id;
|
||||
//We check if user have really moderator rights
|
||||
if (requestedAdmin) {
|
||||
AdminVM adminVM = new ViewModelProvider(LoginActivity.this).get(AdminVM.class);
|
||||
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);
|
||||
});
|
||||
}
|
||||
} else {
|
||||
proceedLogin(LoginActivity.this, account);
|
||||
Toasty.error(LoginActivity.this, getString(R.string.toast_token), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
});
|
||||
} else {
|
||||
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) {
|
||||
accountsVM.follow(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, account.id, true, false)
|
||||
.observe(ProfileActivity.this, newRelationShip -> {
|
||||
relationship = newRelationShip;
|
||||
updateAccount();
|
||||
if (isChecked) {
|
||||
timelinesVM.addAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds).observe(ProfileActivity.this, success -> {
|
||||
if (success == null || !success) {
|
||||
Toasty.error(ProfileActivity.this, getString(R.string.toast_error_add_to_list), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
});
|
||||
if (newRelationShip != null) {
|
||||
relationship = newRelationShip;
|
||||
updateAccount();
|
||||
if (isChecked) {
|
||||
timelinesVM.addAccountsList(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, listsId[which], userIds).observe(ProfileActivity.this, success -> {
|
||||
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 {
|
||||
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 {
|
||||
|
|
|
@ -854,7 +854,9 @@ public class ComposeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
|
|||
//It only targets last message in a thread
|
||||
//Return content of last compose message
|
||||
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 ----->
|
||||
|
||||
|
|
|
@ -60,6 +60,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
|||
public FetchMoreCallBack fetchMoreCallBack;
|
||||
private Context context;
|
||||
private boolean isExpended = false;
|
||||
private RecyclerView mRecyclerView;
|
||||
|
||||
public ConversationAdapter(List<Conversation> conversations) {
|
||||
if (conversations == null) {
|
||||
|
@ -194,7 +195,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
|||
holder.binding.spoiler.setVisibility(View.VISIBLE);
|
||||
holder.binding.spoiler.setText(
|
||||
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);
|
||||
} else {
|
||||
holder.binding.spoiler.setVisibility(View.GONE);
|
||||
|
@ -204,7 +205,7 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
|||
//--- MAIN CONTENT ---
|
||||
holder.binding.statusContent.setText(
|
||||
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);
|
||||
//--- DATE ---
|
||||
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;
|
||||
});
|
||||
|
||||
|
||||
displayAttachments(holder, position);
|
||||
if (holder.timer != null) {
|
||||
holder.timer.cancel();
|
||||
|
@ -245,6 +247,13 @@ public class ConversationAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
|
|||
applyColorConversation(context, holder);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
|
||||
super.onAttachedToRecyclerView(recyclerView);
|
||||
|
||||
mRecyclerView = recyclerView;
|
||||
}
|
||||
|
||||
private void displayAttachments(ConversationAdapter.ConversationHolder holder, int position) {
|
||||
if (conversationList.get(position).last_status != null) {
|
||||
Status status = conversationList.get(position).last_status;
|
||||
|
|
|
@ -2288,8 +2288,8 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
|
|||
StatusViewHolder holder = (StatusViewHolder) viewHolder;
|
||||
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
if (sharedpreferences.getBoolean(context.getString(R.string.SET_CARDVIEW), false)) {
|
||||
holder.binding.cardviewContainer.setCardElevation(Helper.convertDpToPixel(5, context));
|
||||
holder.binding.dividerCard.setVisibility(View.GONE);
|
||||
holder.bindingFilteredHide.cardviewContainer.setCardElevation(Helper.convertDpToPixel(5, context));
|
||||
holder.bindingFilteredHide.dividerCard.setVisibility(View.GONE);
|
||||
}
|
||||
if (status.isFetchMore && fetchMoreCallBack != null) {
|
||||
holder.bindingFilteredHide.layoutFetchMore.fetchMoreContainer.setVisibility(View.VISIBLE);
|
||||
|
|
Loading…
Reference in a new issue