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(final 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}