EnterNameActivity.java

 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}