mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-10-31 03:25:34 +00:00 
			
		
		
		
	Allow toggling approval requirement in group
This commit is contained in:
		
							parent
							
								
									10c6902c83
								
							
						
					
					
						commit
						17709c176c
					
				| @ -94,41 +94,6 @@ public class DirectMessageSettingsFragment extends Fragment implements ConfirmDi | ||||
|         viewModel = new ViewModelProvider(this).get(DirectSettingsViewModel.class); | ||||
|         viewModel.setViewer(inboxViewModel.getViewer()); | ||||
|         viewModel.setThread(first.get()); | ||||
|         // basicClickListener = v -> { | ||||
|         //     final Object tag = v.getTag(); | ||||
|         //     if (tag instanceof ProfileModel) { | ||||
|         //         ProfileModel model = (ProfileModel) tag; | ||||
|         //         final Bundle bundle = new Bundle(); | ||||
|         //         bundle.putString("username", "@" + model.getUsername()); | ||||
|         //         NavHostFragment.findNavController(this).navigate(R.id.action_global_profileFragment, bundle); | ||||
|         //     } | ||||
|         // }; | ||||
|         // | ||||
|         // clickListener = v -> { | ||||
|         //     final Object tag = v.getTag(); | ||||
|         //     if (tag instanceof ProfileModel) { | ||||
|         //         ProfileModel model = (ProfileModel) tag; | ||||
|         //         final Context context = getContext(); | ||||
|         //         if (context == null) return; | ||||
|         //         final ArrayAdapter<String> adapter = new ArrayAdapter<>(context, android.R.layout.simple_list_item_1, new String[]{ | ||||
|         //                 getString(R.string.open_profile), | ||||
|         //                 getString(R.string.dms_action_kick), | ||||
|         //         }); | ||||
|         //         final DialogInterface.OnClickListener clickListener = (d, w) -> { | ||||
|         //             if (w == 0) { | ||||
|         //                 final Bundle bundle = new Bundle(); | ||||
|         //                 bundle.putString("username", "@" + model.getUsername()); | ||||
|         //                 NavHostFragment.findNavController(this).navigate(R.id.action_global_profileFragment, bundle); | ||||
|         //             } else if (w == 1) { | ||||
|         //                 new ChangeSettings(titleText.getText().toString()).execute("remove_users", model.getId()); | ||||
|         //                 onRefresh(); | ||||
|         //             } | ||||
|         //         }; | ||||
|         //         new AlertDialog.Builder(context) | ||||
|         //                 .setAdapter(adapter, clickListener) | ||||
|         //                 .show(); | ||||
|         //     } | ||||
|         // }; | ||||
|     } | ||||
| 
 | ||||
