EnterNameActivity.java

 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}