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