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