|
|
@ -18,11 +18,13 @@ package app.fedilab.android.activities;
|
|
|
|
import static app.fedilab.android.BaseMainActivity.currentAccount;
|
|
|
|
import static app.fedilab.android.BaseMainActivity.currentAccount;
|
|
|
|
import static app.fedilab.android.ui.drawer.StatusAdapter.sendAction;
|
|
|
|
import static app.fedilab.android.ui.drawer.StatusAdapter.sendAction;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.content.SharedPreferences;
|
|
|
|
import android.content.res.Resources;
|
|
|
|
import android.content.res.Resources;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Bundle;
|
|
|
|
import android.os.Handler;
|
|
|
|
import android.os.Handler;
|
|
|
|
import android.os.Looper;
|
|
|
|
import android.os.Looper;
|
|
|
|
|
|
|
|
import android.util.Log;
|
|
|
|
import android.util.TypedValue;
|
|
|
|
import android.util.TypedValue;
|
|
|
|
import android.view.Menu;
|
|
|
|
import android.view.Menu;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
import android.view.MenuItem;
|
|
|
@ -35,27 +37,32 @@ import androidx.preference.PreferenceManager;
|
|
|
|
|
|
|
|
|
|
|
|
import app.fedilab.android.BaseMainActivity;
|
|
|
|
import app.fedilab.android.BaseMainActivity;
|
|
|
|
import app.fedilab.android.R;
|
|
|
|
import app.fedilab.android.R;
|
|
|
|
|
|
|
|
import app.fedilab.android.client.entities.api.Account;
|
|
|
|
import app.fedilab.android.client.entities.api.Status;
|
|
|
|
import app.fedilab.android.client.entities.api.Status;
|
|
|
|
import app.fedilab.android.client.entities.app.StatusCache;
|
|
|
|
import app.fedilab.android.client.entities.app.StatusCache;
|
|
|
|
import app.fedilab.android.databinding.ActivityConversationBinding;
|
|
|
|
import app.fedilab.android.databinding.ActivityConversationBinding;
|
|
|
|
import app.fedilab.android.exception.DBException;
|
|
|
|
import app.fedilab.android.exception.DBException;
|
|
|
|
|
|
|
|
import app.fedilab.android.helper.CrossActionHelper;
|
|
|
|
import app.fedilab.android.helper.Helper;
|
|
|
|
import app.fedilab.android.helper.Helper;
|
|
|
|
import app.fedilab.android.helper.MastodonHelper;
|
|
|
|
import app.fedilab.android.helper.MastodonHelper;
|
|
|
|
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonContext;
|
|
|
|
import app.fedilab.android.ui.fragment.timeline.FragmentMastodonContext;
|
|
|
|
import app.fedilab.android.viewmodel.mastodon.StatusesVM;
|
|
|
|
import app.fedilab.android.viewmodel.mastodon.StatusesVM;
|
|
|
|
|
|
|
|
import es.dmoral.toasty.Toasty;
|
|
|
|
|
|
|
|
|
|
|
|
public class ContextActivity extends BaseActivity {
|
|
|
|
public class ContextActivity extends BaseActivity implements FragmentMastodonContext.FirstMessage {
|
|
|
|
|
|
|
|
|
|
|
|
public static boolean expand;
|
|
|
|
public static boolean expand;
|
|
|
|
public static boolean displayCW;
|
|
|
|
public static boolean displayCW;
|
|
|
|
public static Resources.Theme theme;
|
|
|
|
public static Resources.Theme theme;
|
|
|
|
Fragment currentFragment;
|
|
|
|
Fragment currentFragment;
|
|
|
|
|
|
|
|
private Status firstMessage;
|
|
|
|
|
|
|
|
private String remote_instance;
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
super.onCreate(savedInstanceState);
|
|
|
|
|
|
|
|
|
|
|
|
app.fedilab.android.databinding.ActivityConversationBinding binding = ActivityConversationBinding.inflate(getLayoutInflater());
|
|
|
|
ActivityConversationBinding binding = ActivityConversationBinding.inflate(getLayoutInflater());
|
|
|
|
setContentView(binding.getRoot());
|
|
|
|
setContentView(binding.getRoot());
|
|
|
|
setSupportActionBar(binding.toolbar);
|
|
|
|
setSupportActionBar(binding.toolbar);
|
|
|
|
ActionBar actionBar = getSupportActionBar();
|
|
|
|
ActionBar actionBar = getSupportActionBar();
|
|
|
@ -75,8 +82,10 @@ public class ContextActivity extends BaseActivity {
|
|
|
|
Bundle b = getIntent().getExtras();
|
|
|
|
Bundle b = getIntent().getExtras();
|
|
|
|
displayCW = sharedpreferences.getBoolean(getString(R.string.SET_EXPAND_CW), false);
|
|
|
|
displayCW = sharedpreferences.getBoolean(getString(R.string.SET_EXPAND_CW), false);
|
|
|
|
Status focusedStatus = null; // or other values
|
|
|
|
Status focusedStatus = null; // or other values
|
|
|
|
if (b != null)
|
|
|
|
if (b != null) {
|
|
|
|
focusedStatus = (Status) b.getSerializable(Helper.ARG_STATUS);
|
|
|
|
focusedStatus = (Status) b.getSerializable(Helper.ARG_STATUS);
|
|
|
|
|
|
|
|
remote_instance = b.getString(Helper.ARG_REMOTE_INSTANCE, null);
|
|
|
|
|
|
|
|
}
|
|
|
|
if (focusedStatus == null || currentAccount == null || currentAccount.mastodon_account == null) {
|
|
|
|
if (focusedStatus == null || currentAccount == null || currentAccount.mastodon_account == null) {
|
|
|
|
finish();
|
|
|
|
finish();
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -84,7 +93,11 @@ public class ContextActivity extends BaseActivity {
|
|
|
|
MastodonHelper.loadPPMastodon(binding.profilePicture, currentAccount.mastodon_account);
|
|
|
|
MastodonHelper.loadPPMastodon(binding.profilePicture, currentAccount.mastodon_account);
|
|
|
|
Bundle bundle = new Bundle();
|
|
|
|
Bundle bundle = new Bundle();
|
|
|
|
bundle.putSerializable(Helper.ARG_STATUS, focusedStatus);
|
|
|
|
bundle.putSerializable(Helper.ARG_STATUS, focusedStatus);
|
|
|
|
currentFragment = Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_content_main, new FragmentMastodonContext(), bundle, null, null);
|
|
|
|
bundle.putString(Helper.ARG_REMOTE_INSTANCE, remote_instance);
|
|
|
|
|
|
|
|
FragmentMastodonContext fragmentMastodonContext = new FragmentMastodonContext();
|
|
|
|
|
|
|
|
fragmentMastodonContext.firstMessage = this;
|
|
|
|
|
|
|
|
currentFragment = Helper.addFragment(getSupportFragmentManager(), R.id.nav_host_fragment_content_main, fragmentMastodonContext, bundle, null, null);
|
|
|
|
|
|
|
|
if (remote_instance == null) {
|
|
|
|
StatusesVM timelinesVM = new ViewModelProvider(ContextActivity.this).get(StatusesVM.class);
|
|
|
|
StatusesVM timelinesVM = new ViewModelProvider(ContextActivity.this).get(StatusesVM.class);
|
|
|
|
timelinesVM.getStatus(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, focusedStatus.id).observe(ContextActivity.this, status -> {
|
|
|
|
timelinesVM.getStatus(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, focusedStatus.id).observe(ContextActivity.this, status -> {
|
|
|
|
if (status != null) {
|
|
|
|
if (status != null) {
|
|
|
@ -108,6 +121,7 @@ public class ContextActivity extends BaseActivity {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
@ -126,6 +140,10 @@ public class ContextActivity extends BaseActivity {
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
itemDisplayCW.setIcon(R.drawable.ic_outline_remove_red_eye_24);
|
|
|
|
itemDisplayCW.setIcon(R.drawable.ic_outline_remove_red_eye_24);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
MenuItem action_remote = menu.findItem(R.id.action_remote);
|
|
|
|
|
|
|
|
if (remote_instance != null) {
|
|
|
|
|
|
|
|
action_remote.setVisible(false);
|
|
|
|
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -151,8 +169,52 @@ public class ContextActivity extends BaseActivity {
|
|
|
|
((FragmentMastodonContext) currentFragment).refresh();
|
|
|
|
((FragmentMastodonContext) currentFragment).refresh();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
invalidateOptionsMenu();
|
|
|
|
invalidateOptionsMenu();
|
|
|
|
|
|
|
|
} else if (item.getItemId() == R.id.action_remote) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (firstMessage == null) {
|
|
|
|
|
|
|
|
Toasty.warning(ContextActivity.this, getString(R.string.toast_try_later), Toasty.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (firstMessage.account.acct != null) {
|
|
|
|
|
|
|
|
String[] splitAcct = firstMessage.account.acct.split("@");
|
|
|
|
|
|
|
|
String instance;
|
|
|
|
|
|
|
|
if (splitAcct.length > 1) {
|
|
|
|
|
|
|
|
instance = splitAcct[1];
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
Toasty.info(ContextActivity.this, getString(R.string.toast_on_your_instance), Toasty.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
Log.v(Helper.TAG, "firstMessage.uri: " + firstMessage.uri);
|
|
|
|
|
|
|
|
Log.v(Helper.TAG, "instance: " + instance);
|
|
|
|
|
|
|
|
CrossActionHelper.fetchStatusInRemoteInstance(ContextActivity.this, firstMessage.uri, instance, new CrossActionHelper.Callback() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void federatedStatus(Status status) {
|
|
|
|
|
|
|
|
Log.v(Helper.TAG, ">status: " + status);
|
|
|
|
|
|
|
|
if (status != null) {
|
|
|
|
|
|
|
|
Intent intentContext = new Intent(ContextActivity.this, ContextActivity.class);
|
|
|
|
|
|
|
|
intentContext.putExtra(Helper.ARG_STATUS, status);
|
|
|
|
|
|
|
|
intentContext.putExtra(Helper.ARG_REMOTE_INSTANCE, true);
|
|
|
|
|
|
|
|
intentContext.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
|
|
|
|
|
|
|
startActivity(intentContext);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
Toasty.warning(ContextActivity.this, getString(R.string.toast_error_fetch_message), Toasty.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void federatedAccount(Account account) {
|
|
|
|
|
|
|
|
Log.v(Helper.TAG, ">account: " + account);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
Toasty.warning(ContextActivity.this, getString(R.string.toast_error_fetch_message), Toasty.LENGTH_SHORT).show();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public void get(Status status) {
|
|
|
|
|
|
|
|
firstMessage = status;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|