ShareViaAccountActivity.java

 1package eu.siacs.conversations.ui;
 2
 3import android.os.Bundle;
 4import android.widget.ListView;
 5
 6import java.util.ArrayList;
 7import java.util.List;
 8
 9import eu.siacs.conversations.R;
10import eu.siacs.conversations.entities.Account;
11import eu.siacs.conversations.entities.Conversation;
12import eu.siacs.conversations.ui.adapter.AccountAdapter;
13import eu.siacs.conversations.xmpp.Jid;
14
15public class ShareViaAccountActivity extends XmppActivity {
16    public static final String EXTRA_CONTACT = "contact";
17    public static final String EXTRA_BODY = "body";
18
19    protected final List<Account> accountList = new ArrayList<>();
20    protected ListView accountListView;
21    protected AccountAdapter mAccountAdapter;
22
23    @Override
24    protected void refreshUiReal() {
25        synchronized (this.accountList) {
26            accountList.clear();
27            accountList.addAll(xmppConnectionService.getAccounts());
28        }
29        mAccountAdapter.notifyDataSetChanged();
30    }
31
32    @Override
33    protected void onCreate(Bundle savedInstanceState) {
34        super.onCreate(savedInstanceState);
35
36        setContentView(R.layout.activity_manage_accounts);
37        setSupportActionBar(findViewById(R.id.toolbar));
38        configureActionBar(getSupportActionBar());
39        accountListView = findViewById(R.id.account_list);
40        this.mAccountAdapter = new AccountAdapter(this, accountList, false);
41        accountListView.setAdapter(this.mAccountAdapter);
42        accountListView.setOnItemClickListener((arg0, view, position, arg3) -> {
43            final Account account = accountList.get(position);
44            final String body = getIntent().getStringExtra(EXTRA_BODY);
45
46            try {
47                final Jid contact = Jid.of(getIntent().getStringExtra(EXTRA_CONTACT));
48                final Conversation conversation = xmppConnectionService.findOrCreateConversation(
49                        account, contact, false, false);
50                switchToConversation(conversation, body);
51            } catch (IllegalArgumentException e) {
52                // ignore error
53            }
54
55            finish();
56        });
57    }
58
59    @Override
60    protected void onBackendConnected() {
61        final int numAccounts = xmppConnectionService.getAccounts().size();
62
63        if (numAccounts == 1) {
64            final String body = getIntent().getStringExtra(EXTRA_BODY);
65            final Account account = xmppConnectionService.getAccounts().get(0);
66
67            try {
68                final Jid contact = Jid.of(getIntent().getStringExtra(EXTRA_CONTACT));
69                final Conversation conversation = xmppConnectionService.findOrCreateConversation(
70                        account, contact, false, false);
71                switchToConversation(conversation, body);
72            } catch (IllegalArgumentException e) {
73                // ignore error
74            }
75
76            finish();
77        } else {
78            refreshUiReal();
79        }
80    }
81}