1package eu.siacs.conversations.ui;
2
3import android.content.Intent;
4import android.os.Bundle;
5import android.view.View;
6
7import androidx.appcompat.widget.Toolbar;
8import androidx.databinding.DataBindingUtil;
9
10import eu.siacs.conversations.R;
11import eu.siacs.conversations.databinding.ActivityEnterNameBinding;
12import eu.siacs.conversations.entities.Account;
13import eu.siacs.conversations.services.AbstractQuickConversationsService;
14import eu.siacs.conversations.services.XmppConnectionService;
15import eu.siacs.conversations.utils.AccountUtils;
16
17import java.util.concurrent.atomic.AtomicBoolean;
18
19public class EnterNameActivity extends XmppActivity
20 implements XmppConnectionService.OnAccountUpdate {
21
22 private ActivityEnterNameBinding binding;
23
24 private Account account;
25
26 private final AtomicBoolean setNick = new AtomicBoolean(false);
27
28 @Override
29 protected void onCreate(final Bundle savedInstanceState) {
30 super.onCreate(savedInstanceState);
31 this.binding = DataBindingUtil.setContentView(this, R.layout.activity_enter_name);
32 setSupportActionBar((Toolbar) this.binding.toolbar);
33 this.binding.next.setOnClickListener(this::next);
34 this.setNick.set(
35 savedInstanceState != null && savedInstanceState.getBoolean("set_nick", false));
36 }
37
38 private void next(final View view) {
39 if (account == null) {
40 return;
41 }
42 final String name = this.binding.name.getText().toString().trim();
43 account.setDisplayName(name);
44 xmppConnectionService.publishDisplayName(account);
45 final Intent intent;
46 if (AbstractQuickConversationsService.isQuicksyPlayStore()) {
47 intent = new Intent(getApplicationContext(), StartConversationActivity.class);
48 intent.putExtra("init", true);
49 intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString());
50 } else {
51 intent = new Intent(this, PublishProfilePictureActivity.class);
52 intent.putExtra("setup", true);
53 }
54 intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString());
55 startActivity(intent);
56 finish();
57 }
58
59 @Override
60 public void onSaveInstanceState(Bundle savedInstanceState) {
61 savedInstanceState.putBoolean("set_nick", this.setNick.get());
62 super.onSaveInstanceState(savedInstanceState);
63 }
64
65 @Override
66 protected void refreshUiReal() {
67 checkSuggestPreviousNick();
68 }
69
70 @Override
71 void onBackendConnected() {
72 this.account = AccountUtils.getFirst(xmppConnectionService);
73 checkSuggestPreviousNick();
74 }
75
76 private void checkSuggestPreviousNick() {
77 final String displayName = this.account == null ? null : this.account.getDisplayName();
78 if (displayName != null) {
79 if (setNick.compareAndSet(false, true) && this.binding.name.getText().length() == 0) {
80 this.binding.name.getText().append(displayName);
81 }
82 }
83 }
84
85 @Override
86 public void onAccountUpdate() {
87 refreshUi();
88 }
89}