1package eu.siacs.conversations.ui;
 2
 3import android.content.Intent;
 4import android.net.Uri;
 5import android.os.Bundle;
 6import android.widget.Toast;
 7import androidx.databinding.DataBindingUtil;
 8import eu.siacs.conversations.R;
 9import eu.siacs.conversations.databinding.ActivityManageAccountsBinding;
10import eu.siacs.conversations.entities.Account;
11import eu.siacs.conversations.ui.adapter.AccountAdapter;
12import java.util.ArrayList;
13import java.util.List;
14
15public class ChooseAccountForProfilePictureActivity extends XmppActivity {
16
17    protected final List<Account> accountList = new ArrayList<>();
18    protected AccountAdapter mAccountAdapter;
19
20    @Override
21    protected void refreshUiReal() {
22        loadEnabledAccounts();
23        mAccountAdapter.notifyDataSetChanged();
24    }
25
26    @Override
27    protected void onCreate(final Bundle savedInstanceState) {
28        super.onCreate(savedInstanceState);
29        final ActivityManageAccountsBinding binding =
30                DataBindingUtil.setContentView(this, R.layout.activity_manage_accounts);
31        Activities.setStatusAndNavigationBarColors(this, binding.getRoot());
32        setSupportActionBar(binding.toolbar);
33        configureActionBar(getSupportActionBar(), false);
34        this.mAccountAdapter = new AccountAdapter(this, accountList, false);
35        binding.accountList.setAdapter(this.mAccountAdapter);
36        binding.accountList.setOnItemClickListener(
37                (arg0, view, position, arg3) -> {
38                    final Account account = accountList.get(position);
39                    goToProfilePictureActivity(account);
40                });
41    }
42
43    @Override
44    public void onStart() {
45        super.onStart();
46    }
47
48    @Override
49    protected void onBackendConnected() {
50        loadEnabledAccounts();
51        if (accountList.size() == 1) {
52            goToProfilePictureActivity(accountList.get(0));
53            return;
54        }
55        mAccountAdapter.notifyDataSetChanged();
56    }
57
58    private void loadEnabledAccounts() {
59        accountList.clear();
60        for (Account account : xmppConnectionService.getAccounts()) {
61            if (account.isEnabled()) {
62                accountList.add(account);
63            }
64        }
65    }
66
67    private void goToProfilePictureActivity(final Account account) {
68        final Intent startIntent = getIntent();
69        final Uri uri = startIntent == null ? null : startIntent.getData();
70        if (uri != null) {
71            Intent intent = new Intent(this, PublishProfilePictureActivity.class);
72            intent.setAction(Intent.ACTION_ATTACH_DATA);
73            intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toString());
74            intent.setData(uri);
75            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
76            try {
77                startActivity(intent);
78            } catch (SecurityException e) {
79                Toast.makeText(
80                                this,
81                                R.string.sharing_application_not_grant_permission,
82                                Toast.LENGTH_SHORT)
83                        .show();
84                return;
85            }
86        }
87        finish();
88    }
89}