Messages/src/main/java/org/gcube/portets/user/message_conversations/client/oracle/UserOracle.java

60 lines
1.8 KiB
Java

package org.gcube.portets.user.message_conversations.client.oracle;
import gwt.material.design.addins.client.autocomplete.base.MaterialSuggestionOracle;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import org.gcube.portets.user.message_conversations.client.MessageService;
import org.gcube.portets.user.message_conversations.client.MessageServiceAsync;
import org.gcube.portets.user.message_conversations.shared.CurrUserAndPortalUsersWrapper;
import org.gcube.portets.user.message_conversations.shared.WSUser;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
public class UserOracle extends MaterialSuggestionOracle{
private final MessageServiceAsync convService = GWT.create(MessageService.class);
private List<WSUser> contacts = new LinkedList<>();
public void addContacts(List<WSUser> users) {
contacts.addAll(users);
}
public UserOracle() {
((ServiceDefTarget) convService).setServiceEntryPoint("/delegate/message-conversations");
}
@Override
public void requestSuggestions(Request request, Callback callback) {
Response resp = new Response();
if(contacts.isEmpty()){
callback.onSuggestionsReady(request, resp);
return;
}
String text = request.getQuery();
text = text.toLowerCase();
final List<UserSuggestion> list = new ArrayList<>();
convService.searchUsers(text, new AsyncCallback<ArrayList<WSUser>>() {
@Override
public void onFailure(Throwable arg0) {
GWT.log("error");
callback.onSuggestionsReady(request, resp);
return;
}
@Override
public void onSuccess(ArrayList<WSUser> results) {
for (WSUser contact : results){
list.add(new UserSuggestion(contact));
}
resp.setSuggestions(list);
callback.onSuggestionsReady(request, resp);
}
});
}
}