That fuck shit the fascists are using
1package org.tm.archive.blocked;
2
3import android.content.Context;
4import android.os.Bundle;
5import android.view.LayoutInflater;
6import android.view.View;
7import android.view.ViewGroup;
8
9import androidx.annotation.NonNull;
10import androidx.annotation.Nullable;
11import androidx.fragment.app.Fragment;
12import androidx.lifecycle.ViewModelProvider;
13import androidx.recyclerview.widget.RecyclerView;
14
15import org.tm.archive.BlockUnblockDialog;
16import org.tm.archive.R;
17import org.tm.archive.recipients.Recipient;
18import org.signal.core.util.concurrent.LifecycleDisposable;
19
20public class BlockedUsersFragment extends Fragment {
21
22 private BlockedUsersViewModel viewModel;
23 private Listener listener;
24
25 private final LifecycleDisposable lifecycleDisposable = new LifecycleDisposable();
26
27 @Override
28 public void onAttach(@NonNull Context context) {
29 super.onAttach(context);
30
31 if (context instanceof Listener) {
32 listener = (Listener) context;
33 } else {
34 throw new ClassCastException("Expected context to implement Listener");
35 }
36 }
37
38 @Override
39 public void onDetach() {
40 super.onDetach();
41
42 listener = null;
43 }
44
45 @Override
46 public @Nullable View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
47 return inflater.inflate(R.layout.blocked_users_fragment, container, false);
48 }
49
50 @Override
51 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
52 View addUser = view.findViewById(R.id.add_blocked_user_touch_target);
53 RecyclerView recycler = view.findViewById(R.id.blocked_users_recycler);
54 View empty = view.findViewById(R.id.no_blocked_users);
55 BlockedUsersAdapter adapter = new BlockedUsersAdapter(this::handleRecipientClicked);
56
57 recycler.setAdapter(adapter);
58
59 addUser.setOnClickListener(unused -> {
60 if (listener != null) {
61 listener.handleAddUserToBlockedList();
62 }
63 });
64
65 lifecycleDisposable.bindTo(getViewLifecycleOwner());
66 viewModel = new ViewModelProvider(requireActivity()).get(BlockedUsersViewModel.class);
67 lifecycleDisposable.add(
68 viewModel.getRecipients().subscribe(list -> {
69 if (list.isEmpty()) {
70 empty.setVisibility(View.VISIBLE);
71 } else {
72 empty.setVisibility(View.GONE);
73 }
74
75 adapter.submitList(list);
76 })
77 );
78 }
79
80 private void handleRecipientClicked(@NonNull Recipient recipient) {
81 BlockUnblockDialog.showUnblockFor(requireContext(), getViewLifecycleOwner().getLifecycle(), recipient, () -> {
82 viewModel.unblock(recipient.getId());
83 });
84 }
85
86 interface Listener {
87 void handleAddUserToBlockedList();
88 }
89}