1package eu.siacs.conversations.ui;
 2
 3import android.content.Context;
 4import android.content.Intent;
 5import android.os.Bundle;
 6import androidx.databinding.DataBindingUtil;
 7import eu.siacs.conversations.R;
 8import eu.siacs.conversations.databinding.ActivityMediaBrowserBinding;
 9import eu.siacs.conversations.entities.Account;
10import eu.siacs.conversations.entities.Contact;
11import eu.siacs.conversations.entities.Conversation;
12import eu.siacs.conversations.ui.adapter.MediaAdapter;
13import eu.siacs.conversations.ui.interfaces.OnMediaLoaded;
14import eu.siacs.conversations.ui.util.Attachment;
15import eu.siacs.conversations.ui.util.GridManager;
16import eu.siacs.conversations.xmpp.Jid;
17import java.util.List;
18
19public class MediaBrowserActivity extends XmppActivity implements OnMediaLoaded {
20
21    private ActivityMediaBrowserBinding binding;
22
23    private MediaAdapter mMediaAdapter;
24
25    @Override
26    protected void onCreate(final Bundle savedInstanceState) {
27        super.onCreate(savedInstanceState);
28        this.binding = DataBindingUtil.setContentView(this, R.layout.activity_media_browser);
29        Activities.setStatusAndNavigationBarColors(this, binding.getRoot());
30        setSupportActionBar(binding.toolbar);
31        configureActionBar(getSupportActionBar());
32        mMediaAdapter = new MediaAdapter(this, R.dimen.media_size);
33        this.binding.media.setAdapter(mMediaAdapter);
34        GridManager.setupLayoutManager(this, this.binding.media, R.dimen.browser_media_size);
35    }
36
37    @Override
38    protected void refreshUiReal() {}
39
40    @Override
41    protected void onBackendConnected() {
42        Intent intent = getIntent();
43        String account = intent == null ? null : intent.getStringExtra("account");
44        String jid = intent == null ? null : intent.getStringExtra("jid");
45        if (account != null && jid != null) {
46            xmppConnectionService.getAttachments(account, Jid.of(jid), 0, this);
47        }
48    }
49
50    public static void launch(Context context, Contact contact) {
51        launch(context, contact.getAccount(), contact.getJid().asBareJid().toString());
52    }
53
54    public static void launch(Context context, Conversation conversation) {
55        launch(context, conversation.getAccount(), conversation.getJid().asBareJid().toString());
56    }
57
58    private static void launch(Context context, Account account, String jid) {
59        final Intent intent = new Intent(context, MediaBrowserActivity.class);
60        intent.putExtra("account", account.getUuid());
61        intent.putExtra("jid", jid);
62        context.startActivity(intent);
63    }
64
65    @Override
66    public void onMediaLoaded(List<Attachment> attachments) {
67        runOnUiThread(
68                () -> {
69                    mMediaAdapter.setAttachments(attachments);
70                });
71    }
72}