453ca7c0ed
Unignored gradle.properties since androidX requires additions there See also https://developer.android.com/jetpack/androidx/migrate
152 lines
5.2 KiB
Java
152 lines
5.2 KiB
Java
package eu.siacs.conversations.ui;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Intent;
|
|
import androidx.databinding.DataBindingUtil;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.Point;
|
|
import android.os.Bundle;
|
|
import androidx.appcompat.widget.Toolbar;
|
|
import android.util.Log;
|
|
import android.view.Menu;
|
|
import android.view.MenuItem;
|
|
import android.view.View;
|
|
import android.widget.Toast;
|
|
|
|
import com.google.common.base.Strings;
|
|
|
|
import eu.siacs.conversations.Config;
|
|
import eu.siacs.conversations.R;
|
|
import eu.siacs.conversations.databinding.ActivityEasyInviteBinding;
|
|
import eu.siacs.conversations.entities.Account;
|
|
import eu.siacs.conversations.services.BarcodeProvider;
|
|
import eu.siacs.conversations.utils.EasyOnboardingInvite;
|
|
import eu.siacs.conversations.xmpp.Jid;
|
|
|
|
public class EasyOnboardingInviteActivity extends XmppActivity implements EasyOnboardingInvite.OnInviteRequested {
|
|
|
|
private ActivityEasyInviteBinding binding;
|
|
|
|
private EasyOnboardingInvite easyOnboardingInvite;
|
|
|
|
|
|
@Override
|
|
public void onCreate(final Bundle bundle) {
|
|
super.onCreate(bundle);
|
|
this.binding = DataBindingUtil.setContentView(this, R.layout.activity_easy_invite);
|
|
setSupportActionBar((Toolbar) binding.toolbar);
|
|
configureActionBar(getSupportActionBar(), true);
|
|
this.binding.shareButton.setOnClickListener(v -> share());
|
|
if (bundle != null && bundle.containsKey("invite")) {
|
|
this.easyOnboardingInvite = bundle.getParcelable("invite");
|
|
if (this.easyOnboardingInvite != null) {
|
|
showInvite(this.easyOnboardingInvite);
|
|
return;
|
|
}
|
|
}
|
|
this.showLoading();
|
|
}
|
|
|
|
@Override
|
|
public boolean onCreateOptionsMenu(Menu menu) {
|
|
getMenuInflater().inflate(R.menu.easy_onboarding_invite, menu);
|
|
final MenuItem share = menu.findItem(R.id.action_share);
|
|
share.setVisible(easyOnboardingInvite != null);
|
|
return super.onCreateOptionsMenu(menu);
|
|
}
|
|
|
|
public boolean onOptionsItemSelected(MenuItem menuItem) {
|
|
if (menuItem.getItemId() == R.id.action_share) {
|
|
share();
|
|
return true;
|
|
} else {
|
|
return super.onOptionsItemSelected(menuItem);
|
|
}
|
|
}
|
|
|
|
private void share() {
|
|
final String shareText = getString(
|
|
R.string.easy_invite_share_text,
|
|
easyOnboardingInvite.getDomain(),
|
|
easyOnboardingInvite.getShareableLink()
|
|
);
|
|
final Intent sendIntent = new Intent();
|
|
sendIntent.setAction(Intent.ACTION_SEND);
|
|
sendIntent.putExtra(Intent.EXTRA_TEXT, shareText);
|
|
sendIntent.setType("text/plain");
|
|
startActivity(Intent.createChooser(sendIntent, getString(R.string.share_invite_with)));
|
|
}
|
|
|
|
@Override
|
|
protected void refreshUiReal() {
|
|
invalidateOptionsMenu();
|
|
if (easyOnboardingInvite != null) {
|
|
showInvite(easyOnboardingInvite);
|
|
} else {
|
|
showLoading();
|
|
}
|
|
}
|
|
|
|
private void showLoading() {
|
|
this.binding.inProgress.setVisibility(View.VISIBLE);
|
|
this.binding.invite.setVisibility(View.GONE);
|
|
}
|
|
|
|
private void showInvite(final EasyOnboardingInvite invite) {
|
|
this.binding.inProgress.setVisibility(View.GONE);
|
|
this.binding.invite.setVisibility(View.VISIBLE);
|
|
this.binding.tapToShare.setText(getString(R.string.tap_share_button_send_invite, invite.getDomain()));
|
|
final Point size = new Point();
|
|
getWindowManager().getDefaultDisplay().getSize(size);
|
|
final int width = Math.min(size.x, size.y);
|
|
final Bitmap bitmap = BarcodeProvider.create2dBarcodeBitmap(invite.getShareableLink(), width);
|
|
binding.qrCode.setImageBitmap(bitmap);
|
|
}
|
|
|
|
@Override
|
|
public void onSaveInstanceState(Bundle bundle) {
|
|
super.onSaveInstanceState(bundle);
|
|
if (easyOnboardingInvite != null) {
|
|
bundle.putParcelable("invite", easyOnboardingInvite);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
void onBackendConnected() {
|
|
if (easyOnboardingInvite != null) {
|
|
return;
|
|
}
|
|
final Intent launchIntent = getIntent();
|
|
final String accountExtra = launchIntent.getStringExtra(EXTRA_ACCOUNT);
|
|
final Jid jid = accountExtra == null ? null : Jid.ofEscaped(accountExtra);
|
|
if (jid == null) {
|
|
return;
|
|
}
|
|
final Account account = xmppConnectionService.findAccountByJid(jid);
|
|
xmppConnectionService.requestEasyOnboardingInvite(account, this);
|
|
}
|
|
|
|
public static void launch(final Account account, final Activity context) {
|
|
final Intent intent = new Intent(context, EasyOnboardingInviteActivity.class);
|
|
intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString());
|
|
context.startActivity(intent);
|
|
}
|
|
|
|
@Override
|
|
public void inviteRequested(EasyOnboardingInvite invite) {
|
|
this.easyOnboardingInvite = invite;
|
|
Log.d(Config.LOGTAG, "invite requested");
|
|
refreshUi();
|
|
}
|
|
|
|
@Override
|
|
public void inviteRequestFailed(final String message) {
|
|
runOnUiThread(() -> {
|
|
if (!Strings.isNullOrEmpty(message)) {
|
|
Toast.makeText(this, message, Toast.LENGTH_LONG).show();
|
|
}
|
|
finish();
|
|
});
|
|
}
|
|
}
|