|     @NonNull | ||||
| @ -327,7 +292,8 @@ public class DirectMessageSettingsFragment extends Fragment implements ConfirmDi | ||||
|         binding.approvalRequiredLabel.setVisibility(View.VISIBLE); | ||||
|         binding.approvalRequiredLabel.setOnClickListener(v -> binding.approvalRequired.toggle()); | ||||
|         binding.approvalRequired.setOnCheckedChangeListener((buttonView, isChecked) -> { | ||||
| 
 | ||||
|             final LiveData<Resource<Object>> resourceLiveData = isChecked ? viewModel.approvalRequired() : viewModel.approvalNotRequired(); | ||||
|             handleSwitchChangeResource(resourceLiveData, buttonView); | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -112,4 +112,19 @@ public interface DirectMessagesRepository { | ||||
|     @POST("/api/v1/direct_v2/threads/{threadId}/deny_participant_requests/") | ||||
|     Call<DirectThreadDetailsChangeResponse> declineParticipantRequests(@Path("threadId") String threadId, | ||||
|                                                                        @FieldMap final Map<String, String> form); | ||||
| 
 | ||||
|     @FormUrlEncoded | ||||
|     @POST("/api/v1/direct_v2/threads/{threadId}/approval_required_for_new_members/") | ||||
|     Call<DirectThreadDetailsChangeResponse> approvalRequired(@Path("threadId") String threadId, | ||||
|                                                              @FieldMap final Map<String, String> form); | ||||
| 
 | ||||
|     @FormUrlEncoded | ||||
|     @POST("/api/v1/direct_v2/threads/{threadId}/approval_not_required_for_new_members/") | ||||
|     Call<DirectThreadDetailsChangeResponse> approvalNotRequired(@Path("threadId") String threadId, | ||||
|                                                                 @FieldMap final Map<String, String> form); | ||||
| 
 | ||||
|     @FormUrlEncoded | ||||
|     @POST("/api/v1/direct_v2/threads/{threadId}/leave/") | ||||
|     Call<DirectThreadDetailsChangeResponse> leave(@Path("threadId") String threadId, | ||||
|                                                   @FieldMap final Map<String, String> form); | ||||
| } | ||||
|  | ||||
| @ -41,7 +41,7 @@ public class DirectThread implements Serializable { | ||||
|     private final boolean isSpam; | ||||
|     private final DirectItem lastPermanentItem; | ||||
|     private final DirectThreadDirectStory directStory; | ||||
|     private final boolean approvalRequiredForNewMembers; | ||||
|     private boolean approvalRequiredForNewMembers; | ||||
| 
 | ||||
|     public DirectThread(final String threadId, | ||||
|                         final String threadV2Id, | ||||
| @ -245,6 +245,10 @@ public class DirectThread implements Serializable { | ||||
|         return approvalRequiredForNewMembers; | ||||
|     } | ||||
| 
 | ||||
|     public void setApprovalRequiredForNewMembers(final boolean approvalRequiredForNewMembers) { | ||||
|         this.approvalRequiredForNewMembers = approvalRequiredForNewMembers; | ||||
|     } | ||||
| 
 | ||||
|     @Nullable | ||||
|     public DirectItem getFirstDirectItem() { | ||||
|         DirectItem firstItem = null; | ||||
|  | ||||
| @ -508,6 +508,36 @@ public class DirectSettingsViewModel extends AndroidViewModel { | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     public LiveData<Resource<Object>> approvalRequired() { | ||||
|         final MutableLiveData<Resource<Object>> data = new MutableLiveData<>(); | ||||
|         data.postValue(Resource.loading(null)); | ||||
|         if (thread.isApprovalRequiredForNewMembers()) { | ||||
|             data.postValue(Resource.success(new Object())); | ||||
|             return data; | ||||
|         } | ||||
|         final Call<DirectThreadDetailsChangeResponse> request = directMessagesService.approvalRequired(thread.getThreadId()); | ||||
|         handleDetailsChangeRequest(data, request, () -> { | ||||
|             thread.setApprovalRequiredForNewMembers(true); | ||||
|             approvalRequiredToJoin.postValue(true); | ||||
|         }); | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     public LiveData<Resource<Object>> approvalNotRequired() { | ||||
|         final MutableLiveData<Resource<Object>> data = new MutableLiveData<>(); | ||||
|         data.postValue(Resource.loading(null)); | ||||
|         if (!thread.isApprovalRequiredForNewMembers()) { | ||||
|             data.postValue(Resource.success(new Object())); | ||||
|             return data; | ||||
|         } | ||||
|         final Call<DirectThreadDetailsChangeResponse> request = directMessagesService.approvalNotRequired(thread.getThreadId()); | ||||
|         handleDetailsChangeRequest(data, request, () -> { | ||||
|             thread.setApprovalRequiredForNewMembers(false); | ||||
|             approvalRequiredToJoin.postValue(false); | ||||
|         }); | ||||
|         return data; | ||||
|     } | ||||
| 
 | ||||
|     private interface OnSuccessAction { | ||||
|         void onSuccess(); | ||||
|     } | ||||
|  | ||||
| @ -377,4 +377,28 @@ public class DirectMessagesService extends BaseService { | ||||
|         ); | ||||
|         return repository.declineParticipantRequests(threadId, form); | ||||
|     } | ||||
| 
 | ||||
|     public Call<DirectThreadDetailsChangeResponse> approvalRequired(@NonNull final String threadId) { | ||||
|         final ImmutableMap<String, String> form = ImmutableMap.of( | ||||
|                 "_csrftoken", csrfToken, | ||||
|                 "_uuid", deviceUuid | ||||
|         ); | ||||
|         return repository.approvalRequired(threadId, form); | ||||
|     } | ||||
| 
 | ||||
|     public Call<DirectThreadDetailsChangeResponse> approvalNotRequired(@NonNull final String threadId) { | ||||
|         final ImmutableMap<String, String> form = ImmutableMap.of( | ||||
|                 "_csrftoken", csrfToken, | ||||
|                 "_uuid", deviceUuid | ||||
|         ); | ||||
|         return repository.approvalNotRequired(threadId, form); | ||||
|     } | ||||
| 
 | ||||
|     public Call<DirectThreadDetailsChangeResponse> leave(@NonNull final String threadId) { | ||||
|         final ImmutableMap<String, String> form = ImmutableMap.of( | ||||
|                 "_csrftoken", csrfToken, | ||||
|                 "_uuid", deviceUuid | ||||
|         ); | ||||
|         return repository.leave(threadId, form); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user