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 onStart() {
61 super.onStart();
62 final int theme = findTheme();
63 if (this.mTheme != theme) {
64 recreate();
65 }
66 }
67
68 @Override
69 void onBackendConnected() {
70 final int numAccounts = xmppConnectionService.getAccounts().size();
71
72 if (numAccounts == 1) {
73 final String body = getIntent().getStringExtra(EXTRA_BODY);
74 final Account account = xmppConnectionService.getAccounts().get(0);
75
76 try {
77 final Jid contact = Jid.of(getIntent().getStringExtra(EXTRA_CONTACT));
78 final Conversation conversation = xmppConnectionService.findOrCreateConversation(
79 account, contact, false, false);
80 switchToConversation(conversation, body);
81 } catch (IllegalArgumentException e) {
82 // ignore error
83 }
84
85 finish();
86 } else {
87 refreshUiReal();
88 }
89 }
90}