That fuck shit the fascists are using
at master 89 lines 2.8 kB view raw
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}