Save reply info in draft, refactor (#449)

* Save reply info in draft, refactor

* Handle replying to deleted status
This commit is contained in:
Ivan Kupalov 2017-11-16 21:18:11 +03:00 committed by Konrad Pozniak
commit 2575b16dad
15 changed files with 575 additions and 390 deletions

View file

@ -34,11 +34,12 @@ import android.widget.RadioButton;
import android.widget.RadioGroup;
import com.keylesspalace.tusky.R;
import com.keylesspalace.tusky.entity.Status;
import com.keylesspalace.tusky.util.ThemeUtils;
public class ComposeOptionsFragment extends BottomSheetDialogFragment {
public interface Listener {
void onVisibilityChanged(String visibility);
void onVisibilityChanged(Status.Visibility visibility);
void onContentWarningChanged(boolean hideText);
}
@ -46,10 +47,10 @@ public class ComposeOptionsFragment extends BottomSheetDialogFragment {
private CheckBox hideText;
private Listener listener;
public static ComposeOptionsFragment newInstance(String visibility, boolean hideText) {
public static ComposeOptionsFragment newInstance(Status.Visibility visibility, boolean hideText) {
Bundle arguments = new Bundle();
ComposeOptionsFragment fragment = new ComposeOptionsFragment();
arguments.putString("visibility", visibility);
arguments.putInt("visibilityNum", visibility.getNum());
arguments.putBoolean("hideText", hideText);
fragment.setArguments(arguments);
return fragment;
@ -68,18 +69,18 @@ public class ComposeOptionsFragment extends BottomSheetDialogFragment {
View rootView = inflater.inflate(R.layout.fragment_compose_options, container, false);
Bundle arguments = getArguments();
String statusVisibility = arguments.getString("visibility");
Status.Visibility visibility = Status.Visibility.byNum(
arguments.getInt("visibilityNum", 0)
);
boolean statusHideText = arguments.getBoolean("hideText");
radio = rootView.findViewById(R.id.radio_visibility);
int radioCheckedId = R.id.radio_public;
if (statusVisibility != null) {
switch (statusVisibility) {
case "public": radioCheckedId = R.id.radio_public; break;
case "private": radioCheckedId = R.id.radio_private; break;
case "unlisted": radioCheckedId = R.id.radio_unlisted; break;
case "direct": radioCheckedId = R.id.radio_direct; break;
}
switch (visibility) {
case PUBLIC: radioCheckedId = R.id.radio_public; break;
case PRIVATE: radioCheckedId = R.id.radio_private; break;
case UNLISTED: radioCheckedId = R.id.radio_unlisted; break;
case DIRECT: radioCheckedId = R.id.radio_direct; break;
}
radio.check(radioCheckedId);
@ -104,23 +105,23 @@ public class ComposeOptionsFragment extends BottomSheetDialogFragment {
radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
String visibility;
Status.Visibility visibility;
switch (checkedId) {
default:
case R.id.radio_public: {
visibility = "public";
visibility = Status.Visibility.PUBLIC;
break;
}
case R.id.radio_unlisted: {
visibility = "unlisted";
visibility = Status.Visibility.UNLISTED;
break;
}
case R.id.radio_private: {
visibility = "private";
visibility = Status.Visibility.PRIVATE;
break;
}
case R.id.radio_direct: {
visibility = "direct";
visibility = Status.Visibility.DIRECT;
break;
}
}

View file

@ -93,7 +93,7 @@ public abstract class SFragment extends BaseFragment implements AdapterItemRemov
protected void reply(Status status) {
String inReplyToId = status.getActionableId();
Status actionableStatus = status.getActionableStatus();
String replyVisibility = actionableStatus.getVisibility().toString().toLowerCase();
Status.Visibility replyVisibility = actionableStatus.getVisibility();
String contentWarning = actionableStatus.spoilerText;
Status.Mention[] mentions = actionableStatus.mentions;
List<String> mentionedUsernames = new ArrayList<>();
@ -107,7 +107,7 @@ public abstract class SFragment extends BaseFragment implements AdapterItemRemov
.replyVisibility(replyVisibility)
.contentWarning(contentWarning)
.mentionedUsernames(mentionedUsernames)
.repyingStatusAuthor(actionableStatus.account)
.repyingStatusAuthor(actionableStatus.account.localUsername)
.replyingStatusContent(actionableStatus.content.toString())
.build(getContext());
startActivityForResult(intent, COMPOSE_RESULT);

View file

@ -320,9 +320,9 @@ public class ViewThreadFragment extends SFragment implements
call.enqueue(new Callback<StatusContext>() {
@Override
public void onResponse(@NonNull Call<StatusContext> call, @NonNull Response<StatusContext> response) {
if (response.isSuccessful()) {
StatusContext context = response.body();
if (response.isSuccessful() && context != null) {
swipeRefreshLayout.setRefreshing(false);
StatusContext context = response.body();
setContext(context.ancestors, context.descendants);
} else {
onThreadRequestFailure(id);