package org.mian.gitnex.activities; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import java.util.List; import java.util.Objects; import org.gitnex.tea4j.v2.models.InlineResponse2001; import org.gitnex.tea4j.v2.models.User; import org.mian.gitnex.R; import org.mian.gitnex.adapters.CollaboratorSearchAdapter; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.databinding.ActivityAddCollaboratorToRepositoryBinding; import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.contexts.RepositoryContext; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; /** * @author M M Arif */ public class AddCollaboratorToRepositoryActivity extends BaseActivity { private ActivityAddCollaboratorToRepositoryBinding activityAddCollaboratorToRepositoryBinding; private View.OnClickListener onClickListener; private RepositoryContext repository; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); activityAddCollaboratorToRepositoryBinding = ActivityAddCollaboratorToRepositoryBinding.inflate(getLayoutInflater()); setContentView(activityAddCollaboratorToRepositoryBinding.getRoot()); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); repository = RepositoryContext.fromIntent(getIntent()); activityAddCollaboratorToRepositoryBinding.addCollaboratorSearch.requestFocus(); assert imm != null; imm.showSoftInput( activityAddCollaboratorToRepositoryBinding.addCollaboratorSearch, InputMethodManager.SHOW_IMPLICIT); initCloseListener(); activityAddCollaboratorToRepositoryBinding.close.setOnClickListener(onClickListener); activityAddCollaboratorToRepositoryBinding.addCollaboratorSearch.setOnEditorActionListener( (v, actionId, event) -> { if (actionId == EditorInfo.IME_ACTION_SEND) { if (!Objects.requireNonNull( activityAddCollaboratorToRepositoryBinding .addCollaboratorSearch.getText()) .toString() .equals("")) { activityAddCollaboratorToRepositoryBinding.progressBar.setVisibility( View.VISIBLE); loadUserSearchList( activityAddCollaboratorToRepositoryBinding .addCollaboratorSearch .getText() .toString()); } } return false; }); } public void loadUserSearchList(String searchKeyword) { Call call = RetrofitClient.getApiInterface(ctx).userSearch(searchKeyword, null, 1, 10); call.enqueue( new Callback<>() { @Override public void onResponse( @NonNull Call call, @NonNull Response response) { activityAddCollaboratorToRepositoryBinding.progressBar.setVisibility( View.GONE); if (response.isSuccessful()) { assert response.body() != null; getUsersList(response.body().getData(), ctx); } else { Toasty.error(ctx, ctx.getString(R.string.genericError)); } } @Override public void onFailure( @NonNull Call call, @NonNull Throwable t) { Toasty.error(ctx, ctx.getString(R.string.genericServerResponseError)); } }); } private void getUsersList(List dataList, Context context) { CollaboratorSearchAdapter adapter = new CollaboratorSearchAdapter(dataList, context, repository); activityAddCollaboratorToRepositoryBinding.recyclerViewUserSearch.setHasFixedSize(true); activityAddCollaboratorToRepositoryBinding.recyclerViewUserSearch.setLayoutManager( new LinearLayoutManager(ctx)); activityAddCollaboratorToRepositoryBinding.progressBar.setVisibility(View.VISIBLE); if (adapter.getItemCount() > 0) { activityAddCollaboratorToRepositoryBinding.recyclerViewUserSearch.setAdapter(adapter); activityAddCollaboratorToRepositoryBinding.noData.setVisibility(View.GONE); } else { activityAddCollaboratorToRepositoryBinding.noData.setVisibility(View.VISIBLE); } activityAddCollaboratorToRepositoryBinding.progressBar.setVisibility(View.GONE); } private void initCloseListener() { onClickListener = view -> finish(); } @Override public void onResume() { super.onResume(); repository.checkAccountSwitch(this); } }